CDC SendEncapsulatedCommand请求
2025-07-10
0
0
SendEncapsulatedCommand用于向通信类接口发送一条“封装命令”,命令内容和格式由该接口支持的控制协议(如AT命令、PPP、以太网等)决定。
常用于调制解调器、以太网等CDC设备的主机与设备间的协议命令下发。
USB控制传输格式
字段 | 值/说明 |
---|---|
bmRequestType | 0x21 (00100001B) 方向:主机到设备,类型:类,接收者:接口 |
bRequest | 0x00 (SEND_ENCAPSULATED_COMMAND) |
wValue | 0x0000 |
wIndex | 接口号(Interface Number) |
wLength | 数据长度(Data阶段下发的命令长度,单位字节) |
Data | 控制协议命令内容(如AT命令、PPP帧等,具体由设备支持的协议决定) |
示例
主机向CDC调制解调器接口发送AT命令:
- bmRequestType: 0x21
- bRequest: 0x00
- wValue: 0x0000
- wIndex: 0x0001(假设接口号为1)
- wLength: 4
- Data: “AT\r\n”(ASCII码)
// USB控制请求结构体
typedef struct _USB_SETUP_PACKET {
uint8_t bmRequestType;
uint8_t bRequest;
uint16_t wValue;
uint16_t wIndex;
uint16_t wLength;
} USB_SETUP_PACKET;
SendEncapsulatedCommand示例
USB_SETUP_PACKET setup = {
.bmRequestType = 0x21,
.bRequest = 0x00,
.wValue = 0x0000,
.wIndex = interface_number,
.wLength = data_length
};
// 发送setup包和data阶段数据