USB CDC
+ -

CDC PulseSetup请求

2025-07-10 0 0

1. PulseSetup 请求用途

PulseSetup 用于为脉冲拨号(pulse dialing)做准备,或在拨号序列完成后脱离保持电路。

  • wValue = 0xFFFF:表示拨号完成,要求设备脱离保持电路(disengage holding circuit)。
  • wValue = 其他值:为脉冲拨号周期做准备(prepare for a pulse-dialing cycle)。

注意

  • 不是所有设备都需要在脉冲拨号后用此请求脱离保持电路。
  • 设备是否需要此“额外请求”由 Direct Line Management Functional Descriptor 的 D2 位指示。

2. USB 控制传输格式

字段 值/说明
bmRequestType 0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口
bRequest 0x12 (PULSE_SETUP)
wValue 0xFFFF: 结束拨号,脱离保持电路
其他值: 准备脉冲拨号周期
wIndex 接口号
wLength 0
Data

3. 典型主机端请求示例

C 结构体示例:

USB_SETUP_PACKET setup = {
    .bmRequestType = 0x21,           // 主机到设备,类,接口
    .bRequest = 0x12,                // PULSE_SETUP
    .wValue = 0xFFFF,                // 0xFFFF: 结束拨号, 其他: 准备拨号
    .wIndex = interface_number,      // 通信接口号
    .wLength = 0                     // 无数据阶段
};
// 发送setup包,无data阶段

4. 设备端处理要点

  • 检查 wValue:
    • 0xFFFF:脱离保持电路
    • 其他:准备脉冲拨号
  • 依据 Direct Line Management Functional Descriptor 的 D2 位,决定是否需要处理此请求。
  • 完成后通过状态阶段(Status Stage)ACK主机。

5. 相关描述符位说明

  • Direct Line Management Functional Descriptor 的 D2 位(bit 2):
    • 1:需要额外的 PulseSetup 请求来脱离保持电路
    • 0:不需要

6. 参考


如需设备端处理代码、主机端调用示例、或描述符位设置细节,请继续提问!

0 篇笔记 写笔记

CDC PulseSetup请求
1. PulseSetup 请求用途PulseSetup 用于为脉冲拨号(pulse dialing)做准备,或在拨号序列完成后脱离保持电路。 wValue = 0xFFFF:表示拨号完成,要求设备脱离保持电路(disengage holding circuit)。wValue = 其他值:为......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • CDC
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

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