USB3.2协议层
2026-06-01
本文链接为:http://www.usbzh.com/article/detail-1675.html ,欢迎转载,转载请附上本文链接。
USB3使用4种数据包类型
- 链路管理包(Link Management Packets (LMP)) :只在一对链路(一对直接连接的端口)之间传送,主要用于管理这条链路。
- 事务包(Transaction Packets (TP)):在所有的直接连接主机和设备的链路上传送。它们被用于数据包流程控制制,配置设备及集线器等等。事务包没有数据负载。
- 数据包(Data Packets (DP)) :在所有的直接连接主机和设备的链路上传送。
数据包有两部分:数据包头(Data Packet Header (DPH))以及数据包负载(Data Packet Payload (DPP))。 - 等时时戳包(Isochronous Timestamp Packets (ITP)):是在主机到一个或多个设备间的所有活动链路(active links)上的多播(multicast)。
头组成
数据包头为16个字节:
- 1字节的Type
- 11字节
- 2字节头的CRC16
- 2字节的链路控制字Link Control Word

在数据包中的位置
TYPE字节
TYP只用了5位,其值为
| 值B4:B0 | 类型 |
|---|---|
| 00000 | 链路管理包 |
| 00100 | 事务包 |
| 01000 | 数据包头 |
| 01100 | 等时时戳包 |
链路控制字
2字节链路控制字
- 3bit头序号:0~7之间有效
- 3bit reserved
- 3bit集线器深度索引:DF有效时才有效。
- DL延迟,集线器置位表示头包传输可能被延迟。(头部重新发送,链路处于Recovery态等)
- DF推后,只被集线器使用。用于下层设备处于非U0时的转换。
- 5bit crc5
如何理解DEFERRED标志?
当集线器从上行端口处接收到一个头包(非ITP),且该头包本来应该被路由到某下行 口,但此时如果该下行端口正处于低功耗状态(非U0链路状态),则会有如下处理:
- 1.集线器在对应的下行端口的链路上发起UO进入请求,准备把这条链路转换回UO。
- 2.头包的链路控制字被标记为Deferred(如果它尚未被标记为Deferred),设置集 线器深度(HubDepth),并对该已被修改的头包进行重新计算正确的链路控制CRC-5。该已被修改的头包在对应的下行端口上被排队准备传输。
- 3.一个包括集线器深度(HubDepth)以及正确的CRC-5的推后头包(deferred headerpacket)被排队进入该集线器的上行端口的Tx头包缓冲区准备传送给主 机。主机接收到该推后响应(DeferredResponse)后,可以接着调度对其他设 端点的传输事务,而不必等候该链路从低功耗状态返回(性能考虑)。
- 4.头包是数据包头(datapacketheader),则对应的数据包负载被丢弃(discarded)
- 5.下行链路返回UO后,前面被修改了的Deferred头包被发送给设备。设备如果 准备好可以进行数据传输,则返回ERDYTP给主机。而主机收到该ERDYTP后可以重新调度对该设备端点的传输事务。
如何理解DELAYED标志?
头包的传送可以被延退(delayed)。此时,集线器应该将链路控制字(LinkControl Word)的DL位置位(外围设备或者主机可选),并重新计算CRC-5。一些可能导致这一延:
- 1.当头包被重新发送(resent)
- 2.当链路处于Recovery
- 3.当RemoteRxHeaderBufferCreditCount为0
- 4.当TxHeaderBuffer非空。
注意:延退(delayed)位(DL位) 只有在ITP中被设置时才有影响(significance)
本文链接为:http://www.usbzh.com/article/detail-1675.html ,欢迎转载,转载请附上本文链接。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936 USB技术交流3:1031974172
USB3.2超高速协议规范





