4.3 接口描述符

接口描述符定义了 USB 设备支持的“功能”(如音频输入、存储、HID 等)。一个配置描述符可包含多个接口描述符,每个接口描述符代表设备的一种独立功能。接口的特性通过端点描述符进一步描述。

USB 接口描述符的结构

偏移量 大小 描述
0 bLength 1 数字 描述符的字节数(固定为 0x09)。
1 bDescriptorType 1 常量 描述符类型(此处为 0x04,表示接口描述符)。
2 bInterfaceNumber 1 数字 接口编号(从 0 开始,作为配置中接口数组的索引)。
3 bAlternateSetting 1 数字 可选设置的索引值(用于切换同一接口的不同配置)。
4 bNumEndpoints 1 数字 此接口使用的端点数量(不包括端点 0)。若为 0,则仅使用控制端点。
5 bInterfaceClass 1 接口所属的类别(见下表 USB 接口类别)。
6 bInterfaceSubClass 1 子类 子类代码,依赖 bInterfaceClass 的值。
7 bInterfaceProtocol 1 协议 协议代码,依赖 bInterfaceClassbInterfaceSubClass
8 iInterface 1 索引 描述此接口的字符串描述符索引(若为 0 表示无描述)。

USB 接口类别(bInterfaceClass 常见值)

值(十六进制) 类别 典型设备
0x01 音频类 麦克风、扬声器
0x03 HID(人机接口设备) 键盘、鼠标
0x08 大容量存储类 U盘、移动硬盘
0x09 集线器类 USB Hub
0x0E 视频类 摄像头
0xE0 无线控制器类 蓝牙适配器
0xFF 厂商自定义类 特定厂商设备

示例:一个 HID 设备的接口描述符

字段 值(十六进制) 说明
bLength 0x09 描述符长度为 9 字节。
bDescriptorType 0x04 接口描述符类型。
bInterfaceNumber 0x00 第一个接口(索引 0)。
bAlternateSetting 0x00 无备用配置。
bNumEndpoints 0x01 使用 1 个端点(非端点 0)。
bInterfaceClass 0x03 HID 设备(如键盘)。
bInterfaceSubClass 0x01 子类:Boot Interface(键盘)。
bInterfaceProtocol 0x01 协议:键盘。
iInterface 0x00 无描述字符串。

关键说明:

  1. 端点数量(bNumEndpoints

    • 若为 0,表示仅通过控制端点(端点 0)通信。
    • 例如,HID 设备可能只需 1 个中断端点(IN 方向)用于上报按键数据。
  2. 备用配置(bAlternateSetting

    • 同一接口可通过不同配置切换工作模式(如音频设备的采样率切换)。
  3. 协议与子类

    • 例如 bInterfaceClass=0x03(HID)时:
      • bInterfaceSubClass=0x01 表示支持 BIOS 兼容的 Boot 模式(如键盘无需驱动)。
  4. 字符串描述符(iInterface

    • 可选字段,用于提供用户友好的接口名称(如 "Audio Control Interface")。