usb2.0中的标准设备请求 (Standard Device Requests)

1. 参考

本文所描述的信息来自 USB2.0规范《Universal Serial Bus Specification》9.3章和9.4章,有兴趣可以去阅读原文。
在这里插入图片描述

2. 概述

  • usb2.0规定USB设备必须通过 默认控制管道(Default Control Pipe) 响应主机的请求。
  • 请求是使用 控制传输(Control Transfers) 进行的。

    注:所有的usb设备都必须支持控制传输

  • 请求的内容设置包(Setup Packet)中发送到设备。每个(Setup Packet)有八个字节:
偏移量 (Offset)字段 (Field)大小 (Size)值 (Value)描述 (Description)
0bmRequestType 1Bitmap请求的特征:
D7: 数据传输方向
    0 = 主机到设备
    1 = 设备到主机
D6…5: 类型
    0 = 标准(Standard)
    1 = 类(Class)
    2 = 供应商(Vendor)
    3 = 保留
D4…0: 接收者
    0 = 设备(Device)
    1 = 接口(Interface)
    2 = 端点(Endpoint)
    3 = 其他
    4…31 = 保留
1bRequest 1Value特定请求(参见表9-3)
2wValue 2Value字大小字段,根据请求而变化
4wIndex 2Index或Offset字大小字段,根据请求而变化;通常用于传递索引或偏移量
6wLength 2Count如果有数据阶段,要传输的字节数
  • 本文仅关注 标准请求(Standard Requests), 类请求(Class Requests)供应商请求(Vendor Requests) 暂不讨论。

3. wIndex格式

  • wIndex字段通常在请求中用于指定端点或接口,需要遵守特定格式。

3.1 wIndex指定端点时的格式

D7D6D5D4D3D2D1D0
方向(Direction):
    0:OUT端点
    1:IN端点
保留(重置为零)端点编号(Endpoint Number)
D15D14D13D12D11D10D9D8
保留(重置为零)

3.2 wIndex指定接口时的格式

D7D6D5D4D3D2D1D0
接口编号(Interface Number)
D15D14D13D12D11D10D9D8
保留(重置为零)

4.标准设备请求 (Standard Device Requests)

4.1 标准设备请求 (Standard Device Requests)总表

bmRequestTypebRequestwValuewIndexwLengthData
00000000B
00000001B
00000100B
CLEAR_FEATURE(1)
清除设备或端点的特性
Feature Selector
特性选择器
0
Interface (接口)
Endpoint (端点)
0None
10000000BGET_CONFIGURATION(8)
获取当前设备配置值
001Configuration Value
当前使用的配置号
10000000BGET_DESCRIPTOR(6)
获取设备描述符
Descriptor Type (描述符类型)
and
Descriptor Index (描述符索引)
0
or
Language ID (语言ID)
Descriptor Length (描述符长度)Descriptor (描述符)
10000001BGET_INTERFACE(10)
获取当前接口的备用设置
0Interface (接口)1Alternate Interface (备用接口)
10000000B
00000001B
00000100B
GET_STATUS(0)
获取设备、接口或端点的状态
00
Interface (接口)
Endpoint (端点)
2Device (设备), Interface (接口), or Endpoint Status (端点状态)
00000000BSET_ADDRESS(5)
设置设备地址
Device Address (设备地址)00None
00000000BSET_CONFIGURATION(9)
设置设备配置
Configuration Value (配置值)00None
00000000BSET_DESCRIPTOR(7)
设置设备描述符
Descriptor Type (描述符类型)
and
Descriptor Index (描述符索引)
0
or
Language ID (语言ID)
Descriptor Length (描述符长度)Descriptor (描述符)
00000000B
00000001B
00000100B
SET_FEATURE(3)
设置设备或端点的特性
Feature Selector (特性选择器)0
Interface (接口)
Endpoint (端点)
0None
10000001BSET_INTERFAC(11)
设置接口的备用设置
Alternate Setting (备用设置)Interface (接口)0None
10000010BSYNCH_FRAME(12)
同步帧编号
0Endpoint (端点)2Frame Number (帧编号)

4.2 bRequest 具体数值

以下是将图片中的表格转换为Markdown格式,并在英文名后添加中文名后的结果:

bRequestValue
GET_STATUS (获取状态)0
CLEAR_FEATURE (清除功能)1
Reserved for future use (保留供将来使用)2
SET_FEATURE (设置功能)3
Reserved for future use (保留供将来使用)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

4.3 Descriptor Types 具体数值

描述符类型
设备 (DEVICE)1
配置 (CONFIGURATION)2
字符串 (STRING)3
接口 (INTERFACE)4
端点 (ENDPOINT)5
设备限定符 (DEVICE_QUALIFIER)6
其他速度配置 (OTHER_SPEED_CONFIGURATION)7
接口电源 (INTERFACE_POWER)8

注:INTERFACE_POWER描述符在当前版本的USB接口电源管理规范中定义。

5. 总结

本文仅仅介绍一下标准设备请求的格式,关于标准请求的详细信息再之后的文章中进行介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值