USB设备状态
本文大多内容来源于USB 2.0协议:《Universal Serial Bus
Specification》
USB 设备状态
USB设备在连接到主机后,在其使用过程中会有多种可能的状态,其状态转换图如下所示:
每个状态的说明如下:
Attached | Powered | Default | Address | Configured | Suspended | State |
---|---|---|---|---|---|---|
No | – | – | – | – | – | USB还未连接到主机 |
Yes | No | – | – | – | – | USB已经连接到主机上,但还没通电 |
Yes | Yes | No | – | – | – | USB连接到主机并通电,但还没有重置 |
Yes | Yes | Yes | No | – | – | USB连接到主机,通电并重置,但还没有设置唯一地址,设备使用默认地址 |
Yes | Yes | Yes | Yes | No | – | 在上述基础上分配了唯一地址,但还没有配置 |
Yes | Yes | Yes | Yes | Yes | No | 上一步的基础上进行配置,此时设备没有处于挂起状态,可以正常使用了 |
Yes | Yes | – | – | – | Yes | 设备至少已经连接USB,且已经通电,但在3ms之内未检测到总线果冻。它也可能已经设置了唯一的地址,且已经配置。但由于设备处于挂起状态,主机可能无法使用该设备的功能 |
1 Attached
设备可以通过USB连接或断开,协议只规定USB连接后的状态。
2 Powered
USB获取电源的方式有两种:通过外部电源或通过其连接的USB集线器。外部电源供电的设备称为自供电设备(self-powered)。尽管自供电设备在其接入USB之前可能就已经带电了,但直至它连接到USB,且VUBS施加到设备上时,才将其视为处于 Powered 状态。
一个设备可能同时支持自供电和总线供电两种配置。有些设备可能支持任意一种供电方式,还有些设备可能支支持自供电。设备通过配置描述符来向主机报告其支持的供电方式。设备可能在任意时刻改变其电源,如:从自供电转变为总线供电。
如果设备支持两种供电方式,其 power 最大值应该是每种供电方式中从VBUS中吸取的最大 power。
如果设备只支持一种供电方式,那么当电源发生改变时,当前设备会直接丢失其配置和地址,返回到 powered 状态。
如果设备是自供电,且当前配置需要使用超过100mA,那么如果设备切换到总线供电,它必须返回到 Address 状态。
使用 VBUS 给 HUB 控制器供电的自供电 HUB,在电源丢失时,允许其处于 Configured 状态。
一个 HUB 必须通电才能检测端口状态的改变,包括连接和断开。总线供电的 HUB 在配置之前不会提供任何下游电源,配置完成后将根据其配置和供电方式提供电源。USB 设备必须在初始通电后指定时间内能够被寻址。检测到端口连接后,主机可以启用该端口,这将重置连接到该端口的设备。
3 Default
默认情况下,设备通电后,在收到总线复位信号之前,不能响应任何总线事务。收到复位信号后,设备可以在默认地址上被寻址。
当复位过程完成后,USB 设备以正确的速度运行(即低速、全速或高速)。低速和全速的选择由设备终端电阻决定。能够高速运行的设备在复位过程中确定是否以高速运行。
一个支持高速的设备必须在全速的电气环境中成功复位。设备成功复位后,还必须成功响应设备和配置描述符请求,并返回适当的信息。
4 Address
所有 USB 设备在初始上电或设备复位后使用默认地址。每个 USB 设备在连接后或复位后由主机分配一个唯一地址。USB 设备在挂起时保持其分配的地址。
无论 USB 设备当前是否被分配了唯一地址,还是使用默认地址,它都会在其默认管道上响应请求。
5 Configured
在使用 USB 设备的函数之前,设备必须被配置。从设备的角度来看,配置涉及正确处理带有非零配置值的 SetConfiguration()请求。配置设备或更改备用设置会导致受影响接口中与端点相关的所有状态和配置值被设置为默认值。这包括将使用数据切换的任何端点的数据切换设置为 DATA0 值。
6 Suspended
为了节省电力,当设备在指定时间段内未观察到总线流量时,USB 设备会自动进入挂起状态。挂起时,USB 设备保持所有状态,包括其地址和配置。
所有设备必须在未观察到协议中指定的时长的总线活动后进入挂起状态。连接的设备必须在任何时候准备进入挂起状态,无论它们是否被分配了非默认地址或进行了配置。总线活动可能由于主机进入其自身的挂起模式而停止。此外,当 USB 设备连接的集线器端口被禁用时,该 /USB 设备也应进入挂起状态。这被称为选择性挂起。
当有总线活动时,USB 设备会退出挂起模式。USB 设备还可以通过使用电气信号请求主机退出挂起模式或选择性挂起,以指示远程唤醒。设备发送远程唤醒信号的能力是可选的。如果 USB 设备能够发送远程唤醒信号,则该设备必须支持主机启用和禁用此功能的能力。当设备复位时,远程唤醒信号必须被禁用。