+ -

USB 批量/块传输方式

欢迎加入字节流官方QQ群:952873936或联系站长进行技术交流。

USB协议规定了四种传输类型:控制传输、批量传输、同步传输中断传输

批量传输一般用于批量的和非实时的数据传输,通俗的来说就是用于数据量大但对时间要求又不高的场合的一种传输方式,类似用于USB打印机和USB扫描仪等等。

批量传输使用批量传输事务,一次批量传输事务分为三个阶段:令牌包阶段、数据包阶段、握手包阶段。
批量传输分为批量读和批量写,批量读使用批量输入事务,批量写使用批量输出事务。注意:不论输入还是输出都是以主机为参考的。

批量传输数据包

  • 只有全速和高速设备可以使用批量传输,低速模式不支持批量传输。
  • 高速模式固定为512个字节;
    超高速设备数据包最大长度为1024字节。
    全速模式最大包长可在8、16、32、64字节中选择;

如果传输的数据量大于块端点所支持的最大数据包长度,USB主控制器会把该数据按最大数据包长度分为多个批量数据包进行传输,最后一个批量传输长度可以小于或等于最大包长度。

批量输出流程:

批量传输数据流传输包括IN传输和OUT传输,分别对应于数据的读和写,其也分为3个阶段,分别为为令牌阶段、数据段和握手段。
1599920990362

1599921703214

令牌阶段
  • 主机发送BULK令牌包,令牌包中包含设备地址、端点号和数据方向。
数据段
  • 从机如果接收令牌包出错,无响应,让主机等待超时;
  • 从机端点不存在,回送STALL;
  • 从机端点数据未准备好,回送NAK;
  • 从机端点数据准备好,回送数据包。
握手段设备
  • 数据包正确,并有足够的空间保存数据:设备返回ACK握手包或NYET握手包(只有告诉模式才有NYET握手包,它表示本次数据接收成功,但是没有能力接收下一次传输)。
  • 数据包正确,但是没有足够的空间保存数据:设备返回NAK握手包。主机收到NAK,延时一段时间后,再重新进行批量输出事务。
  • 数据包正确,但端点处于挂起状态:设备返回一个STALL握手包。
  • 数据包错误:设备不返回任何握手包,让主机等待超时。

USB批量传输抓包分析

USB批量读数据

由于批量读数据,是设备给主机传输数据,所以是数据阶段是IN事务。
USB批量读数据

USB批量写数据

因为是主机给设备传输数据,所以是数据阶段是OUT事务,如下图。
USB批量写数据

微信公众号
字节流公众号  字节流QQ群:952873936
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!