USB2.0 握手包
USB2.0 握手包
2021-11-29
3587
1
握手包跟随在令牌包或者数据包之后,组成一个完整的事务,是对一次事务完成的确认。USB主机或者USB设备会根据事务的完成状态返回相应的握手包。
握手包由8位的PID构成,用于数据传输的末位报告本次数据传输的状态。握手包之后使是整个事务处理的结束信号EOP.
握手包根据PID的不同,可分为:
PID
含义
说明
0010
握手ACK
数据正确接收
1010
握手NAK
数据未正确接收
1110
握手STALL
使用的端点被挂起
0110
握手NYET
接收方没有响应
1100
特殊用途ERR
SPLIT事务中表示出现错误
USB规范定义了以下几个响应:
1 . ACK 握手包当 USB 数据传输的接收方正确接收到数据包时,接收方将返回 ACK 握手包。 ACK 握手包表征了一次正确的数据传输,之后才可以进行下一次事务处理。
2 . NAK 握手包NAK 握手包一般由 USB 功能设备发出。对于IN数据传输,表示 USB 设备没有计划向 USB 主机发送数据;对于 OUT 数据传输,表示 USB 设备无法接收 USB 主机发送的数据。
3 . STALL 握手包STALL 握手包一般由 USB 功能设备发送,表示该 USB 功能设备不支持这个请求,或者无法发送和接收数据。 STALL 握手包分为以下两种情况。
协议 STA LL 握手包:在控制传输中使用。协议 STALL 握手包表明了该 USB 功能设备不支持这个请求协议。功能 STALL 握手包:表明该 USB 功能设备的相应端点已经停止,而无法完成发送数据或者接收数据的操作。
4 . NYET 握手包在 SPLIT 令牌包事务处理中,如果 USB 集线器无法正常处理 SPLIT 请求,则 USB 集线器向 USB 主机返回 NYET 握手包。 NYET 握手包一般只发生在高速数据传输过程中。在USB2.0高速设备OUT事务中使用,它表示设备本次数据成功接收,但是没有足够的空间来接收下一次数据。主机在下一次输出数据时,将先使用PING命令牌包来探测设备是否有足够的空间接收数据,一面不必要的带宽浪费。
5 . ERR 握手包ERR 握手包用于表示总线数据传输发生错误,其一般发生在高速数据传输过程中。其功能是由USB集线器HUB向主机报告挂载其上的低速或全速设备错误。
¥打赏
随手分享,手有余香
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936