usb学习之一: USB协议

usb学习之一: USB协议

一、USB是什么

USB是“Universal Serial Bus”的缩写,中文意思是“通用串行总线”。它是一种广泛使用的接口技术,主要用于连接计算机与各种外部设备,如鼠标、键盘、打印机、摄像头、移动硬盘、手机等。

主要特点

通用性强:USB接口被几乎所有类型的计算机(包括台式机、笔记本电脑、平板电脑等)和大量外部设备所支持,是一种通用的连接标准。

即插即用:大多数USB设备在连接到计算机后,操作系统可以自动识别并安装相应的驱动程序,无需用户进行复杂的配置。

支持热插拔:用户可以在不关闭计算机电源的情况下插拔USB设备,方便使用。

传输速度快:USB技术不断更新,从最早的USB 1.0到现在的USB 3.2和USB4,传输速度大幅提升。例如,USB 3.2的理论传输速度最高可达20Gbps。

支持多种设备连接:通过USB集线器,可以连接多个设备,扩展计算机的外设连接能力。

应用场景

数据传输:用于连接存储设备(如U盘、移动硬盘)来传输文件。

外设连接:连接鼠标、键盘、打印机等外设。

充电功能:许多电子设备(如手机、平板电脑)通过USB接口充电。

通信功能:一些设备(如智能手机)可以通过USB接口与计算机进行数据通信。

二、USB通信流程

以下是 USB 通信的基本流程,从设备连接到数据传输的详细描述:

1. 设备连接

物理连接:用户将 USB 设备插入主机的 USB 接口。

硬件检测:主机检测到硬件连接的变化,识别到新设备的连接。

2. 设备枚举(Enumeration)

设备枚举是 USB 通信的核心步骤,主机通过一系列的交互来识别和配置新连接的设备。

步骤 1:复位设备

主机发送复位信号:主机向设备发送复位信号,使设备进入默认状态。

设备响应:设备在复位后进入默认地址(地址 0)。

步骤 2:获取设备描述符

主机发送 GET_DESCRIPTOR 请求:主机向设备发送 GET_DESCRIPTOR 请求,请求设备描述符。

bRequestType: 0x80(从设备到主机)

bRequest: 0x06(GET_DESCRIPTOR)

wValue: 0x0100(请求设备描述符)

wIndex: 0x0000

wLength: 0x0012(请求的描述符长度)

设备响应:设备返回设备描述符,包含以下信息:

idVendor(厂商 ID)

idProduct(产品 ID)

bcdDevice(设备版本)

iManufacturer(制造商字符串索引)

iProduct(产品字符串索引)

iSerialNumber(序列号字符串索引)

bNumConfigurations(配置数量)

步骤 3:分配设备地址

主机发送 SET_ADDRESS 请求:主机为设备分配一个唯一的地址(非 0 地址)。

bRequestType: 0x00(从主机到设备)

bRequest: 0x05(SET_ADDRESS)

wValue: 分配的设备地址

wIndex: 0x0000

wLength: 0x0000

设备响应:设备接受新地址,并在后续通信中使用该地址。

步骤 4:获取配置描述符

主机发送 GET_DESCRIPTOR 请求:主机请求设备的配置描述符。

bRequestType: 0x80(从设备到主机)

bRequest: 0x06(GET_DESCRIPTOR)

wValue: 0x0200(请求配置描述符)

wIndex: 0x0000

wLength: 请求的描述符长度

设备响应:设备返回配置描述符,包含设备支持的配置信息。

步骤 5:设置设备配置

主机发送 SET_CONFIGURATION 请求:主机选择一个配置。

bRequestType: 0x00(从主机到设备)

bRequest: 0x09(SET_CONFIGURATION)

wValue: 选择的配置值

wIndex: 0x0000

wLength: 0x0000

设备响应:设备进入选定的配置状态。

3. 数据传输

设备枚举完成后,主机和设备之间可以开始数据传输。USB 数据传输基于以下几种传输类型:

控制传输(Control Transfer)

用途:用于设备控制和管理,例如获取设备信息、设置设备状态等。

特点:双向传输,主机和设备都可以发送和接收数据。

示例:设备描述符请求、设备地址分配等。

批量传输(Bulk Transfer)

用途:用于传输大量数据,如文件传输、打印数据等。

特点:可靠传输,支持错误检测和重传。

示例:USB 存储设备的数据传输。

中断传输(Interrupt Transfer)

用途:用于低延迟、小数据量的传输,如键盘、鼠标等。

特点:周期性传输,主机定期轮询设备。

示例:键盘按键、鼠标移动数据。

等时传输(Isochronous Transfer)

用途:用于实时数据传输,如音频、视频流。

特点:保证数据传输的实时性,不保证数据的完整性。

示例:USB 音频设备、USB 摄像头。

4. 设备断开

物理断开:用户拔出 USB 设备。

主机检测:主机检测到设备断开,停止与该设备的通信。

资源释放:主机释放为该设备分配的资源,如设备地址。

总结

USB 通信流程包括以下几个主要阶段:

设备连接:用户插入设备,主机检测到硬件变化。

设备枚举:主机通过一系列请求(如 GET_DESCRIPTOR 和 SET_ADDRESS)识别和配置设备。

数据传输:主机和设备根据配置进行数据传输,支持控制、批量、中断和等时传输。

设备断开:用户拔出设备,主机释放资源。

相关数据

Android手机下载的缓存视频如何找到?
官网体育在线365

Android手机下载的缓存视频如何找到?

⌛ 07-03 👁️ 1699
oppo手机怎么切屏
365sf.cn

oppo手机怎么切屏

⌛ 08-06 👁️ 4730
78cm腰围是多少尺 一尺等于多少
365bet中国官网

78cm腰围是多少尺 一尺等于多少

⌛ 07-02 👁️ 2778