+ -

USB 描述符分类及关系

欢迎加入字节流官方QQ群:952873936或联系站长进行技术交流。

标准的描述符有5种,USB为这些描述符定义了编号:
1——设备描述符
2——配置描述符
3——字符串描述符
4——接口描述符
5——端点描述符
0x21——HID描述符
0x22——报表描述符
上面的描述符之间有一定的关系,一个设备只有一个设备描述符,而一个设备描述符可以包含多个配置描述符,而一个配置描述符可以包含多个接口描述符,一个接口使用了几个端点,就有几个端点描述符

还有一些不太常用的描述符:
6——限定描述符 DEVICE_QUALIFIER
7—其它速率配置描述符 OTHER_SPEED_CONFIGURATION
8—接口功率描述符 INTERFACE_POWER

标准描述符定义

#define USB_DEVICE_DESCRIPTOR_TYPE                          0x01
#define USB_CONFIGURATION_DESCRIPTOR_TYPE                   0x02
#define USB_STRING_DESCRIPTOR_TYPE                          0x03
#define USB_INTERFACE_DESCRIPTOR_TYPE                       0x04
#define USB_ENDPOINT_DESCRIPTOR_TYPE                        0x05
//
// USB 2.0: 9.4 Standard Device Requests, Table 9-5. Descriptor Types
//
#define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE                0x06
#define USB_OTHER_SPEED_CONFIGURATION_DESCRIPTOR_TYPE       0x07
#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE                 0x08
//
// USB 3.0: 9.4 Standard Device Requests, Table 9-5. Descriptor Types
//
#define USB_OTG_DESCRIPTOR_TYPE                                     0x09
#define USB_DEBUG_DESCRIPTOR_TYPE                                   0x0A
#define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE                   0x0B
#define USB_BOS_DESCRIPTOR_TYPE                                     0x0F
#define USB_DEVICE_CAPABILITY_DESCRIPTOR_TYPE                       0x10
#define USB_SUPERSPEED_ENDPOINT_COMPANION_DESCRIPTOR_TYPE           0x30
//
// USB 3.1: 9.4 Standard Device Requests, Table 9-6. Descriptor Types
//
#define USB_SUPERSPEEDPLUS_ISOCH_ENDPOINT_COMPANION_DESCRIPTOR_TYPE 0x31

对于一些特殊设备,除过这些标准的设备描述,如HID设备还有报告描述符,符合UVC规范的报像头还有其专用的描述符如关联描述符。

描述符的获取

  • 接口描述符:只要记录接口编号,接口的端点数,接口所使用的类子类协议。
  • 端点描述符:端点号,方向,端点的传输类型,最大包长度,查询时间间隔。
  • 字符串描述符:提供一些方便人们查阅的信息不是必须的。

USB设备描述符关系

USB设备描述符关系

  • 一个USB设备只有一个设备描述符。
  • 一个USB设备可以有多个配置描述符(在设备描述符的bNumConfigurations下指定),但设备只能工作在一个配置描述符下。
  • 一个配置描述符下可以有多个(在配置描述符的bNumInterfaces下指定)接口描述符。
  • 一个接口描述符下可以有多个(在接口描述符的bNumEndPoints下指定)端点描述符。

设备描述符、配置描述符和接口描述符都有一些相关的功能描述,这是定义在其对应的字符描述符中。
如在设备描述符中就有以下三个字符串索引值,通过查询其对应的字符串值就可以知道其字符串功能描述。

     BYTE iManufacturer;     //描述厂商字符串的索引 
     BYTE iProduct;           //描述产品字符串的索引 
     BYTE iSerialNumber;     //描述设备序列号字符串的索引
微信公众号
字节流公众号  字节流QQ群:952873936
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!