Edit online

枚举流程

4 Feb 2024
Read time: 1 minute(s)
USB 设备枚举总体流程是让 Host 认得这个 USB 设备,并且为该设备准备资源,建立好主机和设备之间的数据传递机制。一个设备枚举的过程分为如下 8 步:
  1. 获取设备描述符

    • Host/Hub 通过数据线上拉电阻的阻值变化检测到新设备接入。Host 等待 100ms 以保证设备电源稳定。

    • Host 向 device 发 Bus Reset 使得设备进入 default 状态,从此之后,设备可以响应默认地址 0。

    • Host 请求 Device 发送 Device Descriptor 的前 64 个字节。

  2. 复位

    • Host 在收到 Device Descritptor 的前 8 个字节后,再次向 Device 发出 Bus Reset。

  3. 设置地址

    • Host 发送一个 Set Address 命令给 Deivce,从此 Device 有个通信地址,不再使用默认地址 0 进行通信。

  4. 再次获取设备描述符

    • Host 请求获取完整的 Device Descritpor, 总计 18 字节。

  5. 获取配置描述符

    • Host 请求获取 9 个字节的 Configuration Descriptor 以了解 Configuration Descriptor 的总大小。

    • Host 请求 255 字节的 Configuration Descritpor。

  6. 获取接口,端点描述符

  7. 获取字符串描述符

  8. 选择设备配置

下图是接入一个 USB 鼠标之后完整的枚举过程,后面详细逐步分析:


image22