USB之(三)USB描述符和命令(请求)

1、USB描述符

    USB协议为USB设备定义了一套描述设备功能和属性的有固定结构的描述符。USB设备通过这些描述符向USB主机汇报设备的各种各样属性,主机通过对这些描述符的访问对设备进行类型识别、配置并为其提供相应的客户端驱动程序。USB描述符是由特定格式排列的一组数据结构组成。USB描述符包含标准描述符、类描述符和厂商特定描述3种形式。标准描述符包括设备描述符(Device Descriptor)、配置描述符(Configuration Descriptor)、接口描述符(InterfaceDescriptor)、端点描述符(Endpoint Descriptor)和字符串描述符(String Descriptor)。类描述符包括集线器类描述符(HubDescriptor)和人机接口类描述符(HID)。

描述符类型bDescriptorType

类型

描述符

描述符值

标准描述符

设备描述符(Device Descriptor)

0x01

配置描述符(Configuration Descriptor)

0x02

字符串描述符(String Descriptor)

0x03

接口描述符(Interface Descriptor)

0x04

端点描述符(Endpoint Descriptor)

0x05

设备限定(Device Qualifier)

0x06

Other Speed Configuration

0x07

Interface Power

0x08

类描述符

集线器类描述符(Hub Descriptor)

0x29

人机接口类描述符(HID)

0x21

厂商定义的描述符

 

0xFF


    每个USB设备只有一个设备描述符,而一个设备中可包含一个或多个配置描述符,即USB设备可以有多种配置。设备的每一个配置中又可以包含一个或多个接口描述符,即USB设备可以支持多种功能(接口),接口的特性通过描述符提供。

    在USB主机访问USB设备的描述符时,USB设备依照设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符顺序将所有描述符传给主机。一设备至少要包含设备描述符、配置描述符和接口描述符,如果USB设备没有端点描述符,则它仅仅用默认管道与主机进行数据传输。

    在USB设备枚举过程中,主机端的协议软件需要解析从USB设备读取的所有描述符信息。在USB主向设备发送读取描述符的请求后,USB设备将所有的描述符以连续的数据流方式传输给USB主机。主机从第一个读到的字符开始,根据双方规定好的数据格式,顺序地解析读到的数据流。

1.1 设备描述符

    设备描述符具有18字节的长度,是主机向设备请求的第一个描述符。

USB设备描述符的结构

偏移量

大小

描述

0

bLength

1

设备描述符的字节数大小

1

bDescriptorType

1

描述符类型,设备描述符为0x01

2

bcdUSB

2

USB版本号

4

bDeviceClass

1

USB分配的设备类代码,0x01~0xfe为标准设备类,0xff为厂商自定义类型

5

bDeviceSubClass

1

USB分配的子类代码

6

bDeviceProtocol

1

USB分配的设备协议代码

7

bMaxPacketSize0

1

端点0的最大信息包大小

8

idVendor

2

制造商ID

10

idProduct

2

产品ID

12

bcdDevice

2

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值