所有的USB设备在设备的缺省控制通道(Default Control Pipe)处对主机的请求发出响应。这些请求是通过使用控制传输来达到的,请求及请求的参数通过Setup包发向设备,由主机负责设置Setup包内的每个域的值。每个Setup包有8个字节。见表8-2。
偏移量 |
域 |
大小 |
值 |
描述 |
0 |
bmRequestType |
1 |
位图 |
请求特征: D7: 传输方向 0=主机至设备 1=设备至主机 D6..5: 种类 0=标准 1=类 2=厂商 3=保留 D4..0: 接受者 0=设备 1=接口 2=端点 3=其他 4..31=保留 |
1 |
bRequest |
1 |
值 |
具体请求(参见表8-3) |
2 |
wValue |
2 |
值 |
字长域,根据不同的请求含义改变. |
4 |
wIndex |
2 |
索引或偏移 |
字长域,根据不同的请求含义改变.典型用于传送索引或偏移. |
6 |
wLength |
2 |
|
如有数据传送阶段,此为数据字节数. |
表8-2 . Setup 数据包的格式
1 bmRequestType域
这个域表明此请求的特性。特别地,这个域表明了第二阶段控制传输方向。如果wLength域被设作0的话,表明没有数据传送阶段,那Direction位就会被忽略。
USB说明定义了一系列所有设备必须支持的标准请求。这些请求被例举在表8-3中。另外,一个设备类可定义更多的请求。设备厂商也可定义设备支持的请求。
请求可被导引到设备,设备接口,或某一个设备端结点(endpoint)上。这个请求域也指定了接收者。当指定的是接口或端结点(endpoint)时,wIndex域指出那个接口或端节点。
这个域标识特别的请求。bmRequestType域的Type啦可修改此域的含义。本说明仅定义Type 字位为0即标准设备请求时bRequest域值的含义。
此域用来传送当前请求的参数,随请求不同而变。
wIndex域用来表明是哪一个接口或端结点,图8-2表明wIndex的格式(当标识端结点时)。Direction位在设为0时表示出结点,设为1时表示是入结点,Endpoint Number是结点号。图8-3表明wIndex用于标识接口时的格式。
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
方向 |
保留(为0) |
端点号 |
||||||
D16 |
D15 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
|
保留(为0) |
||||||||
|