IN令牌包的设备端事务响应流程
2022-07-05
1052
0
USB主机发送IN令牌给设备后,用于请求设备的数据包。
USB设备端收到主机发送过来的PID为IN的令牌包后,需要对IN令牌包进行数据校验。
- 如果IN令牌包中的设备地址和端点地址信息有效,并且端点缓冲区中有待发送的数据(端点状态为Valid状态),这时USB设备端的硬件自动使用DTAT0或DATA1的PID令牌包来响应。响应的数据包为DATA0或DATA1的数据格式,内容包括DATA0或DATA1的PID,相应的端点缓冲区的数据,USB硬件计算好的数据包的CRC16校验。
- 如果USB设备收到的IN令牌包中的端点无有效数据或数据端点未工作,则发送NAK或STALL握手包,以表示无数据要发送或端点错误。
USB主机接收到USB设备通过DATA0或DATA1的数据包并且确认无误后,发送ACK 握手包给USB设备。
- 硬件翻转数所包PID(DATA0和DATA1切换)
- 硬件端点置为INVALID(无数据发送,NAK)
- 硬件产生接收中断
- 软件响应接收中断
- 准备下发要发送的数据
- 更新数据长度(如果和上一次的不一致)
- 软件重新置该端点为valid状态。这样当再次接收到IN令牌包后响应发送数据给主机。
IN事务抓包示例
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936