bboyer
192

EZ-USB FX3 USB配置信息文档

概要

在USB总线接口协议中, 规定了一些标准的USB描述符。对于USB设备来说,有些USB描述符是必须的,例如设备描述符,配置描述符, 字符串描述符,接口描述符和端点描述符。其余一些描述符并非必须,只有在特定USB设备中使用, 例如设备限定描述符和其他速率配置描述符用于高速USB设备, OTG设备描述符用于USB OTG外设, 而超高速端点伴侣描述符用于超高速USB设备等等。 因此我们有必要了解其对应的描述符信息。

描述符类型 英文 是否必须
设备描述符 Device 1
配置描述符 Configuration 2
字符串描述符 String 3
接口描述符 Interface 4
端点描述符 Endpoint 5
设备限定符 Device Qualifier 6
其他速率配置描述符 Other Speed Configuration 7
接口功率描述符 Interface Power 8
OTG设备描述符 OTG 9
调试描述符 DEBUG 10
接口相关描述符 Interface Association 11
BOS描述符 Binary Device Object Store(BOS) 15
设备能力描述符 Device Capability 16
超高速端点伴侣描述符 Superspeed USB Endpoint Companion 48

USB 描述符其实就是一个数据集合,用来表征 USB 设备某一方面的功能。 USB 协议中严格规定了每一种描述符的数据格式。各个 USB 描述符均由一系列具有固定排列顺序的字段构成。通常来说, bLength 为第一个字段,表示该描述符的长度; bDescriptorType 为第二个字段,表示该描述符的类型。在描述符的定义中,往往采用特定的前缀字符来表示该字符的类型和长度,包括如下几类:

  • 前缀字符 b:表示一个字节(8b);
  • 前缀字符 w:表示一个字(16b);
  • 前缀字符 bm:表示按位寻址;
  • 前缀字符 bcd:表示采用二进制编码的 10 进制数;
  • 前缀字符 i:表示索引值;
  • 前缀字符 id:表示标识码。

USB 描述符是深入学习 USB 开发所必须首要掌握的。

设备描述符

USB 设备描述符是每个 USB 设备所必需包含的,并且一个 USB 设备只能有一个设备描 述符。 USB 设备描述符用于表示 USB 设备的总体信息,包括 USB 规范版本号、产品 ID、供应商 ID、设备版本号等信息。 USB 设备描述符中的信息对于整个设备是完全有效的,而无关配置和接口的数量。

USB 设备描述符由 14 个字段按照固定的顺序组成,该描述符的总长度固定为 18 个字节。USB 设备描述符各个字段的格式,如表所示。

字段名 长度/字节 地址偏移量 说明
bLength 1 0 描述符的长度,固定值12H字节
bDescriptorType 1 1 描述符的类型:设备描述符=01H
bcdUSB 2 2 USB规范版本号(采用BCD码)
bDeviceClass 1 4 USB类代码
bDeviceSubClass 1 5 USB子类代码
bDeviceProtocol 1 6 协议代码
bMaxPackerSize0 1 7 端点0支持最大数据包的长度
idVendor 2 8 供应商ID
idProduct 2 10 产品ID
bcdDevice 2 12 设备版本号(采用BCD码)
iManufacturer 1 14 供应商字符串描述符的索引值
iProduct 1 15 产品字符串描述符的索引值
iSerialNumber 1 16 设备序列号字符串描述符的索引值
bNumConfigurations 1 17 该设备支持的配置数

1.bLength 字段

bLength 字段用于表示 USB 设备描述符的长度,长度占用 1 个字节,地址偏移量为 0。 对于 USB 设备描述符来说, bLength 字段的值固定为 18,也就是 12H。

2.bDescriptorType 字段

bDescriptorType 字段用于表示 USB 描述符的类型值,长度占用 1 个字节,地址偏移量为1。对于 USB 设备描述符来说, bDescriptorType 字段的值固定为 01H。

3.bcdUSB 字段

bcdUSB 字段用于表示该 USB 设备所遵循的 USB 规范版本号,长度占用 2 个字节,地 址偏移量为 2。 bcdUSB 字段以 BCD 码的形式表示,其格式为 0xAABC,这里各个符号的含义如下:

  • AA:主版本号。
  • B:次版本号。
  • C:子次版本号。

例如,对于高速 USB 设备来说,其版本为 USB 2.0,对应的 bcdUSB 字段设置为 0200H。

4.bDeviceClass 字段

bDeviceClass 字段用于表示该 USB 设备所属的标准设备类,长度占用 1 个字节,地址偏 移量为 4。 bDeviceClass 字段的值代表了不同的设备类:

  • bDeviceClass 字段值在 01~FEH 之间的时候,表示该设备为 USB 协议中预定义的某个标准设备类,例如 03H 表示 HID 设备类。
  • bDeviceClass 字段为 0 时,表示 USB 设备包含多个接口,各个接口互相独立,分别属于不同的设备类。此时,需要在 USB 固件接口描述符中进一步定义。
  • bDeviceClass 字段为 FFH 时,表示由用户自定义该设备类的类型。

5.bDeviceSubClass 字段

bDeviceSubClass 字段用于表示 USB 设备所属的标准设备子类,长度占用 1 个字节,地 址偏移量为 5。 bDeviceSubClass 字段主要用于对 USB 设备类进行了更加细致的定义,其值随bDeviceClass 字段的不同而有所区别:

  • 当 bDeviceClass 字段值在 01~FEH 之间的时候, bDeviceSubClass 字段表示标准设备类的子类。例如对于前面的 HID 设备类,只有一个子类代码 01H。而对于显示设备类(04H),子类代码 01H 表示 CRT 显示器、 02H 表示平面显示器、 03H 表示 3D显示器。
  • 当 bDeviceClass 字段值为 0 时, bDeviceSubClass 字段也必须为 0;
  • 当bDeviceClass字段值为FFH 时, bDeviceSubClass 字段必须由用户自定义设备子类。

6. bDeviceProtocol 字段

bDeviceProtocol 字段用于表示 USB 设备所采用的设备类协议,长度占用 1 个字节,地址偏移量为 6。 bDeviceProtocol 字段的值和 bDeviceClass 及 bDeviceSubClass 的值有关。

  • 如果该 USB 设备属于某个设备类和设备子类,则应该在 bDeviceProtocol 字段继续指名所采用的设备类协议。
  • 当 bDeviceProtocol 字段为 0 时,表示不使用任何设备类协议。
  • 当 bDeviceProtocol 字段为 FFH 时,表示设备类协议由用户自定义。

7. bMaxPackerSize0 字段

bMaxPackerSize0 字段用于表示在 USB 设备中,端点 0 所支持最大数据包的长度,长度 占用 1 个字节,地址偏移量为 7。 bMaxPackerSize0 字段以字节为单位,对于不同速率的设备 而不同:

  • 对于低速 USB 设备, bMaxPackerSize0=8。
  • 对于全速 USB 设备, bMaxPackerSize0=8、 16、 32 或 64。
  • 对于高速 USB 设备, bMaxPackerSize0=64。
  • 对于超速 USB 设备, bMaxPackerSize0=512。

8. idVendor 字段

idVendor 字段用于表示 USB 设备的供应商 ID,长度占用 2 个字节,地址偏移量为 8。 USB-IF 组织中规定,每种 USB 设备都必须包含一个供应商 ID,这样可以使主机为其寻找和加载合适的驱动程序。

9. idProduct 字段

idProduct 字段用于表示 USB 设备的产品 ID,长度占用 2 个字节,地址偏移量为 10。 idProduct 字段由设备供应商提供,用于表示某个供应商的特定 USB 设备。在 USB 设备上电的时候,该字段可以帮助 USB 主机选择合适的驱动程序。

10. bcdDevice 字段

bcdDevice 字段用于表示 USB 设备的版本号,长度占用 2 个字节,地址偏移量为 12。 bcdDevice 字段以 BCD 码的形式表示,一般来说该字段由设备供应商指定。在 USB 设备上电的时候,该字段可以帮助 USB 主机选择合适的驱动程序。

11. iManufacturer 字段

iManufacturer 字段用于表示供应商字符串描述符的索引值,长度占用 1 个字节,地址偏 移量为 14。 iManufacturer 字段所指向的具体字符串内容在后面字符串描述符中定义。 iManufacturer 字段为 0,表示没有供应商字符串。

12. iProduct 字段

iProduct 字段用于表示产品字符串描述符的索引值,长度占用 1 个字节,地址偏移量为 15。 iProduct 字段所指向的具体字符串内容在后面字符串描述符中定义。 iProduct 字段为 0,表示没有产品字符串。

13. iSerialNumber 字段

iSerialNumber 字段用于表示设备序列号字符串描述符的索引值,长度占用 1 个字节,地 址偏移量为 16。 iSerialNumber 字段所指向的具体字符串内容在后面字符串描述符中定义。iSerialNumber 字段为 0,表示没有设备序列号字符串。

14. bNumConfigurations 字段

bNumConfigurations 字段用于表示该 USB 设备所支持的配置数,长度占用 1 个字节,地 址偏移量为 17。如果 USB 设备仅有一个配置,则 bNumConfigurations=1,具有多个配置时该值可以大于 1。

配置描述符

在 USB 总线接口协议中, USB 配置描述符描述了 USB 设备的配置信息,包括接口数量、功耗等信息。每个 USB 设备都必须有一个配置描述符。另外,一个 USB 设备还可以有多个配置,但是每次传输过程仅使用其中的一个配置信息来完成。

USB 配置描述符由 8 个字段按照固定的顺序组成,该描述符的总长度固定为 9 个字节。USB 配置描述符各个字段的格式,如表 所示。

字段名 长度/字节 地址偏移量 说明
bLength 1 0 描述符的长度,固定值09H字节
bDescriptorType 1 1 描述符的类型:配置描述符=02H
wTotalLength 2 2 配置信息的总长度
bNumInterfaces 1 4 该配置所支持的接口数
bConfigurationValue 1 5 配置值
iConfiguration 1 6 字符串描述符的索引值
bmAttributes 1 7 配置特性
bMaxPower 1 8 所需要的最大总线电流(2mA为单位)

下面详细说明 USB 配置描述符各个字段的具体含义:

1. bLength 字段

bLength 字段用于表示 USB 配置描述符的长度,长度占用 1 个字节,地址偏移量为 0。对于 USB 配置描述符来说, bLength 字段的值固定为 9,也就是 09H。

2. bDescriptorType 字段

bDescriptorType 字段用于表示 USB 描述符的类型值,长度占用 1 个字节,地址偏移量为1。对于 USB 配置描述符来说, bDescriptorType 字段的值固定为 02H。

3. wTotalLength 字段

wTotalLength 字段用于表示配置信息的总长度,长度占用 2 个字节,地址偏移量为 2。 wTotalLength 字段所设置的数值必须包括配置描述符、接口描述符和端点描述符长度的总和。

4. bNumInterfaces 字段

bNumInterfaces 字段用于表示配置所支持的接口数,长度占用 1 个字节,地址偏移量为 4。 一般来说, USB 设备的接口数大于等于 1,因此其最小值为 1。

5. bConfigurationValue 字段

bConfigurationValue 字段用于表示 USB 设备的配置值,长度占用 1 个字节,地址偏移量为 5。

6. iConfiguration 字段

iConfiguration 字段用于指出配置字符串描述符的索引值,长度占用 1 个字节,地址偏移量为 6。 iConfiguration 字段所包含的具体字符串内容在后面字符串描述符中定义。如果没有配置字符串, iConfiguration 字段可以置为 0。

7. bmAttributes 字段

bmAttributes 字段用于表示 USB 设备的配置特性,长度占用 1 个字节,地址偏移量为 7。bmAttributes 字段是按位寻址的,各个位的含义如下:

  • D0~D4:保留值,一般置为 0。
  • D5:设置为 1 表示支持远程唤醒功能,否则不支持。
  • D6:设置为 1 表示自供电,否则不支持。
  • D7:设置为 1 表示总线供电,否则不支持。

8. bMaxPower 字段

bMaxPower 字段用于表示 USB 设备运行时,所需要消耗的总线电流,长度占用 1 个字节,地址偏移量为 8。 bMaxPower 字段所设置数值的单位以 2mA 为基准。需要注意的是,不同的版本支持的最大电流不同, bMaxPower 字段可以设置的值也不同。

  • 高速 USB 2.0 设备可以从 USB 总线上获得最大的电流为 500mA,因此 bMaxPower字段的最大值可以设置为 250。
  • 超速 USB 3.0 设备可以从 USB 总线上获得最大的电流为 900mA,因此 bMaxPower字段的最大值可以设置为 450。

字符串描述符

USB 字符串描述符用于保存一些供应商名称、产品序列号等文本信息。在 USB 总线接口协议中, USB 字符串描述符并不是必须的,设计者可以根据需要设置、增加或者减少。

USB 字符串描述符由 3 个字段按照固定的顺序组成,该描述符的总长度不是固定的,其长度随字符串的数量和信息的长度而变化。 USB 字符串描述符各个字段的格式,如表所示。

字段名 长度/字节 地址偏移量 说明
bLength 1 0 描述符的长度(N+2字节)
bDescriptorType 1 1 描述符的类型:字符串描述符=03H
bString N 2 字符串

下面详细说明 USB 字符串描述符各个字段的具体含义:

1. bLength 字段

bLength 字段用于表示 USB 字符串描述符的长度,长度占用 1 个字节,地址偏移量为 0。 对于 USB 字符串描述符来说, bLength 字段的值不固定。如果所列字符串的长度为 N,那么 bLength 字符需要设置为 N+2。

2. bDescriptorType 字段

bDescriptorType 字段用于表示 USB 字符串描述符的类型值,长度占用 1 个字节,地址偏 移量为 1。对于 USB 字符串描述符来说, bDescriptorType 字段的值固定为 03H。

3. bString 字段

bString 字段是存储的字符串,长度不固定,地址偏移量为 2。 bString 字段采用 UNICODE 编码来存储各个字符。

注意: USB 字符串描述符可以包含多个。

接口描述符

USB 接口描述符是每个 USB 设备所必需包含的,接口描述符用来表示在 USB 设备中各个接口的特性,包括接口的端点个数、所属的设备类和子类等。在 USB 总线接口协议中,所谓“接口”就是一个 USB 端点的集合。通过 USB 接口,可以完成 USB 设备的特定功能,例如数据输入、输出等等。

USB 接口描述符由 9 个字段按照固定的顺序组成,该描述符的总长度固定为 9 个字节。USB 接口描述符各个字段的格式,如表所示。

字段名 长度/字节 地址偏移量 说明
bLength 1 0 描述符的长度(09H字节)
bDescriptorType 1 1 描述符的类型:接口描述符=04H
bInterfaceNumber 1 2 接口号
bAlterateSetting 1 3 可替换设置值
bNumEndpoints 1 4 端点0以外的端点数
bInterfaceClass 1 5 类代码
bInterfaceSubClass 1 6 子类代码
bInterfaceProtocol 1 7 协议代码
iInterface 1 8 字符串描述符的索引值

下面详细说明 USB 接口描述符各个字段的具体含义

1. bLength 字段

bLength 字段用于表示 USB 接口描述符的长度,长度占用 1 个字节,地址偏移量为 0。对于 USB 接口描述符来说, bLength 字段的值固定为 9,也就是 09H。

2. bDescriptorType 字段

bDescriptorType 字段用于表示 USB 描述符的类型值,长度占用 1 个字节,地址偏移量为1。对于 USB 接口描述符来说, bDescriptorType 字段的值固定为 04H。

3. bInterfaceNumber 字段

bInterfaceNumber 字段用于表示接口的接口号,长度占用 1 个字节,地址偏移量为 2。

4. bAlterateSetting 字段

bAlterateSetting 字段用于表示接口的可替换设置值,长度占用 1 个字节,地址偏移量为3。

5. bNumEndpoints 字段

bNumEndpoints 字段用于表示接口所使用的端口数,长度占用 1 个字节,地址偏移量为4。这里需要注意, bNumEndpoints 字段所设置的数值是除端点 0 以外的所有端点总数。

6. bInterfaceClass 字段

bInterfaceClass 字段用于表示接口所属的设备类,长度占用 1 个字节,地址偏移量为 5。 bInterfaceClass 字段的取值含义如下:

  • 当 bInterfaceClass 字段为 01~FEH 时,表示该接口属于 USB 定义的某个设备类。
  • 当 bInterfaceClass 字段为 FFH 时,表示该设备类是供应商自定义的。

7. bInterfaceSubClass 字段

bInterfaceSubClass 字段用于表示接口所属的 USB 设备子类,长度占用 1 个字节,地址偏移量为 6。 bInterfaceSubClass 字段的值与 bInterfaceClass 字段的值相关。

  • 当 bInterfaceClass 字段为 0 时, bInterfaceSubClass 字段必须为 0。
  • 如果 bInterfaceClass 字段为 01~FEH 之间, bInterfaceSubClass 字段需进一步表示设备子类。
  • 如果 bInterfaceClass 字段为 FFH 时,则需要由供应商自定义设备子类。

8. bInterfaceProtocol 字段

bInterfaceProtocol 字段用于表示接口所采用的 USB 设备类协议,长度占用 1 个字节,地址偏移量为 7。 bInterfaceProtocol 字段的值和 bInterfaceClass 及 bInterfaceSubClass 的值有关。

  • 当 bInterfaceProtocol 字段为 0 时,表示不使用任何设备类协议。
  • 当 bInterfaceProtocol 字段为 01~FEH 时,表示该 USB 设备属于某个设备类和设备子类,则应该继续指名所采用的设备类协议。
  • 当 bInterfaceProtocol 字段为 FFH 时,则需要由供应商自定义设备类协议。

9. iInterface 字段

iInterface 字段用于指出接口字符串描述符的索引值,长度占用 1 个字节,地址偏移量为8。 iInterface 字段所设置具体字符串的内容在后面字符串描述符中定义。如果没有接口字符串,可以置为 0。

端点描述符

USB 端点描述符是每个 USB 设备所必需包含的, USB 端点是 USB 数据传输的通道。USB 端点描述符表示了 USB 设备端点的特性,包括其所支持的传输类型、传输方向等信息。在 USB 总线接口协议中规定,端点 0 没有端点描述符,其余每一个端点都必须包含一个端点描述符。

USB 端点描述符由 6 个字段按照固定的顺序组成,该描述符的总长度固定为 7 个字节。USB 端点描述符各个字段的格式,如表所示

字段名 长度/字节 地址偏移量 说明
bLength 1 0 描述符的长度(07H字节)
bDescriptorType 1 1 描述符的类型:端点描述符=05H
bEndpointAddress 1 2 端点号、传输方向
bmAttributes 1 3 端点特性
wMaxPacketSize 2 4 最大数据包长度
bInterval 1 6 访问间隔

1. bLength 字段

bLength 字段用于表示 USB 端点描述符的长度,长度占用 1 个字节,地址偏移量为 0。对于 USB 端点描述符来说,bLength 字段的值固定为 7,也就是 07H。

2. bDescriptorType 字段

bDescriptorType 字段用于表示 USB 描述符的类型值,长度占用 1 个字节,地址偏移量为1。对于 USB 端点描述符来说,bDescriptorType 字段的值固定为 05H。

3. bEndpointAddress 字段

bEndpointAddress 字段用于表示端点的端点号以及端点的数据传输方向,长度占用 1 个字节,地址偏移量为 2。bEndpointAddress 字段采用按位寻址的方式,各位的含义如下:

  • D7 位表示端点的数据传输方向, 0 表示 OUT 数据传输, 1 表示 IN 数据传输。
  • D3~D0 位表示端点号,例如 001B 表示端点 1、 010B 表示端点 2 等。
  • 其余位均保留,必须置 0。

4. bmAttributes 字段

bmAttributes 字段用于表示端点的特性,长度占用 1 个字节,地址偏移量为 3。bmAttributes字段采用按位寻址的方式,各位的含义如下:

  • D1~D0 位表示端点的数据传输类型, 00B 表示控制传输、 01B 表示同步传输、 10B表示块传输、 11B 表示中断传输。
  • D3~D2 位进一步描述了不同的传输类型,例如如果是同步传输,这两位表示同步类型, 00B 表示非同步、 01B 表示异步、 10B 表示自适应、 11B 表示同步。
  • D5~D4 位表示端点的用法类型, 00B 表示数据端点、 01B 表示显示反馈端点、 10B表示隐式反馈端点、 11B 保留。
  • 其余位保留。

5. wMaxPacketSize 字段

wMaxPacketSize 字段用于表示端点所支持最大数据包的长度,长度占用 2 个字节,地址偏移量为 4。 wMaxPacketSize 字段采用按位寻址的方式,各位的含义如下:

  • D10~D0 位表示数据包长度。
  • D12~D11 位指出每小帧最多传输的事务处理数。
  • 其余位均保留,必须设置 0。

6. bInterval 字段

bInterval 字段用于指定端点数据传输的访问间隔,长度占用 1 个字节,地址偏移量为 6。对于不同的端点类型, bInterval 字段的取值可以参阅 USB 相关协议。例如:

  • 对于低速中断端点,取值范围为 10 ~ 255,对应的访问间隔为 10ms ~ 255ms。
  • 对于全速中断端点,取值范围为 1 ~ 255,对应的访问间隔为 1ms ~ 255ms。

设备限定符

USB 限定描述符用以指出另一传输速率下该设备的总体信息,其并非必须的,常用于多种速率传输时使用。例如,在高速 USB 2.0 系统中,如果 USB 设备既需要采用高速传输又需要全速传输,则其必须支持设备限定描述符。

USB 设备描述符由 9 个字段按照固定的顺序组成,该描述符的总长度固定为 10 个字节。USB 设备描述符各个字段的格式,如表所示。

字段名 长度/字节 地址偏移量 说明
bLength 1 0 描述符的长度(0AH字节)
bDescriptorType 1 1 描述符的类型:设备限定描述符=06H
bcdUSB 2 2 USB规范版本号(采用BCD码)
bDeviceClass 1 4 类代码
bDeviceSubClass 1 5 子类代码
bDeviceProtocol 1 6 协议代码
bMaxPackerSize0 1 7 端点0所支持最大数据包的长度
bNumConfigurations 1 8 所支持的配置数
bReserved 1 9 保留

下面详细说明 USB 设备限定描述符各个字段的具体含义:

1. bLength 字段

bLength 字段用于表示 USB 设备限定描述符的长度,长度占用 1 个字节,地址偏移量为0。对于 USB 设备限定描述符来说, bLength 字段的值固定为 10,也就是 0AH。

2. bDescriptorType 字段

bDescriptorType 字段用于表示 USB 设备限定描述符的类型值,长度占用 1 个字节,地址偏移量为 1。对于 USB 设备限定描述符来说, bDescriptorType 字段的值固定为 06H。

3. bcdUSB 字段

bcdUSB 字段用于表示 USB 设备及其描述符所遵循的 USB 规范版本号,长度占用 2 个字节,地址偏移量为 2。 bcdUSB 字段采用 BCD 码的形式表示。由于需要在高速 USB 传输场合使用,因此 bcdUSB 字段的值必须在版本 2.0 以上。

4. bDeviceClass 字段

bDeviceClass 字段用于表示该 USB 设备所属的标准设备类,长度占用 1 个字节,地址偏移量为 4。 bDeviceClass 字段的值代表了不同的设备类:

  • bDeviceClass 字段值在 01~FEH 之间的时候,表示该设备为 USB 协议中预定义的某个标准设备类,例如 03H 表示 HID 设备类。
  • bDeviceClass 字段为 0 时,表示 USB 设备包含多个接口,各个接口互相独立,分别属于不同的设备类。此时,需要在 USB 固件接口描述符中进一步定义。
  • bDeviceClass 字段为 FFH 时,表示由用户自定义该设备类的类型。

5. bDeviceSubClass 字段

bDeviceSubClass 字段用于表示 USB 设备所属的标准设备子类,长度占用 1 个字节,地址偏移量为 5。 bDeviceSubClass 字段主要用于对 USB 设备类进行了更加细致的定义,其值随bDeviceClass 字段的不同而有所区别:

  • 当 bDeviceClass 字段值在 01~FEH 之间的时候, bDeviceSubClass 字段表示标准设备类的子类。例如对于前面的 HID 设备类,只有一个子类代码 01H。而对于显示设备类(04H),子类代码 01H 表示 CRT 显示器、 02H 表示平面显示器、03H 表示 3D显示器。
  • 当 bDeviceClass 字段值为 0 时, bDeviceSubClass 字段也必须为 0;
  • 当bDeviceClass字段值为FFH 时, bDeviceSubClass 字段必须由用户自定义设备子类。

6. bDeviceProtocol 字段

bDeviceProtocol 字段用于表示 USB 设备所采用的设备类协议,长度占用 1 个字节,地址偏移量为 6。 bDeviceProtocol 字段的值和 bDeviceClass 及 bDeviceSubClass 的值有关。

  • 如果该 USB 设备属于某个设备类和设备子类,则应该在 bDeviceProtocol 字段继续指名所采用的设备类协议。
  • 当 bDeviceProtocol 字段为 0 时,表示不使用任何设备类协议。
  • 当 bDeviceProtocol 字段为 FFH 时,表示设备类协议由用户自定义。

7. bMaxPackerSize0 字段

bMaxPackerSize0 字段用于表示在 USB 设备中,端点 0 所支持最大数据包的长度,长度占用 1 个字节,地址偏移量为 7。 bMaxPackerSize0 字段以字节为单位,对于不同速率的设备而不同:

  • 对于低速 USB 设备, bMaxPackerSize0=8。
  • 对于全速 USB 设备, bMaxPackerSize0=8、 16、 32 或 64。
  • 对于高速 USB 设备, bMaxPackerSize0=64。
  • 对于超速 USB 设备, bMaxPackerSize0=512。

8. bNumConfigurations 字段

bNumConfigurations 字段用于表示 USB 设备另一个速率所支持的配置数,长度占用 1 个字节,地址偏移量为 8。

9. bReserved 字段

bReserved 字段为保留项,必须置 0,其长度占用 1 个字节,地址偏移量为 9。

USB描述符 USB配置信息 USB FX3
发布于: 2022年6月16日