当前位置:   article > 正文

【USB笔记】USB 2.0 包格式 数据包Data Packets_usb2.0输出的数据包

usb2.0输出的数据包

USB笔记 USB2.0 包格式Packet Formats 数据包Data Packets

说明

介绍的是USB 2.0协议中包格式(Packet Formats)的数据包(Data Packets)。

介绍

数据包(data packet)由一个PID、一个包含零个或多个字节数据的数据字段(data field)和一个CRC组成。有四种类型的数据包,由不同的PID标识:DATA0、DATA1、DATA2和MDATA。

这些PID标识共有以下三种使用情况:

  1. 数据切换同步(data toggle synchronization)

在用于支持数据切换同步(data toggle synchronization)时使用两个数据包PID(data PIDs):DATA0和DATA1。

  1. 数据PID排序(data PID sequencing)

在用于高带宽高速等时端点(high bandwidth high-speed isochronous endpoints)的数据PID排序(data PID sequencing)中,使用了全部四个数据PID(data PIDs):DATA0、DATA1、DATA2和MDATA。

  1. 拆分事务(split transactions)

在拆分事务(split transactions)中使用了三个数据PID(data PIDs):MDATA、DATA0、DATA1。

数据包(data packet)的包格式(Packet Formats)如图所示:
Data Packet Format

数据必须始终以整数字节数发送。数据CRC(data CRC)只对数据包中的数据字段(data field)进行计算,不包括PID,PID有自己的校验字段。

低速设备(low-speed devices)允许的最大数据有效负载大小为8个字节(bytes)。全速设备(full-speed devices)的最大数据有效负载大小为1023个字节(bytes)。高速设备(high-speed devices)的最大数据有效负载大小为1024个字节(bytes)。

下面进行介绍。

DATA0

偶数数据包PID(Data packet PID even),用于数据切换(data toggle)或者数据PID排序(data PID sequencing)。

TypeValue
PID TypeData
PID NameDATA0
PID<3:0>0011B
PID value<7:0>0xC3
Transfer types used incontrol, bulk, interrupt, isochronous
Transaction TypeSETUP, OUT, IN
Sourcehost, device
Bus Speedhigh, full, low
DescriptionData packet PID even
DATA0在事务中的位置

下面看下DATA0在各种事务Transaction中的位置

  1. Bulk Transaction
    Bulk Transaction Format

  2. Control Transaction
    Control SETUP Transaction
    Control SETUP Transaction

Control Read and Write Sequences
Control Read and Write Sequences

  1. Interrupt Transaction
    Interrupt Transaction

  2. Isochronous Transaction
    Isochronous Transaction

DATA0的应用
  1. 数据切换同步(data toggle synchronization)
    数据切换同步(data toggle synchronization)用于以保证数据发送器和接收器在多个事务中的数据序列同步。通过使用DATA0和DATA1 PID以及数据发送器和接收器的单独数据切换序列位来实现同步。
    当主机在开机或连接时配置设备时,除了高速高带宽等时端点之外,所有主机和设备都将切换数据序列位设置为DATA0。 数据发送器仅在收到对数据包的ACK之后才切换其序列位。 接收器仅在接收到有效数据包且数据包的数据PID与其序列位的当前值匹配时才切换其序列位。 如下图所示:
    data toggle

  2. 数据PID排序(data PID sequencing)
    数据PID排序(data PID sequencing)用于为数据接收器提供可以检测每个微帧(microframe)的一个或多个丢失/损坏的包。高带宽等时端点(High bandwidth isochronous endpoints)支持数据PID排序(data PID sequencing)。DATA0在数据PID排序(data PID sequencing)的使用参照下面DATA2部分或者可以参考数据PID排序data PID sequencing

DATA1

奇数数据包PID(Data packet PID odd),用于数据切换(data toggle)或者数据PID排序(data PID sequencing)。

TypeValue
PID TypeData
PID NameDATA1
PID<3:0>1011B
PID value<7:0>0x4B
Transfer types used incontrol, bulk, interrupt, isochronous
Transaction TypeOUT, IN
Sourcehost, device
Bus Speedhigh, full, low
DescriptionData packet PID odd

DATA1在各种事务Transaction中的位置和应用参照DATA0。

DATA2

在高速高带宽等时事务的微帧中的数据包PID,用于数据PID排序(data PID sequencing)。

TypeValue
PID TypeData
PID NameDATA2
PID<3:0>0111B
PID value<7:0>0x87
Transfer types used inisochronous
Transaction TypeOUT, IN
Sourcehost, device
Bus Speedhigh
DescriptionData packet PID high-speed, high bandwidth isochronous transaction in a microframe

DATA2在High Bandwidth Isochronous Endpoints中的使用:

  1. Data Phase PID Sequence for Isochronous IN High Bandwidth Endpoints

高速、高带宽等时IN端点(high-speed, high bandwidth isochronous IN endpoint)的数据PID排序(data PID sequencing),对微帧(microframe)中每个事务(transaction)的数据包(data packet)采用DATA2、DATA1、DATA0 PID的重复序列。

如果每个微帧(microframe)有三个事务,那么第一个事务数据包(transaction data packet)使用DATA2,第二个事务数据包(transaction data packet)使用DATA1,第三个事务数据包(transaction data packet)使用DATA0。
Data Phase PID Sequence for Isochronous IN High Bandwidth Endpoints

  1. Data Phase PID Sequence for Isochronous OUT High Bandwidth Endpoints

高速、高带宽等时OUT端点(high-speed, high bandwidth isochronous OUT endpoint)的数据PID排序(Data PID sequencing)与IN端点使用的序列不同。

当每个微帧(microframe)有三个事务(transaction)时,主机必须发出两个MDATA事务和一个DATA2用于第三次事务。
Data Phase PID Sequence for Isochronous OUT High Bandwidth Endpoints

MDATA

高速中拆分和高带宽等时事务的数据包PID,用于数据PID排序(data PID sequencing)和拆分事务(split transactions)。

TypeValue
PID TypeData
PID NameMDATA
PID<3:0>1111B
PID value<7:0>0x0F
Transfer types used inisochronous, split transactions
Transaction TypeOUT, IN
Sourcehost, device
Bus Speedhigh
DescriptionData packet PID high-speed for split and high bandwidth isochronous transactions

MDATA在High Bandwidth Isochronous Endpoints中的使用可以参照DATA2。

示例

  1. SETUP
    SETUP

  2. OUT
    OUT

OUT

  1. IN
    IN

参考资料

Universal Serial Bus Specification Revision 2.0

USB Complete, 5th Edition


本文链接:https://blog.csdn.net/u012028275/article/details/113796198

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/293875
推荐阅读
相关标签
  

闽ICP备14008679号