枚举流程
4 Feb 2024
Read time: 1 minute(s)
USB 设备枚举总体流程是让 Host 认得这个 USB 设备,并且为该设备准备资源,建立好主机和设备之间的数据传递机制。一个设备枚举的过程分为如下 8 步:
-
获取设备描述符
-
Host/Hub 通过数据线上拉电阻的阻值变化检测到新设备接入。Host 等待 100ms 以保证设备电源稳定。
-
Host 向 device 发 Bus Reset 使得设备进入 default 状态,从此之后,设备可以响应默认地址 0。
-
Host 请求 Device 发送 Device Descriptor 的前 64 个字节。
-
-
复位
-
Host 在收到 Device Descritptor 的前 8 个字节后,再次向 Device 发出 Bus Reset。
-
-
设置地址
-
Host 发送一个 Set Address 命令给 Deivce,从此 Device 有个通信地址,不再使用默认地址 0 进行通信。
-
-
再次获取设备描述符
-
Host 请求获取完整的 Device Descritpor, 总计 18 字节。
-
-
获取配置描述符
-
Host 请求获取 9 个字节的 Configuration Descriptor 以了解 Configuration Descriptor 的总大小。
-
Host 请求 255 字节的 Configuration Descritpor。
-
-
获取接口,端点描述符
-
获取字符串描述符
-
选择设备配置
下图是接入一个 USB 鼠标之后完整的枚举过程,后面详细逐步分析:

