USB传输的事物拆分和ACK机制
2021-12-03
1817
0
USB的事务拆分
USB每次传输的数据包大小不得超过端点的最大包大小,如果需要传输超过端点的最大包大小,是需要进行事务传输的,即一个事务无法完成的数据长度,会拆分成多个事务,并且提几个事务必须按最大端点大小进行数据传输,最后一个事务按实际剩余数据大小传输。这个我们在USB2.0 事务 一切我们有详细的说明。不过这里我们必须还得再强调一点,就是在数据传输过程中,数据包必须在DATA0和DATA1之间切换,并且状态阶段的数据包必须是DATA1,详情可见 USB数据长度为0的DATA/IN事务.
USB的“ACK”
在USB的传输过程中,我们考虑一种特殊的情况。例如在控制传输状态阶段是IN事务,在这个IN事务中,USB主机会向USB设备返回ACK来指明主机已经收到该数据了。但是由于实际在传输过程中,这个ACK包丢失或者传输错误,导致USB设备未接到该ACK包,但是USB主机会认为自己已经正确无误地完成了这个事务,以继续下一个事务。但是USB设备由于未收到此ACK包因此该事务并未结束。这时USB设备端需要判定下一个事务SETUP包时会需要完成上一个没有完成的事务即默认上一个没有收到的ACK包已经收到,从而结束上一个上一个事务,并正常响应下一个事务传输。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936