详细内容在USB2.0规范 9.6章节
描述符类型:
Descriptor Types | Value | |
Device | 设备 | 0x01 |
Configuration | 配置 | 0x02 |
String | 字符串 | 0x03 |
Interface | 接口 | 0x04 |
Endpoint | 端点 | 0x05 |
Device Qualifier | 设备修饰符 | 0x06 |
Other Speed Configuration | 其他速度配置 | 0x07 |
Interface Power | 接口电源 | 0x08 |
OTG | OTG | 0x09 |
HID | HID | 0x21 |
Report | 报告 | 0x22 |
Physical | 物理 | 0x23 |
Hub Capability | Hub | 0x29 |
1、设备描述符:
Offset | Field | Size | Description |
0 | bLength | 1 | 描述符大小 |
1 | bDescriptorType | 1 | 描述符类型 |
2 | bcdUSB | 2 | usb协议版本 |
4 | bDeviceClass | 1 | 类 |
5 | bDeviceSubClass | 1 | 子类 |
6 | bDeviceProtocol | 1 | 协议 |
7 | bMaxPacketSize0 | 1 | 端点0最大包长度 |
8 | idVendor | 2 | 厂商ID(USB-IF) |
10 | idProduct | 2 | 产品ID |
12 | bcdDevice | 2 | 设备版本号 |
14 | iManufacturer | 1 | 厂商字符串索引 |
15 | iProduct | 1 | 产品字符串索引 |
16 | iSerialNumber | 1 | 产品序列号字符串索引 |
17 | bNumConfigurations | 1 | 配置数 |
2、设备修饰符:
Offset | Field | Size | Description |
0 | bLength | 1 | 描述符大小 |
1 | bDescriptorType | 1 | 描述符类型 |
2 | bcdUSB | 2 | usb协议版本 |
4 | bDeviceClass | 1 | 类 |
5 | bDeviceSubClass | 1 | 子类 |
6 | bDeviceProtocol | 1 | 协议 |
7 | bMaxPacketSize0 | 1 | 端点0最大包长度 |
8 | bNumConfigurations | 1 | 其他速度配置数 |
9 | bReserved | 1 | 保留 |
3、配置描述符:
Offset | Field | Size | Description |
0 | bLength | 1 | 描述符大小 |
1 | bDescriptorType | 1 | 描述符类型 |
2 | wTotalLength | 2 | 配置描述符集合总长度 (配置、接口、端点、类或特定厂商) |
4 | bNumInterfaces | 1 | 接口数 |
5 | bConfigurationValue | 1 | 配置的值 |
6 | iConfiguration | 1 | 该配置的字符串的索引 |
7 | bmAttributes | 1 | 设备属性 D7:Reserved (set to one) D6:Self-powered D5:Remote Wakeup D4-D0:Reserved (reset to zero) |
8 | bMaxPower | 1 | 设备电流 (单位:2ma) |
4、其他速度配置:
Offset | Field | Size | Description |
0 | bLength | 1 | 描述符大小 |
1 | bDescriptorType | 1 | 描述符类型 |
2 | wTotalLength | 2 | 配置描述符集合总长度 |
4 | bNumInterfaces | 1 | 该速率配置支持的接口数 |
5 | bConfigurationValue | 1 | 配置的值 |
6 | iConfiguration | 1 | 字符串描述符的索引 |
7 | bmAttributes | 1 | 与配置描述符相同 |
8 | bMaxPower | 1 | 与配置描述符相同 |
5、接口:
Offset | Field | Size | Description |
0 | bLength | 1 | 描述符大小 |
1 | bDescriptorType | 1 | 描述符类型 |
2 | bInterfaceNumber | 1 | 接口编号 (从0开始) |
3 | bAlternateSetting | 1 | 接口备用编号 |
4 | bNumEndpoints | 1 | 该接口的端点数 |
5 | bInterfaceClass | 1 | 类 |
6 | bInterfaceSubClass | 1 | 子类 |
7 | bInterfaceProtocol | 1 | 协议 |
8 | iInterface | 1 | 接口字符串描述符索引 |
6、端点:
Offset | Field | Size | Description |
0 | bLength | 1 | 描述符大小 |
1 | bDescriptorType | 1 | 描述符类型 |
2 | bEndpointAddress | 1 | 端点地址 bit3-0: 端点号 bit6-4: 保留 bit7: 方向(控制端点忽略) 0 = OUT endpoint 1 = IN endpoint |
3 | bmAttributes | 1 | bConfigurationValue属性 bit1-0: Transfer Type 00 = Control 01 = Isochronous 10 = Bulk 11 = Interrupt not isochronous: bit5-2 = 0 isochronous: bit3-2: Synchronization Type 00 = No Synchronization 01 = Asynchronous 10 = Adaptive 11 = Synchronous bit5-4:Usage Type 00 = Data endpoint 01 = Feedback endpoint 10 = Implicit feedback Data denpoint 11 = Reserved
|
4 | wMaxPacketSize | 2 | 端点最大包大小 bit10 - 0: 最大包长度 (高速 iso 和 int 端点:) bit12-11:每个微针的附加传输因素 00 = None 01 = 1 additional 10 = 2 additional 11 = Reserved bit15-13:Reserved |
6 | bInterval | 1 | 数据传输间隔 isochronous endpoint: 取值范围为 1-16 轮询间隔 = 2的(bInterval-1)次幂 全速 interrupt endpoint: 取值范围 = 1-255 高速 interrupt endpoint: 取值范围 1-16 轮询间隔 = 2的(bInterval-1)次幂 高速bulk/control OUT 端点: 取值0-255 bInterval必须指定端点的最大NAK速率 值为0表示端点从不NAKs 其他值表示每bInterval最多1 NAK的微帧数数。该值必须在0到255之间 |
7、字符串
Offset | Field | Size | Description |
0 | bLength | 1 | 描述符大小 |
1 | bDescriptorType | 1 | 描述符类型 |
2 | wLANGID[0] | 2 | LANGID code zero |
... | ... | ... | ... |
N | wLANGID[x] | 2 | LANGID code z |
Offset | Field | Size | Description |
0 | bLength | 1 | 描述符大小 |
1 | bDescriptorType | 1 | 描述符类型 |
2 | bString | N | UNICODE encoded string |