USB配置描述符
USB配置描述符(Configuration Descriptor)是USB设备的标准描述符之一,它提供了关于设备的特定配置的详细信息。一个USB设备可以有一个或多个配置描述符,每个描述符都包含了设备在该配置下的接口数量、供电模式、最大功耗以及其他重要属性。
配置描述符的结构
配置描述符由多个字段组成,每个字段都有其特定的含义和大小。以下是配置描述符的主要字段:
bLength: 描述符的长度,通常为9字节。
bDescriptorType: 描述符的类型,对于配置描述符,该值为0x02。
wTotalLength: 表示该配置返回的所有描述符(包括配置、接口、端点描述符)的总长度。
bNumInterfaces: 表示该配置支持的接口数量。
bConfigurationValue: 用作SetConfiguration请求的参数,用于选择设备的配置。
iConfiguration: 描述该配置的字符串描述符的索引。
bmAttributes: 描述配置的属性,如是否自供电、是否支持远程唤醒等。
bMaxPower: 表示设备在该配置下从总线获取的最大功耗,单位为2mA。
获取配置描述符
主机通过发送Get Descriptor请求来获取设备的配置描述符。请求中包含的wValue字段指定了请求的描述符类型和索引。例如,要获取第一个配置描述符,wValue应设置为0x0200。
示例设备的配置描述符
以下是一个USB键盘的配置描述符示例:
Configuration Descriptor:
bLength: 9
bDescriptorType: 2
wTotalLength: 59
bNumInterfaces: 2
bConfigurationValue: 1
iConfiguration: 0
bmAttributes: 160 (Bus Powered)
bMaxPower: 45
这个示例表明,键盘有两个接口,使用总线供电,最大功耗为90mA(因为bMaxPower字段以2mA为单位)。
重要考虑事项
供电模式: 配置描述符中的bmAttributes字段指示设备是由总线供电还是自供电。这对于设备的功耗管理非常重要。
接口数量: bNumInterfaces字段告诉主机设备在当前配置下有多少个接口,每个接口可能对应不同的功能。
功耗: bMaxPower字段告诉主机设备在该配置下的最大功耗,这对于确保设备不会超过主机能提供的功率非常重要。
配置描述符是USB设备枚举过程中的关键部分,它们帮助主机了解设备的能力,并据此进行适当的配置。