USB CDC
+ -

CDC GetLineCoding

2025-07-11 0 0

1. GetLineCoding 请求用途

GetLineCoding 用于获取当前配置的线路编码参数。
主机通过此请求查询设备当前的异步数据传输格式设置,包括波特率、数据位、停止位、奇偶校验等参数。


2. USB 控制传输格式

字段 值/说明
bmRequestType 0xA1 (10100001B) 方向:设备到主机,类型:类,接收者:接口
bRequest 0x21 (GET_LINE_CODING)
wValue 0x0000
wIndex 接口号
wLength Line Coding Structure 的大小(7字节)
Data Line Coding Structure(设备返回,见下表)

3. Line Coding Structure 详细格式(Table 50)

偏移量 字段名 大小 值/说明
0 dwDTERate 4 数据终端速率(位/秒)
4 bCharFormat 1 停止位:0=1位,1=1.5位,2=2位
5 bParityType 1 奇偶校验:0=无,1=奇,2=偶,3=标记,4=空格
6 bDataBits 1 数据位(5,6,7,8或16)

C 结构体定义:

typedef struct _LINE_CODING {
    uint32_t dwDTERate;      // 波特率(如9600, 19200, 38400等)
    uint8_t  bCharFormat;    // 停止位(0:1位, 1:1.5位, 2:2位)
    uint8_t  bParityType;    // 奇偶校验(0:无, 1:奇, 2:偶, 3:标记, 4:空格)
    uint8_t  bDataBits;      // 数据位(5,6,7,8,16)
} LINE_CODING;

4. 典型主机端请求示例

C 结构体示例:

LINE_CODING line_coding;

USB_SETUP_PACKET setup = {
    .bmRequestType = 0xA1,           // 设备到主机,类,接口
    .bRequest = 0x21,                // GET_LINE_CODING
    .wValue = 0x0000,
    .wIndex = interface_number,      // 通信接口号
    .wLength = sizeof(LINE_CODING)   // 7字节
};
// 发送setup包,读取line_coding数据

5. 设备端处理要点

  • 返回当前配置的 Line Coding Structure。
  • 确保返回的数据与当前硬件设置一致。
  • 如果设备不支持某些参数,返回默认值或最近设置的值。

6. 常见配置示例

配置类型 dwDTERate bCharFormat bParityType bDataBits 说明
标准串口 9600 0 0 8 8N1配置
高速串口 115200 0 0 8 高速8N1配置
工业设备 19200 0 2 7 7E1配置
老式设备 4800 1 1 7 7O1.5配置

7. 参考

0 篇笔记 写笔记

CDC GetLineCoding
1. GetLineCoding 请求用途GetLineCoding 用于获取当前配置的线路编码参数。主机通过此请求查询设备当前的异步数据传输格式设置,包括波特率、数据位、停止位、奇偶校验等参数。2. USB 控制传输格式字段值/说明bmRequestType0xA1 (10......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

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