所有的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域指出那个接口或端节点。
2 bRequest域
这个域标识特别的请求。bmRequestType域的Type啦可修改此域的含义。本说明仅定义Type 字位为0即标准设备请求时bRequest域值的含义。
3 wValue域
此域用来传送当前请求的参数,随请求不同而变。
4 wIndex域
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) | ||||||||
图8-2. 所指为端点时wIndex 格式
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 | |
|
接口号 | ||||||||
|
D16 |
D15 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 | |
|
保留(为0) | ||||||||
图8-3. 所指为接口时WIndex 格式
5 wLength域
这个域表明第二阶段的数据传输长度。传输方向由bmRequstType域的Direction位指出。wLength域为0则表明无数据传输。在输入请求下,设备返回的数据长度不应多于wLength,但可以少于。在输出请求下,wLength指出主机发出的确切数据量。如果主机发送多于wLength的数据,设备做出的响应是无定义的。
7 标准设惫请求
这部分描述的所有USB设备都定义的标准设备请求,表8-3将它们列出,而表8-4、8-5分别结出了对应的标准请求码及描述表类型。
不管设备是否被分配了非缺省地址或设备当前是被配置了的,它们都应当对标准请求产生响应。
特性选择符被用来设置特性或使特性生效。比如说某个设备、接口、或结点的远程唤醒功能,特性选择符的值在表8-6中得到了说明。
对于非法请求的处理从前所述。但是非法请求并不会使得控制通道设置Halt特性。如果因为某种原因,设备因为一个错误状态不能通过缺省控制通道来与主机通信,设备必须被reset来清除错误状态并重启缺省通道。
|
bmRequestType |
bRequest |
wValue |
Windex |
wLength |
Data |
|
00000000B 00000001B 00000010B |
CLEAR_FEATURE |
特性选择符 |
零 接口号 端点号 |
零 |
无 |
|
10000000B |
GET_CONFIGURATION |
零 |
零 |
一 |
配置值 |
|
10000000B |
GET_DESCRIPTOR |
描述表种类和索引 |
零或语言标志 |
描述表长 |
描述表 |
|
10000001B |
GET_INTERFACE |
零 |
接口号 |
一 |
可选设置 |
|
10000000B 10000001B 10000010B |
GET_STATUS |
零
|
零 接口号 端点号 |
二 |
设备, 接口 ,或 端点状态 |
|
00000000B |
SET_ADDRESS |
设备地址 |
零 |
零 |
无 |
|
00000000B |
SET_CONFIGURATION |
配置值 |
零 |
零 |
无 |
|
00000000B |
SET_DESCRIPTOR |
描述表种类和索引 |
零或语言标志 |
描述表长 |
描述表 |
|
00000000B 00000001B 00000010B |
SET_FEATURE |
特性选择符 |
零 接口号 端点号 |
零 |
无 |
|
00000001B |
SET_INTERFACE |
可选设置 |
接口号 |
零 |
无 |
|
100000010B |
SYNCH_FRAME |
零 |
端点号 |
二 |
幀号 |
表8-3 标准设备请求
|
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 |
表8-4 标准请求码
|
描述表种类 |
值 |
|
DEVICE |
1 |
|
CONFIGURATION |
2 |
|
STRING |
3 |
|
INTERFACE |
4 |
|
ENDPOINT |
5 |
表8-5 描述表种类
|
特性选择符 |
接受者 |
值 |
|
DEVICE_REMOTE_WAKEUP |
设备 |
1 |
|
ENDPOINT_HALT |
端点 |
0 |
表8-6 标准特性选择符
本文详细介绍了USB设备如何通过控制传输处理主机请求。包括Setup数据包的格式及其各个字段的含义,如bmRequestType、bRequest等,并列举了标准设备请求及其参数。
1万+

被折叠的 条评论
为什么被折叠?



