USB批量传输如何判断传输结
在USB批量传输中,数据是以最大包长度为单位进行分批发送的。例如最大包长度为64字节,要发送100字节数据,会分两批64字节数据包发送。
为判断一组批量传输是否结束,USB协议规定了以下判断规则:
1. 如果已发送的数据量刚好等于期望发送的数据总量,那么可以断定本轮批量传输结束。
2. 如果收到一个小于最大包长度的短包,那么也可以认为批量传输结束。因为数据已经发完了,最后剩余不到一个最大包长度。
3. 如果收到一个长度为0的空包,也可以断定批量传输结束。空包表示发送端数据已经全部发完。
满足任一上述条件,USB主机控制器就会中止当前的IRP(I/O请求包),并开始处理下一个IRP,即下一次批量传输。
如果收到一个超过最大包长度的非法超长包,那么主机控制器会中止等待此端点的所有批量传输IRP,否则可能导致数据混乱。