USB2.0令牌、事务及传输抓包分析
+ -

USB 高速设备微帧计算及事务构成

2021-10-26 6223 25

从USB2.0规范协议中可以知道,高速设备在1ms内会有8个微帧,所以每个微帧约125us,而一个微帧内可以有多个事务
一个微帧是由起始帧SOF开始的,到下一个起始帧SOF结束或该微帧内的结速帧EOF结束。
USB2.0包Packet的组成
对于一个微帧内的SOF,SYNC和EOF,此为数据链路层的,一般我们关注的是里面的包内容,协议层的东西。

微帧计算

通过抓包工具,我们抓包一个高速设备的数据包。可以看到,在一个大帧即1ms中有8个微帧。其编号为199.0-199.7。
1ms中的8个微帧

而在微帧1922.2和1922.4微帧内有数据通讯事务,其余微帧都事务传输。

这里我们展开1922.4,可以看到该微帧内有2次事务,事务编号分别为89和90,并且该微帧的大部分时间为空闲态。
1922.4中的事务

这里我们对该微帧内的时间进行计算:

 19.517
 0.2
 0.36666
 7.5
 0.39900
+ 0.2333396
--------------
124.21599

这个时间计算大概约为125us

事务构成

一个事务代表一个完整的通讯过程,这个事务一般分为三个阶段:令牌阶段、数据阶段和响应阶段。

  • 令牌阶段:由主机发起,令牌代表着通讯的类型
  • 数据阶段:可选。
  • 响应阶段:该次事务的结果

常见的令牌包括SETUP、IN和OUT令牌。不同的令牌的三个阶段稍有不同,并且响应也有所不同。
事务构成

  • 如对于SETUP令牌发起的SETUP事务,该事务没有数据阶段,并且响应只有ACK,即表示SETUP响应只能成功,否则无响应就是失败。
  • 对于OUT事务,即主机需要向设备端发送数据,如设备不能接收或缓存未准备就绪,设备响应NAK,如果传输的数据不能正确处理,可以响应 STAL,如果传输正确并完成,可响应ACK
  • IN 事务与 OUT 事务类似,不同的是 IN 事务的状态返回是在数据阶段。同步传输的 IN 和 OUT 事务没有响应阶段。

高速设备的批量传输控制传输中, 根据上图 OUT 事务是否成功需要等到响应阶段才知道,如果响应是 NAK,主机在数据阶段发送的内容不会被从机接收,浪费掉了这部分带宽。 为了节约总线带宽, 除了 IN 和 OUT 事务, 高速设备还有 PING 事务,用来查看端点是否准备完毕,如果端点没有准备就绪响应 NYET 状态。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB帧、微帧以及数据传输过程
我们知道USB2.0采用的是NRZI编码格式,USB3.0采用的是8B/10B编码,这些都是处于物理层的概念。今天我们要介绍的是由基于这些硬件编码格式组成的USB最小协议单元-物理层时间基准概念的帧和微帧。这些帧和微帧的组合用于支撑数据链路层数据的传输。帧的时间USB在2.0时代,分为低带设备(1......
USB 高速设备微帧计算及事务构成
从USB2.0规范协议中可以知道,高速设备在1ms内会有8个微帧,所以每个微帧约125us,而一个微帧内可以有多个事务。一个微帧是由起始帧SOF开始的,到下一个起始帧SOF结束或该微帧内的结速帧EOF结束。对于一个微帧内的SOF,SYNC和EOF,此为数据链路层的,一般我们关注的是里面的包内容,协议......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

    您的支持,是我们前进的动力!