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:从属接口号(零基,可有多个)