USB 设备限定描述符
2020-09-28
4986
1
设备限定描述符描述符用在当一个设备能够工作在不同的速度下时,会获取设备限定描述符。
同时支持全速与高速的设备,必须有一个Device Qualifier Descriptor。当设备转换速度的时候,设备描述符中的某些字段可能改变。Device Qualifier Descriptor描述符储存当前不适用的速度的字段数值。设备描述符与device_qualifier描述符中的字段数值,视所选择的速度来做交替。
比如有一个高速的设备和一个全速的设备,他们的 VID、 PID 以及设备版本号都一样,先接入高速的设备,系统会“记住”他的速度是高速的。拔掉后再接入一个全速的设备,由于他们的标识都一样,系统会认为这是个相同的设备工作在不同的速度下,会请求设备限定描述符。 这里其实虽然用了两个不同速度的设备来举例,但是在主机端看来,这和一个设备工作在两种速率是一样的。 反过来如果先接入全速再接入高速,也会这样。
设备限定描述符的支持
USB设备不一定会支持设备限定描述符,所以如果USB主机获取设备限定描述符,USB设备回复STALL表示设备不支持该描述符。这种控制传输的失败并不影响设备的正常枚举和使用。
设备限定描述符的字段
由9个字段组成,长度固定为10个字节。
位移 | 字段名称 | 长度(字节) | 字段值 | 意义 |
---|---|---|---|---|
0 | bLength | 1 | 0x0A | 描述符大小(字节) |
1 | bDescriptorType | 1 | 0x06 | 描述符类型编号 |
2 | bcdUSB | 2 | BCD | USB规范版本号(例如, 0200h V2.00) |
4 | bDeviceClass | 1 | 类别 | 类别码 |
5 | bDeviceSubclass | 1 | 子类别 | 子类别码 |
6 | bDeviceProtocol | 1 | 协议 | 协议码 |
7 | bMaxPacketSize(0) | 1 | 数字 | 最大数据包大小 |
8 | bNumConfigurations | 1 | 数字 | 可能配置的数目 |
9 | Reserved | 1 | 0 | 保留 |
设备描述符与设备限定描述符
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936