4.2 配置描述符

配置描述符中包括了描述符的长度(属于此描述符的所有接口描述符和端点描述符的长度的和)、供电方式(自供电/总线供电)、最大耗电量等。如果主机发出 USB 标准命令 Get_Descriptor 要求得到设备的某个配置描述符,那么除了此配置描述符以外,此配置包含的所有接口描述符与端点描述符都将提供给 USB 主机。

USB 配置描述符的结构

偏移量 大小 描述
0 bLength 1 数字 此描述表的字节数长度。
1 bDescriptorType 1 常量 配置描述表类型(此处为 0x02)。
2 wTotalLength 2 数字 此配置信息的总长(包括配置、接口、端点和设备类及厂商定义的描述符)。
4 bNumInterfaces 1 数字 此配置所支持的接口个数。
5 bConfigurationValue 1 数字 SetConfiguration() 请求中用作参数来选定此配置。
6 iConfiguration 1 索引 描述此配置的字串描述表索引。
7 bmAttributes 1 位图 配置特性:
• D7: 保留(设为一)
• D6: 自给电源
• D5: 远程唤醒
• D4..0: 保留(设为一)
注:既用总线电源又有自给电源的设备会在 MaxPower 域指出需要从总线取的电量,并设置 D6 为一。
8 MaxPower 1 mA 在此配置下的总线电源耗费量,以 2mA 为一个单位。

示例:一种硬盘的配置描述符

字段 描述符值(十六进制)
bLength 0x09
bDescriptorType 0x02
wTotalLength 0x01F
bNumInterfaces 0x01
bConfigurationValue 0x01
iConfiguration 0x00
bmAttributes 0x0C
MaxPower 0x32

关键说明:

  1. bmAttributes 位图

    • D6 (自供电):若设备支持自供电,需设为 1,并通过 GetStatus(DEVICE) 获取实际电源模式。
    • D5 (远程唤醒):支持远程唤醒功能时设为 1
  2. MaxPower

    • 计算方式:值 × 2mA。例如 0x32(50)表示最大耗电为 100mA
  3. 配置选择

    • 主机通过 bConfigurationValue 的值(如 0x01)在 SetConfiguration 请求中激活该配置。
  4. 多配置支持

    • 若设备有多个配置描述符,主机需依次读取并通过 SetConfiguration 切换。