现在的位置: 首页 > 综合 > 正文

USB描述符

2013年12月13日 ⁄ 综合 ⁄ 共 5490字 ⁄ 字号 评论关闭

USB设备的属性通过一组描述符来反映它们,这些描述符是具有一定格式的数据结构,主机软件可通过GET_DESCRIPTOR请求获取这些描述符。每一个描述符的第一个字节表明本描述符的长度,其后是一个字节的描述符类型信息。如果描述符之中的长度域值少于本说明的定义,此描述符被认为非法,不能被主机接收;如果返回的描述符中的长度域值大于本说明定义,则过长部分被忽略。USB设备描述符类型如表所示:

USB设备描述符类型

类型                                          说明

设备                                   描述整个设备

配置                                   描述设备的一个配置

接口                                   描述配置中的一个接口

端点                                   描述接口中的一个端点

                  一个Unicode串,该串用自然语言描述设备、配置、接口和端点

       设备描述符是表征对该设备及所有设备配置起全程作用的信息。在设备枚举时,主机使用GET_DESCRIPTOR控制指令直接从设备端点0读取该描述符。一个USB设备只能有一个设备描述符。

                                          设备描述符

偏移量           字段名称              字段大小              字段              值说明

0                  bLength                        1B                 数字              描述符的大小=12H

1                  bDescriptorType           1B                 常数              设备描述符类型=01H

2                   bcdUSB                        2B                 BCD              USB规划发布号

4                   bDeviceClass                1B                 类型              类型代码

5                   bDeviceSubClass           1B                 子类型           子类型代码

6                   bDeviceProtocol            1B                 协议              协议代码

7                   bMaxPacketSize0          1B                 数字              端点0最大分组大小

8                   idVendor                       2B                 ID                 供应商ID

10                  idProduct                            2B                 ID                 产品ID

12                  bcdDevice                    2B                 BCD              设备出厂编号

14                  iManuafacturer              1B                 索引              厂商字符串索引

15                  iProduct                       1B                 索引              产品字符串索引

16                  iSeriaNumber                1B                 索引              设备序列号字符串索引

17                  bNumconfiguration        1B                 索引              可能的配置数

       配置描述符用于表征设备能实现的各种配置方式。表给出了设备配置描述符的数据结构。每个设备有一个或多个配置描述符,每个配置描述符给出了此配置下的接口数,每个接口可独立操作。当主机发出请求获取配置描述符时,所有相关接口与端点的描述符都被返回。一个USB设备有一个或多个配置,每个配置能有一个或多个接口。而每个接口又有0个或多个端点。一个端点不会在一个配置下的接口之间共享,除非端点被同一个接口的不同设置使用。在不同配置下的端点,可无此限制。一个配置设置好后,设备可支持对配置的有限调整,如果一个接口有备选设置,在配置好后可选择不同的设置。

                                   配置描述符

偏移              字段名称              字段大小              字段值           说明

0                   bLength                 1B                        数字              描述符大小=09H

1                   bDescriptor           1B                        常数              配置描述符类型=02H

2                   wTotalLength         2B                        数字              返回整个数据的长度,

包括该配置所返回的所有描述符(配置、接口、端点和类型或供应商)的联合长度

4                   bNumInterfaces            1B          数字              配置所支持的接口参数

5                   bConfiguration              1B          数字              作为Set Configuration的一个

参数选择配置

6                   iConfiguration               1B          数字              用于描述该配置字符串描述符

                                                                                           的索引

7                   bmAttributes                 1B          位图              配置特性

                                                                                           D7:总线供电

                                                                                           D6:自供电

                                                                                           D5:远程唤醒

                                                                                           D4…0:保留(复位为0

8                   MaxPower                    1B          mA                当设备完全可操作时,在这种特

定配置下,总线供电的USB

备的最大消耗电流(2mA

单位)

       接口描述符用于表征设备提供的接口功能,每个配置有一个或多个接口描述符。接口描述符总是作为配置描述符的一部分被返回,如果一个配置支持不止一个接口,端点的描述符会跟在接口描述符后被返回。接口描述符不可直接用SET_DESCRIPTORGET_DESCRIPTOR请求访问。如果一个接口包含备选设置,则端点或它们的特性在设备配置后可以改变。一个接口的默认配置总是可选设置。SET_INTERFACEGET_INTERFACE请求用来选择与返回选择了的接口设置。可选的接口设置部分的设备配置能在其它接口进行操作的情况下改变。如果一个配置对于它的一个或多个接口有备选设置,每一设置包括一个独立接口描述符和相关端点。如果一个设备只支持单个接口,并且此接口有两个可选设置,配置描述符返回以后会紧跟着返回bInterfaceNumberbAlternateSetting域皆为。的第一个设置的接口描述符及相关的端点描述符,而随后是另一个设置接口描述符与端点描述符。第二个接口描述符的bInterfaceNumber域也应为。,但bAltenratesetting域应为1。如果一个接口仅使用端点0,则接口描述符以后就不再返回端点描述符,并且此接口表示的是一个请求接口,它使用连在端点0上的默认通道。在这种情况下bNumbeEnrdprtinis域应设置成0。表给出了接口描述符的数据结构。

接口描述符

偏移              字段名称              大小       取值              说明

0                   bLength                 1            数字              描述符大小=09H

1                   bDescriptorType    l             常数       接口描述符类型=04H

2                   bInterfaceNumber  l             数字              接口编号

3                   bAlternateSetting    l             数字       为上一个选择可供替换的设置

4                   bNumEndpoint       l             数字       使用的端点数目(端点0除外)

5                   blnterfaceClass       l             类型              类型代码

6                   bInterfaceSubClassl              子类              子类型代码

7                   bInterfaceProtocol  1            协议              协议代码

8                   lInterface               1            索引       字符串描述符的索引

       端点描述符用于主机决定每个端点的带宽需求。每个接口下的端点都有自己的描述符,每个端点的描述符总是作为配置描述符的一部分返回的,端点0不属于任何接口,且无描述符。表描述了端点描述符的结构:

端点描述符

偏移       字段名称              大小       取值              说明

0            bLength                 l             数字              描述符大小=07H

1            bDescriptorType    l             常数       接口描述符类型=05H

2            bEndPointAddress  l             端点       USB设备端点地址:

Bti.0…3::端点号

Bi4…6:保留,复位为0

Bti7:方向,0:OUI1: IN对于控制

端点可忽略

3            bmAttributes          1            位图       端点属性

Bit0…1

00控制01同步02批量03中断

 

4            wMaxPacketSize    2            数字       接收或发送的最大信息包的大小

5            bInterval                1            数字       轮询传送端点的时间间隔

       串描述符是可有可无的。如果一个设备无串描述符,所有其它描述符中有关串描述符的索引必须为0

      

抱歉!评论已关闭.