Fork me on GitHub

USB协议详解第19讲(USB包-包的组成及分类)

1.包的组成

下面这张图为包的组成结构,由SOP、SYNCPacket Content、EOP四部分组成,其中Packet Content最为核心,Packet Content由PID、地址、帧号、数据、CRC组成。

1.SOP域(Start Of Packet)

通过将D +和D-线从空闲状态驱动到相反的逻辑电平(K状态),由始发端口发信号通知分组的开始(SOP)。 此开关级别表示SYNC字段的第一位。 当重新传输到小于±5 ns时,集线器必须限制SOP第一位宽度的变化。 通过将通过集线器的标称数据延迟与集线器的输出使能延迟相匹配,可以最小化失真。

2.SYNC(同步域)

SOP域之后就是同步域(SYNC)的开始,全速/低速设备SYNC被定义长度为8位(0000 0001),高速长度定义为32位(0000 0000 0000 0000 0000 0000 0000 0001)。 注意,这个长度是对发送端的要求。下图是一个全速/低速设备,经过NRZI编码后的波形。SYNC域中的最后两位是一个标记(电平未翻转,即受到数据1),用于标识SYNC域的结束和PID域的开始。

3.PID域(Packet Identifier Field)

数据包标识符(PID)域紧跟在同步域之后。 PID由4位类型字段和4位校验字段组成,如下图所示。类型字段主要是标识本包的类型,校验字段主要是对类型字段进行校验。为了确保接收端正确解码并识别包类型,发送端会对4位类型字段的每1位取补码赋值到4位校验字段里面,接收端也会进行校验操作,如果4位PID校验位不是它们各自的分组标识符位的补码,则存在PID错误。

4位类型字段标识的所有包类型如下:

4.地址域

使用两个字段来处理功能端点:设备地址字段和端点地址字段。 任一字段上的不匹配设备都必须忽略该令牌, 访问非初始化端点设备也必须忽略该令牌。

(1)设备地址字段

如下图,ADDR<6:0>总共可访问128个地址。

(2)端点地址字段

如下图, 低速设备每个功能最多支持三个管道,端点号为零的控制管道加上两个额外的管道(两个控制管道,一个控制管道和一个中断端点,或两个中断端点),全速和高速每个功能最多可支持16个IN和OUT端点。

(3)地址域总结

地址是由两个地址构成,设备地址+端点地址

5.帧号域

(1)帧和微帧

帧号域是11比特字段,其由主机在每帧的基础上递增。 帧号字段在达到其最大值7FFH时翻转,并且仅在每个帧(微)SOF令牌包发送并累加,说白了就是限时当前USB发了多少帧了。

USB全速设备1ms产生一个帧,而高速设备每125us产生一个微帧,启动后永不间歇,如下图,图中SOF包中Frame标识了当前帧号。大家可以看我的另一篇文章USB帧和微帧剖析。

(2)帧号域总结

6.数据域

(1)数据域格式

数据域的范围可以是0到1024字节,并且必须是整数个字节,下图显示了多个字节的格式,每个字节内的数据位首先从LSB移出。

(2)数据域总结

根据不同的传输类型,定义如下一次最大传输量。

7.CRC域(循环冗余校验)

(1)令牌CRC

为令牌提供五位CRC字段,并覆盖IN,SETUP和OUT令牌的ADDR和ENDP字段或SOF令牌的时间戳字段。 PING和SPLIT特殊令牌还包括一个五位CRC字段。

生成多项式为: G(X)= X^5 + X^2 + 1

(2)数据CRC

数据CRC是应用于数据分组的数据字段的16位多项式。

生成多项式是:G(X)= X^16 + X^15 + X^2 + 1

表示该多项式的二进制位模式是1000000000000101B,如果没有错误地接收到所有数据和CRC位,则16位校验和将为1000000000001101B。

(3)CRC域总结

8.EOP域(End Of Packet)

全速或低速设备的结束包:SE0状态用于发信号通知分组结束(EOP)。 通过将D +和D-驱动到SE0状态两位时间,然后将线路驱动到J状态一位时间来发信号通知EOP。 从SE0到J状态的转换定义了接收器处的分组的结束。 J状态被置位一个位时间,然后D +和D-输出驱动器都处于高阻态。 总线终端电阻将总线保持在空闲状态。

注:SE0的意思是D+和D-都表示为低电平。

2.包的分类

每种类型的包组成会有所不同,按照组成所有的包会被分成帧首包SOF(Start of Frame)命令包(Token)数据包(Data)握手包(Handshake)四大类型。

4种PID类型和4种包类型(按照组成分类)的区别如下,大家注意区分。

posted @ 2024-10-22 22:57  yooooooo  阅读(50)  评论(0编辑  收藏  举报