USB CDC
+ -

CDC 联合功能描述符

2025-07-10 0 0

Union Functional Descriptor(联合功能描述符)联合功能描述符用于将多个接口(如通信接口和数据接口)组织为一个功能单元,便于主机识别和统一管理。主控接口可对整个组进行操作和接收通知。

联合功能描述符用于描述一组接口之间的关系,这些接口可以被视为一个功能单元。它只能出现在接口描述符的类特定部分。
在这组接口中,有一个接口被指定为主控接口(master interface),可以通过该接口对整个组进行操作或接收通知。组内的接口可以包括通信类、数据类或其他任何有效的USB接口类(如音频、HID、监控等)。


描述符结构

偏移 字段名 大小 值/类型 描述
0 bFunctionLength 1 数值 此功能描述符的字节数
1 bDescriptorType 1 常量 CS_INTERFACE 描述符类型
2 bDescriptorSubtype 1 常量 联合功能描述符子类型
3 bMasterInterface 1 常量 作为主控(master)或控制接口的通信类或数据类接口号(bInterfaceNum,零基)
4 bSlaveInterface0 1 数值 第一个从属(slave)或关联接口的接口号(bInterfaceNum,零基)
N+3 bSlaveInterfaceN-1 1 数值 第N-1个从属或关联接口的接口号

C结构体定义

typedef struct _USB_CDC_UNION_FUNCTIONAL_DESCRIPTOR {
    uint8_t bFunctionLength;      // 描述符长度
    uint8_t bDescriptorType;      // CS_INTERFACE (0x24)
    uint8_t bDescriptorSubtype;   // Union subtype (0x06)
    uint8_t bMasterInterface;     // 主控接口号
    uint8_t bSlaveInterface[1];   // 从属接口号(可变长度,实际数量由bFunctionLength决定)
} USB_CDC_UNION_FUNCTIONAL_DESCRIPTOR;

示例数据(假设主控接口号为0,从属接口号为1和2)

字节序号 值(十六进制) 含义
0 0x06 bFunctionLength = 6
1 0x24 bDescriptorType = CS_INTERFACE
2 0x06 bDescriptorSubtype = Union
3 0x00 bMasterInterface = 0
4 0x01 bSlaveInterface0 = 1
5 0x02 bSlaveInterface1 = 2

二进制示例:

06 24 06 00 01 02

说明

  • bFunctionLength:描述符总长度,=4+从属接口数量
  • bDescriptorType:固定为0x24(CS_INTERFACE)
  • bDescriptorSubtype:联合功能描述符为0x06
  • bMasterInterface:主控接口号(零基)
  • bSlaveInterfaceN:从属接口号(零基,可有多个)

0 篇笔记 写笔记

CDC 联合功能描述符
Union Functional Descriptor(联合功能描述符联合功能描述符用于将多个接口(如通信接口和数据接口)组织为一个功能单元,便于主机识别和统一管理。主控接口可对整个组进行操作和接收通知。联合功能描述符用于描述一组接口之间的关系,这些接口可以被视为一个功能单元。它只能出现在接口......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!