USB作为数据通信标准,固件可分为枚举配置和类协议部分,枚举配置实现USB主机对设备的枚举和配置,类协议实现设备各自的数据传输。
usb2.0协议chapter8 protocol layer
1 USB协议传输结构
- 集合关系:传输类型 -> 事务 -> 包 -> 域
- 传输类型: 控制、中断、同步、批量
- 事务: IN、OUT、SETUP
- 包: 令牌包、数据包、握手包
- 域: 同步序列域、包标识域、地址域、端点域、帧号域、数据域、CRC校验域
注:
1、 USB基本数据结构是包,而包由不同的域构成,而不同的包又组成不同的传输类型。
2、 USB总线发送是LSB在前,MSB最后。
1.1
域 |
1.1.1
同步序列域(SYNC): |
位于一个包的最开始处,8bit,固定0000 0001
1.1.2
标识域(PID): |
在同步域之后,标明包类型。8bit,LSB四位为标识码,MSB四位为标识码的反码。类型见下图。
USB 协议1 .1 中, 定义了10 种不同类型的包。USB 协议2 .0 中则定义了全部16 种标识域。如下图所示,标橙色为2.0所有。
1.1.3
地址域(ADDR) |
由主机分配唯一地址,7bit,由于地址0保留用作初始化,因此地址最多有127个,也是usb结构中最大127个设备的原因。
1.1.4
端点域(ENDP): |
4bit,端点0必须作为控制端点,端点可被定义为IN、SETUP、OUT、PING端点,所有设备必须支持端点0作为默认的控制管道。低速设备最大支持3个管道,1个0端点和2个其他端点(可以是都是控制,一个控制一个中断也可以是两个中断)。高速全速支持最大16个输入输出管道。
1.1.5
帧号域(FRAM) |
11bit,每个帧都有一个特