USB2.0 SOF令牌包
2021-06-22
6970
1
SOF令牌包是最广泛的令牌包,由主机发送。在实机的抓包工具过程,由于和NAK包大量存在,都会在软件配置中不显示。但这并不代表这个SOF令牌包不重要。
SOF令牌不需要像其它令牌一样,具有握手包。因此发送给设备的SOF包并不能保证一定会收到。SOF数据流管理由USB主机发送一个SOF令牌包。SOF数据流管理表示USB帧或者USB微帧的开始。整个数据流管理过程没有数据阶段,所以也不需要USB设备进行握手响应。
- 两个SOF包之间叫做一个帧或者微帧。
- 对于全速和低速传输,每隔1±0.0005ms产生一个SOF令牌包。
- 对于高速USB传输,每隔125us±0.0625us产生一个微帧。而每隔7个微帧,产生一个SOF令牌包。
- USB主机中的根集线器会将SOF包广播给所有的USB设备,所以SOF包不需要包含目标高地址和目标端口信息,因为它面向的是所有设备的。
SOF包的功能
- SOF包由USB主机在USB总线上以广播的形式发出,以防止USB设备进入挂起状态
- 所有的事务必须在一个帧或者微帧内完成,一个事务不能跨越一个帧或者微帧。通过控制帧或者微帧的事务的个数,可以实现USB带宽的控制
- SOF包也用于USB主机和USB设备之间进行时钟同步、调整
SOF令牌格式
SOF令牌包包格式由8位的包标识字段PID,11位的帧号字段和5位的循环字段CRC共24位3字节组成。
- 包标识字段PID:定义了数据传输方向为USB主机到USB设备。
- 帧号字段:指明了USB传输的帧号,其11位。
- CRC字段:用于帧号字段进行循环冗余校验。
SOF令牌包的PID低4位为0101,所以高4位的补码为1010,所以它的PID为0xA5.
PID | 含义 | 说明 |
---|---|---|
0101 | 令牌SOF | 此时作为一个帧或者小帧的开始信息 |
SOF的发送周期
对于全速总线和高速总线,主机分别以每 1.00ms±0.0005ms 一次和每125μs±0.0625μs一次的额定速率发出帧开始SOF)包。
SOF令牌包示例
SOF令牌包波形图
我们对Frame为940的包进行显示波形:
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936