>>USB设备的各种描述符
1、设备描述符(Device Descriptors)
一个USB设备只有一个设备描述符,这是它的"身份证"。
2、配置描述符(Configuration Descriptors)
一个设备描述符下可包含多个配置描述符。用户可根据需要进行不同的配置(不同的配置占用的资源不同,功能也不同)。
每种配置都对应一个配置描述符。
3、接口描述符(Interface Descriptors)
一种配置中可定义多个接口。接口是端点的集合(用户可根据需要将多个端点定义成一个接口以统一管理与使用)。
每个接口对应一个接口描述符。
4、端点描述符(Endpoint Descriptors)
端点相当于一个有名管道,负责USB数据的传输,每个端点的传输方向都是单向的(由用户指定)。
每个端点对应一个端点描述符。
>>USB各种描述符结构
1、设备描述符(Device Descriptors)
uint8_t | bLength |
这个描述符的大小(以字节为单位) |
uint8_t | bDescriptorType |
描述符类型(本结构体中固定为0x01) 。 |
uint16_t | bcdUSB |
USB规范版本号以二进制编码的十进制数表示(如值0x0200表示USB 2.0,0x0110表示USB 1.1等)。 |
uint8_t | 形式bDeviceClass |
设备的USB-IF类代码(由USB官方分配,详见libusb_class_code)。 |
uint8_t | bDeviceSubClass |
设备的USB-IF子类代码,(由USB官方分配,由bDeviceClass值限定)。 |
uint8_t | bDeviceProtocol |
设备的USB-IF协议代码,(由USB官方分配,由bDeviceClass和bDeviceSubClass值限定)。 |
uint8_t | bMaxPacketSize0 |
端点0的最大数据包大小(有效大小为8,16,32,64)。 |
uint16_t | idVendor |
USB-IF制造商ID (由USB官方分配)。 |
uint16_t | idProduct |
USB-IF产品ID(由产品制造商分配)。 |
uint16_t | bcdDevice |
二进制编码的十进制数中的设备发行版号 (设备出厂编号)。 |
uint8_t | iManufacturer |
描述制造商的字符串描述符的索引。 |
uint8_t | iProduct |
描述产品的字符串描述符索引。 |
uint8_t | iSerialNumber |
包含设备序列号的字符串描述符索引。 |
uint8_t | bNumConfigurations指定 |
当前速度下能支持的配置数量。 |