CDC SendPulse请求
2025-07-11
0
0
1. SendPulse 请求用途
SendPulse 用于生成指定数量的脉冲周期(make/break pulse cycles),实现脉冲拨号功能。
主机通过此请求控制设备生成特定数量的脉冲,每个脉冲包含一个”make”(连接)和一个”break”(断开)周期。
2. USB 控制传输格式
字段 | 值/说明 |
---|---|
bmRequestType | 0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口 |
bRequest | 0x13 (SEND_PULSE) |
wValue | 脉冲周期数量(make/break cycles) |
wIndex | 接口号 |
wLength | 0 |
Data | 无 |
3. 典型主机端请求示例
C 结构体示例:
USB_SETUP_PACKET setup = {
.bmRequestType = 0x21, // 主机到设备,类,接口
.bRequest = 0x13, // SEND_PULSE
.wValue = 0x0005, // 生成5个脉冲周期
.wIndex = interface_number, // 通信接口号
.wLength = 0 // 无数据阶段
};
// 发送setup包,无data阶段
4. 设备端处理要点
- 检查 wValue,生成指定数量的脉冲周期。
- 每个脉冲周期包含:
- Make:连接线路(通常约60ms)
- Break:断开线路(通常约40ms)
- 完成后通过状态阶段(Status Stage)ACK主机。
5. 脉冲拨号典型流程
- PulseSetup:准备脉冲拨号
- SendPulse:生成脉冲(如拨号”5”需要5个脉冲)
- PulseSetup(可选):脱离保持电路
6. 参考
如需设备端处理代码、主机端调用示例、或脉冲时序细节,请继续提问!