usb device request
在usb 系统中device 中每个实现功能的endpoint在主机中定义为channel,而主机的某一channelh和devecie的特定endpoint配对构成以个pipe.所有的usb系统都是主机通过默认的Control Pipe 发送requeset 到device,device发送respond.
USB规范定义了11个标准命令,它们分别是:Clear_Feature、Get_Configuration、Get_Descriptor、Get_Interface、Get_Status、Set_Address、Set_Configuration、Set_Descriptor、Set_Interface、Set_Feature、Synch_Frame。所有USB设备都必须支持这些命令(个别命令除外,如Set_Descriptor、Synch_Frame)。
所有的命令虽然有不同的数据和使用目的,有的USB命令结构是一样的。下表所示为USB命令的结构:
USB 命令结构
偏移量 | 域 | 长度(字节) | 值 | 描述 |
---|
0 | bmRequestType | 0 | 位图 | 请求特征:D7:传输方向 0=主机至设备 1=设备至主机 D6..5:种类 0=标准 1=类 2=厂商 3=保留 D4..0:接受者 0=设备 1=接口 2=端点 3=其他 4..31 保留 |
1 | bRequest | 1 | 值 | 命令类型编码值(见表3) |
2 | wValue | 2 | 值 | 根据不同的命令,含义也不同 |
4 | wIndex | 2 | 索引或偏移 | 根据不同的命令,含义也不同,主要用于传送索引或偏 移 |
6 | wLength | 2 | 值 | 如有数据传送阶段,此为数据字节数。 |
11种标准命令
命令 | bmRequestType | bRequest | wValue | wIndex | wLength | Data |
---|
Clear_Feature | 00000000B 00000001B 00000010B | CLEAR_FEATURE | 特性选择符 | 零 接口号 端点号 | 零 | 无 |
Get_Configuration | 10000000B | GET_CONFIGURATION | 零 | 零 | 一 | 配置值 |
Get_Descriptor | 10000000B | GET_DESCRIPTOR | 描述表种类(高字节,见表5)和索引(低字节) | 零或语言标志 | 描述表长 | 描述表 |
Get_Interface | 10000001B | GET_INTERFACE | 零 | 接口号 | 一 | 可选设置 |
Get_Status | 10000000B 10000001B 10000010B | GET_STATUS | 零 | 零(返回设备状态) 接口号(对像时接口时) 端点号(对象是端点时) | 二 | 设备, 接口 ,或 端点状态 |
Set_Address | 00000000B | SET_ADDRESS | 设备地址 | 零 | 零 | 无 |
Set_Configuration | 00000000B | SET_CONFIGURATION | 配置值(高字节为0,低字节表示要设置的配置值) | 零 | 零 | 无 |
Set_Descriptor | 00000000B | SET_DESCRIPTOR | 描述表种类(高字节,见表5)和索引(低字节) | 零或语言标志 | 描述表长 | 描述表 |
Set_Feature | 00000000B 00000001B 00000010B | SET_FEATURE | 特性选择符(1表示设备,0表示端点) | 零 接口号 端点号 | 零 | 无 |
Set_Interface | 00000001B | SET_INTERFACE | 可选设置 | 接口号 | 零 | 无 |
Synch_Frame | 100000010B | SYNCH_FRAME | 零 | 端点号 | 二 | 帧号 |
标准命令的编码值
bRequest | Value |
---|
GET_STATUS | 0 | |
CLEAR_FEATURE | 1 |
为将来保留 | 2 |
SET_FEATURE | 3 |
为将来保留 | 4 |
SET_ADDRESS | 5 |
GET_DESCRIPTOR | 6 |
SET_DESCRIPTOR | 7 |
GET_CONFIGURATION | 8 |
SET_CONFIGURATION | 9 |
GET_INTERFACE | 10 |
SET_INTERFACE | 11 |
SYNCH_FRAME | 12 |