CDC SerialState通知
2025-07-11
0
0
SerialState 通知用途
SerialState 通知发送UART状态的异步通知。
此通知用于报告UART的各种状态信号,包括载波检测、传输载波、中断、振铃信号和设备溢出错误等。这些信号通常存在于UART中,用于通信状态报告。
通知格式
字段 | 值/说明 |
---|---|
bmRequestType | 0xA1 (10100001B) 方向:设备到主机,类型:类,接收者:接口 |
bNotification | 0x20 (SERIAL_STATE) |
wValue | 0x0000 |
wIndex | 接口号 |
wLength | 2 |
Data | UART状态位图(2字节) |
UART State Bitmap Values(Table 69)
位 | 字段名 | 描述 |
---|---|---|
D15..D7 | RESERVED | 保留供将来使用 |
D6 | bOverRun | 由于设备溢出,接收数据已被丢弃 |
D5 | bParity | 发生奇偶校验错误 |
D4 | bFraming | 发生帧错误 |
D3 | bRingSignal | 设备振铃信号检测状态 |
D2 | bBreak | 设备中断检测机制状态 |
D1 | bTxCarrier | 传输载波状态。对应V.24信号106和RS-232信号DSR |
D0 | bRxCarrier | 设备接收载波检测机制状态。对应V.24信号109和RS-232信号DCD |
典型设备端通知示例
C 结构体示例:
// 载波检测通知
uint8_t serial_state_notification[] = {
0xA1, // bmRequestType (设备到主机,类,接口)
0x20, // bNotification (SERIAL_STATE)
0x00, 0x00, // wValue (Zero)
0x01, 0x00, // wIndex (Interface 1)
0x02, 0x00, // wLength (2 bytes)
0x01, 0x00 // Data (bRxCarrier = 1, others = 0)
};
主机端处理要点
- 通过中断端点接收通知。
- 解析2字节的UART状态位图。
- 根据各个位的状态处理相应的事件:
- D0:载波检测状态变化
- D1:传输载波状态变化
- D2:中断检测
- D3:振铃信号检测
- D4:帧错误
- D5:奇偶校验错误
- D6:溢出错误
常见应用场景
场景 | 位 | 说明 |
---|---|---|
载波检测 | D0 | 检测到载波信号 |
传输载波 | D1 | 传输载波状态变化 |
中断检测 | D2 | 检测到中断信号 |
振铃检测 | D3 | 检测到振铃信号 |
错误检测 | D4-D6 | 检测到各种通信错误 |