USB high-speed SOF

SOF(Start Of Frame),帧起始数据包,USB high-speed、full-speed握手成功,进入数据阶段后,发送出来的第一个 packet。high-speed下,host每隔125μs ±0.0625μs发出一个 SOF,full-speed,每隔1ms ±0.0005ms发出一个SOF。Low speed不会发送SOF,而是使用keep alive达到同样的功能。详见 8.4.3 Start-of-Frame Packets、10.2.3 Frame and Microframe Generation。

SOF

这个波形信号质量一般,但也足够了。

high-speed的 SOF 由 SYNC(32Bits)、PID(8Bits)、MicroFrameNumber(14Bits)、CRC5(5Bits)和 EOP(40Bits)组成。SOF作为一种 host与 device之间的帧同步机制,可以防止总线进入 suspend状态以及用于判断 disconnect。

SYNC,同步域,主要用于与本地时钟同步。序列为 KJKJKJKJ KJKJKJKJ KJKJKJKJ KJKJKJKK,因为第一个 state必定为 K,所以可以用于判断收到的协议波形的 D+、D-。详见 8.2 SYNC Field、7.1.7.4.2 High-speed Signaling。

PID(packet identifier),数据包标识符,用于表述当前的 packet的类型,例如 Token(OUT、IN、SOF、SETUP)、Data(DATA0、DATA1、DATA2、MDATA)、Handshake(ACK、NAK、STALL、NYET)和 Special(PRE、ERR、SPLIT、PING),详见 8.3 Packet Field Formats、Table 8-1. PID Types。

MicroFrameNumber,微帧号,host每发出一个 SOF,frame number就会加一,到达 max后会归零重新开始计数。

EOP(End-of-Packet),用于表述一个 packet的结束。由 5个没有 bit stuffing的 NRZ byte组成,即 01111111 11111111 11111111 11111111 11111111。在波形上就会出现一个较长无变化的电平。例如 EOP前最后一个是 J,那 EOP就是 40个 K。详见 7.1.13.2.2 High-speed EOP、7.1.7.4.2 High-speed Signaling。

本文内容主要翻译至 Specification,并加入自己的理解,SOF波形图来自申小白的博客,谢谢。


USB high-speed SOF
http://xxxdk.xyz/xxx/2020/04/USB-high-speed-SOF/
作者
sni
发布于
2020年4月17日
许可协议