fpga_feixiang 发表于 2020-12-1 11:21:23

usb2.0数据格式

域是USB数据最小的单位,由若干位组成(多少位由具体的域决定),域可分为七个类型:

1、同步域(SYNC)

所有的USB包都由SYNC开始,高速包的SYNC宽度为32bit,全速/低速包的SYNC段度为8bit。实际接收到的SYNC长度由于USB HUB的关系,可能会小于该值。八位的值固定为0000 0001,用于本地时钟与输入同步。
2、标识域(PID)

由四位标识符 + 四位标识符反码构成,表明包的类型和格式,这是一个很重要的部分,这里可以计算出,USB的标识码有16种。USB2.0使用了十六种标识码,标识码的作用是用来说明包的属性的,标识码是和包联系在一起的,标识码分别有以下十六种:

令牌包 :

0x01:输出(OUT)启动一个方向为主机到设备的传输,并包含了设备地址和标号。

0x09:输入(IN) 启动一个方向为设备到主机的传输,并包含了设备地址和标号。

0x05:帧起始(SOF)表示一个帧的开始,并且包含了相应的帧号。

0x0d:设置(SETUP)启动一个控制传输,用于主机对设备的初始化。

数据包 :

0x03:偶数据包(DATA0)。

0x0b:奇数据包(DATA1)。

握手包:

0x02:确认接收到无误的数据包(ACK)。

0x0a:无效,接收(发送)端正在忙而无法接收(发送)信息。

0x0e:错误,端点被禁止或不支持控制管道请求。

特殊包:

0x0C前导,用于启动下行端口的低速设备的数据传输。

3、地址域(ADDR):七位地址,代表了设备在主机上的地址,地址000 0000被命名为零地址,是任何设备第一次连接到主机时,在被主机配置、枚举前的默认地址,由此可以知道为什么一个USB主机只能接127个设备的原因。

4、端点域(ENDP),四位,由此可知一个USB设备端点数量最大为16个。

5、帧号域(FRAM),11位,每一个帧都有一个特定的帧号,帧号域最大容量0x800,对于同步传输有重要意义。

6、数据域(DATA):长度为0~1023字节,在不同的传输类型中,数据域的长度各不相同,但必须为整数个字节的长度。

7、校验域(CRC):对令牌包和数据包中非PID域进行校验的一种方法,CRC校验在通讯中应用很泛,是一种很好的校验方法,CRC码的除法是模2运算,不同于10进制中的除法。

zxopenhl 发表于 2020-12-1 15:45:40

usb2.0数据格式
页: [1]
查看完整版本: usb2.0数据格式