usb

USB 2.0

USB2.0协议是一种高速串行的通信协议,它采用4线系统,包括D+、D-差分信号线,VBUS和GND地线。

USB2.0协议支持低速(Low Speed)、全速(Full Speed)和高速(High Speed)三种不同的数据传输模式。以下是这三种模式的详细解释:

  1. 低速模式(Low Speed)

    • 传输速率:最高可达1.5Mbps。
    • 应用场景:主要用于低速设备,如键盘、鼠标等输入设备。
    • 特点:功耗低,对数据传输速度要求不高的设备常采用此模式。
  2. 全速模式(Full Speed)

    • 传输速率:最高可达12Mbps。
    • 应用场景:适用于大多数USB 1.1时代的设备,如早期的U盘、打印机等。
    • 特点:相比于低速模式,全速模式提供了更快的数据传输速度,但仍然适用于那些不需要极高传输速度的设备。
  3. 高速模式(High Speed)

    • 传输速率:最高可达480Mbps。
    • 应用场景:适用于需要高速数据传输的设备,如高清摄像头、外部硬盘等。
    • 特点:高速模式极大地提高了数据传输速度,使得USB 2.0能够满足现代设备对高速数据传输的需求。

需要注意的是,虽然USB 2.0协议支持这三种传输模式,但具体设备可能只支持其中的一种或几种模式。此外,USB 2.0还具有向下兼容的特性,即USB 2.0接口可以支持USB 1.1和USB 1.0的设备。

标准请求

标准USB请求(Standard USB Requests)是USB协议中定义的一组通用请求,用于与USB设备通信并控制其操作。这些请求通常由主机发送到设备,设备根据请求的类型和参数执行相应的操作。如下所示:

OffsetFieldSizeValueDescription
0bmRequestType1请求类型,包括方向(D7)、类型(D6-D5)和接收者(D4-D0)。
1bRequest1请求代码,标识具体要执行的操作。
2wValue2请求的特定值或参数,其意义取决于请求代码。
4wIndex2索引或选择符,用于标识特定的接口、端点或其他资源。
6wLength2期望从设备接收的数据长度(对于IN方向请求)或发送到设备的数据长度(对于OUT方向请求)。

设备描述符

USB设备描述符是USB协议中用于描述USB设备特性和属性的数据结构。如下表所示:

OffsetFieldSizeValueDescription
0bLength10x12描述符的长度,以字节为单位
1bDescriptorType11描述符的类型,1表示设备描述符
2bcdUSB20x0200USB版本号,此处表示USB 2.0
4bDeviceClass10x00设备类别,0x00表示该字段由接口描述符定义
5bDeviceSubClass10x00设备子类,0x00表示该字段由接口描述符定义
6bDeviceProtocol10x00设备协议,0x00表示该字段由接口描述符定义
7bMaxPacketSize0164端点0的最大包大小,以字节为单位
8idVendor2XXXX厂商ID,由厂商指定
10idProduct2YYYY产品ID,由厂商指定
12bcdDevice2ZZZZ设备版本号,由厂商定义
14iManufacturer1厂商字符串描述符的索引值
15iProduct1产品字符串描述符的索引值
16iSerialNumber1序列号字符串描述符的索引值,可选
17bNumConfigurations1支持的配置描述符数量

配置描述符

USB配置描述符用于描述USB设备的配置信息,它包含了设备的配置集合,每个配置可能包括一个或多个接口。如下表所示:

OffsetFieldSizeValueDescription
0bLength10x09描述符的长度,以字节为单位。对于配置描述符,通常是9字节(基本配置描述符)加上每个接口描述符的长度。
1bDescriptorType10x02描述符类型,对于配置描述符,值为2。
2wTotalLength2配置描述符的总长度,包括所有接口描述符、端点描述符等附加描述符的长度。
4bNumInterfaces1此配置支持的接口数量。一个USB设备可以有一个或多个接口,每个接口对应一种设备功能。
5bConfigurationValue1选择此配置的索引值。当主机选择配置时,会使用这个值。
6iConfiguration1描述此配置的字符串描述符的索引。这个字符串描述符通常包含有关此配置的描述性信息。
7bmAttributes1配置的特性,如是否支持远程唤醒等。
8MaxPower1设备从总线获取的最大电流,以2mA为单位。例如,值50表示设备最大可以从总线获取100mA的电流。

接口描述符

接口描述符提供了关于USB设备中特定接口的信息,每个接口代表设备的一种功能或特性。如下表所示:

OffsetFieldSizeValueDescription
0bLength19描述符的长度,以字节为单位,对于接口描述符通常是9字节。
1bDescriptorType14描述符类型,对于接口描述符,值为4。
2bInterfaceNumber1接口的编号,用于区分设备的不同接口。
3bAlternateSetting1备用设置的编号。当接口有多个配置时,可以使用不同的备用设置。
4bNumEndpoints1该接口使用的端点数量(不包括端点0)。
5bInterfaceClass1接口的类别代码,用于标识接口的类型或功能。
6bInterfaceSubClass1接口的子类别代码,进一步细分接口的类型或功能。
7bInterfaceProtocol1接口的协议代码,定义接口使用的通信协议或方法。
8iInterface1描述该接口的字符串描述符的索引。这个字符串通常包含接口的描述性信息。

端点描述符

端点描述符提供了关于USB设备中特定端点的信息,端点是数据传输的通道。以下是一个端点描述符的表格展示,按照Offset(偏移量)、Field(字段名)、Size(大小)和Description(描述)进行排列:

OffsetFieldSizeValueDescription
0bLength17描述符的长度,以字节为单位,对于端点描述符通常是7字节。
1bDescriptorType15描述符类型,对于端点描述符,值为5。
2bEndpointAddress1端点的地址,包括方向和编号。D7表示方向(0为OUT,1为IN),D6-D0为端点编号。
3bmAttributes1端点的属性,如传输类型(控制、中断、批量或同步)。
4wMaxPacketSize20x0040/0x0100端点可以处理的最大数据包大小(以字节为单位)。
6bInterval1对于中断类型的端点,这是轮询间隔。对于其他类型的端点,此值通常被忽略。

USB 3.0