USB CDC
+ -

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. 参考

0 篇笔记 写笔记

CDC SetATMDataFormat
1. SetATMDataFormat 请求用途SetATMDataFormat 用于设置主机在wValue字段中选择的数据格式。主机通过此请求配置ATM网络控制模型的数据格式,指定USB设备与主机之间的功能分配,特别是ATM分段和重组(SAR)功能的实现位置。2. USB 控制传输格式字......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

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