USB2.0之设备请求(Device Requests)


  所有USB设备都要响应USB主机通过默认控制管道发送过来的请求(Requests),USB协议定义了一个8字节的标准请求,主要用在设备的枚举过程中。这8字节的数据是在控制传输的SETUP阶段发送给默认控制端点0的。在这8字节的数据中,包含了DATA阶段数据传输的方向、长度、类型等信息。

设备请求的数据结构

  在控制传输的SETUP阶段,会发送一个DATA0 Packet,该数据包的内容就是设备请求,大小为8 byte。
SETUP阶段

设备请求的含义

建立阶段的数据格式

bmRequestType

大小为1 byte,分成三部分。
[7]:这1 bit指定接下来的数据阶段的数据传输方向。0:主机到设备。1:设备到主机
[6:5]:请求类型。 0:标准请求。 1:类请求。 2:厂商自定义请求。 3:预留。
[4:0]:请求的接收者。0:设备。 1:接口。 2:端点。 3:其它。 4~31:预留。

bRequest

大小为1 byte,记录请求代码。

标准设备请求代码

请求代码

wValue

大小为2 byte,具体含义由具体的请求决定。

wIndex

大小为2 byte,具体含义由具体的请求决定。通常是指定端口或者接口。

wIndex用于指定端口时的格式

wIndex用于指定端口时的格式

wIndex用于指定接口时的格式

wIndex用于指定接口时的格式

wLength

大小为2 byte,指定数据阶段数据传输的字节数。

标准设备请求

USB定义了11个标准设备请求,如下图所示。

标准设备请求

标准设备请求

1 Clear Feature

该请求用于关闭某个特定功能。
Clear Feature
功能选择器只在启动或者设置某个功能时使用

标准功能选择器

Standard Feature Selectors

2 Get Configuration

该请求获取当前的设备配置值。返回数据只有1 byte,如果是值为0,表示设备没有配置。
Get Configuration

3 Get Descriptor

该请求用于获取描述符。描述符记录了设备的很多信息,设备拥有多种描述符,具体类别如下图所示。这是枚举过程使用次数最多的请求。
Get Descriptor
Descriptor Types

4 Get Interface

Get Interface

5 Get Status

该请求获取特定接收方(设备/接口/端点)的状态。
Get Status

6 Set Address

该请求为设备分配地址。
Set Address

7 Set Configuration

该请求为设备选择一种配置。大多数设备只有1种配置。
Set Configuration

8 Set Descriptor

该请求可以更新描述符或者添加新的描述符
Set Descriptor

9 Set Feature

该请求用于启动某项特定功能。
Set Feature

10 Set Interface

Set Interface

11 Synch Frame

该请求用于获取端点帧号。
Synch Frame

参考资料

  • Universal Serial Bus Specification Revision 2.0 ,April 27, 2000
  • USB in a Nutshell
  • 《圈圈教你玩USB》 刘荣编著 2009.1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值