USB CDC
+ -

CDC SetControlLineState

2025-07-11 本文链接为:http://www.usbzh.com/article/detail-1516.html ,欢迎转载,转载请附上本文链接。

1. SetControlLineState 请求用途

SetControlLineState 用于生成RS-232/V.24风格的控制信号,模拟传统串口通信的控制线状态。
主机通过此请求控制设备的DTR(Data Terminal Ready)和RTS(Request To Send)信号,实现流控制和设备状态指示。


2. USB 控制传输格式

字段 值/说明
bmRequestType 0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口
bRequest 0x22 (SET_CONTROL_LINE_STATE)
wValue 控制信号位图(Control Signal Bitmap,见下表)
wIndex 接口号
wLength 0
Data

3. Control Signal Bitmap Values(Table 51)

名称/说明
D15..D2 RESERVED(复位为0)
D1 载波控制(半双工调制解调器)<br>对应V.24信号105和RS-232信号RTS<br>0:停用载波<br>1:启用载波<br>全双工模式下设备忽略此位
D0 DTE存在指示<br>对应V.24信号108/2和RS-232信号DTR<br>0:不存在<br>1:存在

位图示例:

  • wValue = 0x0001:DTR=1(DTE存在),RTS=0(停用载波)
  • wValue = 0x0002:DTR=0(DTE不存在),RTS=1(启用载波)
  • wValue = 0x0003:DTR=1(DTE存在),RTS=1(启用载波)

4. 典型主机端请求示例

C 结构体示例:

USB_SETUP_PACKET setup = {
    .bmRequestType = 0x21,           // 主机到设备,类,接口
    .bRequest = 0x22,                // SET_CONTROL_LINE_STATE
    .wValue = 0x0001,                // DTR=1, RTS=0
    .wIndex = interface_number,      // 通信接口号
    .wLength = 0                     // 无数据阶段
};
// 发送setup包,无data阶段

5. 设备端处理要点

  • 解析 wValue 的低2位:
    • D0:控制DTR信号
    • D1:控制RTS信号(半双工模式)
  • 根据信号状态控制硬件或模拟相应的控制线。
  • 完成后通过状态阶段(Status Stage)ACK主机。

6. 常见应用场景

场景 DTR RTS wValue 说明
设备连接 1 0 0x0001 主机准备就绪
数据发送 1 1 0x0003 主机请求发送数据
设备断开 0 0 0x0000 主机断开连接
流控制 1 0 0x0001 主机暂停数据接收

7. 参考

本文链接为:http://www.usbzh.com/article/detail-1516.html ,欢迎转载,转载请附上本文链接。

0 篇笔记 写笔记

CDC SetControlLineState
1. SetControlLineState 请求用途SetControlLineState 用于生成RS-232/V.24风格的控制信号,模拟传统串口通信的控制线状态。主机通过此请求控制设备的DTR(Data Terminal Ready)和RTS(Request To Send)信号,实现流控制......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

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