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会经历多个状态,确保链路稳定。
-
Rx.Detect:主机与设备互相检测差分信号对(SS_TX/SS_RX),如果检测到设备,主机进入Polling状态。
-
Polling:主机与设备交换训练序列(TS1和TS2),并校准信号质量(如摆幅、抖动等)。当链路成功通过这些测试时,双方进入U0状态(即SuperSpeed链路激活)。
-
U0状态:链路准备就绪,设备可以进行后续的通信。
-
设备复位(Reset)
在链路建立后,主机会通过发出USB总线复位信号,将设备复位到默认状态。此时设备开始准备响应主机的枚举请求。
- 获取设备描述符
复位之后,主机进入设备描述符读取阶段:
-
设置地址:主机首先通过地址0向设备发送获取设备描述符(Get Device Descriptor)请求,设备响应其基本信息,包括设备的总线类型、最大包大小等。
-
分配地址:主机接着会分配一个唯一的设备地址,供后续通信使用。设备接收并确认这个地址。
-
配置描述符读取
主机通过新的设备地址继续向设备发送请求,以获取更多信息:
-
获取配置描述符:主机会读取设备的配置描述符,它描述了设备的配置选项(包括接口和端点的数量及类型)。
-
获取接口和端点描述符:主机读取设备每个接口的详细信息,包括端点类型、方向、传输类型(如控制、批量、等时等)。
-
设备配置
一旦主机获取到所有的描述符,它将通过向设备发送Set Configuration请求,配置设备进入特定的工作状态。设备在此时进入完全工作的状态,主机可以使用端点进行数据传输。
- 正常通信
在设备被成功枚举并配置后,USB 3.0设备就准备好接受主机的各种数据传输请求。正常通信过程中可能使用批量、控制、等时或中断传输。
3. LTSSM中的其他状态
除了上面提到的关键状态,LTSSM还包含多个电源管理状态,如:
U1/U2:低功耗状态,允许链路降低能耗。设备和主机可以根据空闲时间自动进入这些状态。
U3:设备可以完全进入Suspend(挂起)模式,在这种模式下几乎不会消耗功耗,直到主机重新发出唤醒信号。
枚举中的错误检测
主机在枚举过程中还会检查各种可能的错误,包括:
超时错误:如果设备在规定时间内没有响应,主机将重新尝试或者标记枚举失败。
描述符错误:如果设备提供的描述符信息不完整或不符合规范,主机可能无法正确配置设备。
4. 总结
USB 3.0的枚举过程不仅包括基本的电气连接和设备描述符读取,还涉及到链路训练和状态管理。这个过程确保了主机和设备之间可以建立稳定的SuperSpeed链路,并配置好所有必要的通信参数。
标签:USB,主机,描述符,USB3.0,枚举,链路,过程,设备 From: https://www.cnblogs.com/linhaostudy/p/18455807