标准的USB设备请求命令是用在控制传输中的“初始设置步骤”里的数据包阶段(即DATA0,由八个字节构成),请看回问答四的内容。标准USB设备请求命令共有11个,大小都是8个字节,具备相同的结构,由5个字段构成(字段是标准请求命令的数据部分),结构以下(括号中的数字表示字节数,首字母bm,b,w分别表示位图、字节,双字节):spa
bmRequestType(1)+bRequest(1)+wvalue(2)+wIndex(2)+wLength(2)接口
各字段的意义以下:ip
一、bmRequestType:D7D6D5D4D3D2D1D0同步
D7=0主机到设备入门
=1设备到主机;class
D6D5=00标准请求命令配置
=01 类请求命令请求
=10用户定义的命令 问答
=11保留值数据
D4D3D2D1D0=00000 接收者为设备
=00001 接收者为设备
=00010 接收者为端点
=00011 接收者为其余接收者
=其余 其余值保留
二、bRequest:请求命令代码,在标准的USB命令中,每个命令都定义了编号,编号的值就为字段的值,编号与命令名称以下(要注意这里的命令代码要与其余字段结合使用,能够说命令代码是标准请求命令代码的核心,正是由于这些命令代码而决定了11个USB标准请求命令):
0) 0 GET_STATUS:用来返回特定接收者的状态
1) 1 CLEAR_FEATURE:用来清除或禁止接收者的某些特性
2) 3 SET_FEATURE:用来启用或激活命令接收者的某些特性
3) 5 SET_ADDRESS:用来给设备分配地址
4) 6 GET_DEscriptOR:用于主机获取设备的特定描述符
5) 7 SET_DEscriptOR:修改设备中有关的描述符,或者增长新的描述符
6) 8 GET_CONFIGURATION:用于主机获取设备当前设备的配置值(注同上面的不一样)
7) 9 SET_CONFIGURATION:用于主机指示设备采用的要求的配置
8) 10 GET_INTERFACE:用于获取当前某个接口描述符编号
9) 11 SET_INTERFACE:用于主机要求设备用某个描述符来描述接口
10) 12 SYNCH_FRAME:用于设备设置和报告一个端点的同步帧
这11个命令是重中之重,这个搞明白了,USB就算是入门了.