CDC SetATMDataFormat
2025-07-11
0
0
1. SetATMDataFormat 请求用途
SetATMDataFormat 用于设置主机在wValue字段中选择的数据格式。
主机通过此请求配置ATM网络控制模型的数据格式,指定USB设备与主机之间的功能分配,特别是ATM分段和重组(SAR)功能的实现位置。
2. USB 控制传输格式
字段 | 值/说明 |
---|---|
bmRequestType | 0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口 |
bRequest | 0x50 (SET_ATM_DATA_FORMAT) |
wValue | 数据格式(Data Format,见下表) |
wIndex | 接口号 |
wLength | 0 |
Data | 无 |
3. ATM Data Format(Table 64)
wValue | 描述 |
---|---|
1 | Type 1格式:连接的ATM信元 |
2 | Type 2格式:ATM头部模板+连接的ATM信元载荷 |
3 | Type 3格式:AAL 5 SDU |
4. 数据格式详细说明
Type 1 数据格式
- 描述:连接的53字节ATM信元
- 处理:USB设备处理最少,主机执行所有ATM和AAL功能
- 特点:最简单的设备类型,HEC字段仅作为占位符
Type 2 数据格式
- 描述:4字节ATM信元头部模板+连接的48字节ATM信元载荷
- 处理:移除重复的ATM信元头部,提高USB总线带宽效率
- 要求:所有信元载荷必须共享相同的头部模板
Type 3 数据格式
- 描述:4字节ATM信元头部+单个AAL 5 SDU
- 处理:USB设备执行AAL5封装和SAR功能
- 特点:设备处理最多,推荐使用
5. 典型主机端请求示例
C 结构体示例:
USB_SETUP_PACKET setup = {
.bmRequestType = 0x21, // 主机到设备,类,接口
.bRequest = 0x50, // SET_ATM_DATA_FORMAT
.wValue = 0x0003, // 0x0001: Type 1, 0x0002: Type 2, 0x0003: Type 3
.wIndex = interface_number, // 通信接口号
.wLength = 0 // 无数据阶段
};
// 发送setup包,无data阶段
6. 设备端处理要点
- 解析wValue中的数据格式类型。
- 根据格式类型配置设备的数据处理方式。
- Type 1是必需的,Type 3是推荐的。
- 完成后通过状态阶段(Status Stage)ACK主机。
7. 常见应用场景
场景 | 数据格式 | wValue | 说明 |
---|---|---|---|
基本互操作性 | Type 1 | 0x0001 | 确保最小互操作性 |
带宽优化 | Type 2 | 0x0002 | 提高USB总线效率 |
完整功能 | Type 3 | 0x0003 | 推荐使用,设备处理最多 |
8. 参考
- USB CDC ATM 子类规范 6.5.1](https://www.usb.org/document-library/class-definitions-communication-devices-12)