Fork me on GitHub
侧边栏

USB3.0 枚举过程

USB 3.0 枚举是指主机和设备之间通过USB协议进行初始化和通信配置的过程。在USB 3.0中,枚举过程的主要步骤包括电气连接建立、链路训练(LTSSM)、设备描述符读取等。以下是USB 3.0枚举的详细过程:

1 设备连接与电源管理

当USB设备插入USB 3.0端口时,以下步骤会开始:

供电:主机通过VBUS线为设备供电,设备检测到电压时开始工作并准备初始化。

检测拉电阻:主机通过检测USB引脚(USB 3.0使用D+/D-和SS_TX/SS_RX)上的上拉或下拉电阻,判断插入的设备是USB 2.0还是USB 3.0设备。USB 3.0设备会在其SS_RX线上保持一个特定的电压状态,以表明它是SuperSpeed设备。

2. SuperSpeed链路训练与状态管理(LTSSM)

USB 3.0使用LTSSM(Link Training and Status State Machine)来完成主机与设备之间的通信链路建立。LTSSM会经历多个状态,确保链路稳定。

  1. Rx.Detect:主机与设备互相检测差分信号对(SS_TX/SS_RX),如果检测到设备,主机进入Polling状态。

  2. Polling:主机与设备交换训练序列(TS1和TS2),并校准信号质量(如摆幅、抖动等)。当链路成功通过这些测试时,双方进入U0状态(即SuperSpeed链路激活)。

  3. U0状态:链路准备就绪,设备可以进行后续的通信。

  4. 设备复位(Reset)

在链路建立后,主机会通过发出USB总线复位信号,将设备复位到默认状态。此时设备开始准备响应主机的枚举请求。

  1. 获取设备描述符

复位之后,主机进入设备描述符读取阶段:

  1. 设置地址:主机首先通过地址0向设备发送获取设备描述符(Get Device Descriptor)请求,设备响应其基本信息,包括设备的总线类型、最大包大小等。

  2. 分配地址:主机接着会分配一个唯一的设备地址,供后续通信使用。设备接收并确认这个地址。

  3. 配置描述符读取

主机通过新的设备地址继续向设备发送请求,以获取更多信息:

  1. 获取配置描述符:主机会读取设备的配置描述符,它描述了设备的配置选项(包括接口和端点的数量及类型)。

  2. 获取接口和端点描述符:主机读取设备每个接口的详细信息,包括端点类型、方向、传输类型(如控制、批量、等时等)。

  3. 设备配置

一旦主机获取到所有的描述符,它将通过向设备发送Set Configuration请求,配置设备进入特定的工作状态。设备在此时进入完全工作的状态,主机可以使用端点进行数据传输。

  1. 正常通信

在设备被成功枚举并配置后,USB 3.0设备就准备好接受主机的各种数据传输请求。正常通信过程中可能使用批量、控制、等时或中断传输。

3. LTSSM中的其他状态

除了上面提到的关键状态,LTSSM还包含多个电源管理状态,如:

U1/U2:低功耗状态,允许链路降低能耗。设备和主机可以根据空闲时间自动进入这些状态。

U3:设备可以完全进入Suspend(挂起)模式,在这种模式下几乎不会消耗功耗,直到主机重新发出唤醒信号。

枚举中的错误检测

主机在枚举过程中还会检查各种可能的错误,包括:

超时错误:如果设备在规定时间内没有响应,主机将重新尝试或者标记枚举失败。

描述符错误:如果设备提供的描述符信息不完整或不符合规范,主机可能无法正确配置设备。

4. 总结

USB 3.0的枚举过程不仅包括基本的电气连接和设备描述符读取,还涉及到链路训练和状态管理。这个过程确保了主机和设备之间可以建立稳定的SuperSpeed链路,并配置好所有必要的通信参数。

posted @ 2024-10-10 10:30  yooooooo  阅读(1651)  评论(0)    收藏  举报