USB超高速 GEN1设备状态
USB设备可能有很多状态,如断开状态,刚接入状态,分配地址状态,配置状态,工作状态等。
当然由于USB3.0超高速协议规范的定义,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 | — | 设备连接到 USB 并且被上电,并且已经被复位,并且已经被设定了一个唯一的地址。设备还没有被配置。 |
Yes | Yes | Yes | Yes | Yes | No | 设备连接到 USB 并且被上电,并且已经被复位,并且有一个唯一的地址,已经被配置。主机现在可以使用设备提供的功能 |
Yes | Yes | Yes | — | — | Yes | 设备,在最小程度上,处于默认状态(连接在 USB上,已经被上电,并且其上游链路已经成功被训练),并且其上游链路已经被其上游链路伙伴设置到 U3。它可能也具有一个唯一的地址,并且为了使用而被配置。然而,由于设备是被挂起的,主机不能使用设备的功能。 |
Attached
设备可以被连接到 USB集线器,或从 USB集线器 上断开。
Powered
设备可以从外部电源或者从他们所连接着的 USB 上获得电源。外部供电的设备被称为自供电设备。尽管自供电设备可能已经在他们被连接到 USB 之前就已经被加电,他们还是不被认为是处于 Powered 状态,直到他们被连接到 USB,并且 VBUS 已经被应用于该设备。
一个设备可同时支持自供电和总线供电的配置。有些设备配置支持任何任何两种电源之一。
其他设备配置可能仅当该设备是自供电时才可用。设备通过配置描述符报告电源能力。当前电源作为设备状态的一部分被报告。设备可能会在任何时候改变他们的电源,例如,从自供电到总线供电。如果配置有能力同时支持两种电源模式,对该配置被报告的最大电源是该设备在任何模式下设备将从 Vbus 汲取的最大值。该装置应遵守这个最大值,而无论它的模式如何。如果配置只支持一个电源模式而设备的电源发生了变化,设备将失去其当前的配置及地址,并返回到 Powered 状态。如果在超高速模式运行的设备是自供电的,并且其目前的配置要求超过150 毫安,那么如果该设备切换到总线供电,它应该返回到 Powered 状态。使用 Vbus 为集线器控制器供电的自供电集线器被允许保持在 Configured 状态,如果本地电源被丢失。请注意,超高速设备在非 SuperSpeed 操作时抽取的最大电源制约于在 USB 2.0 规范规定的限制。
集线器端口应被供电,以侦测端口状态的变化,包括连接和断开。总线供电集线器不提供任何下游的电源,直至它们被配置,在这一点上,他们将提供他们的配置和电源允许的电源。
一个设备应能从最初应用电源后,在规定的时间内可以被寻址。当连接到一个端口被检测到之后,主机可以复位端口,这也将复位连接到端口的设备。
Default
当操作在 SuperSpeed 模式,在设备已经被上电之后,它不应该响应任何总线事务,直到链路被成功训练。之后设备可以在默认地址上被寻址。
一个可以在 SuperSpeed 操作的设备判定它是否可以在 SuperSpeed 操作,作为连接过程的一部分(参见第 10 章的 Device Connection State Diagram 中更多的细节)。当在只有 USB 2.0 电气环境中,一个 USB 3.0 设备应成功复位为被支持的 USB 2.0 速度的其中一个。该设备复位成功后,该设备也应成功地应付设备和配置描述符请求, 根据 USB 2.0
规范的要求返回适当的信息。在 USB 2.0 模式下运行时,该设备可能,也可能无法支持其预期的功能。
Address
当最初上电或在该设备已被复位时,所有设备使用默认的地址。每个设备复位后被主机指派一个唯一的地址。当设备被挂起时,设备保持其被分配的地址。
不论是否当前已经分配了一个唯一地址或使用的是默认地址,设备都在默认管道上响应请求。
Configured
在设备的功能可以被使用之前,设备应该被配置。从设备的角度,配置包括正确地处理具有非 0 的配置值的 SetConfiguration()请求。配置一个设备或者改变一个替换的设置,将导致与在被影响到的接口中的所有的端点的状态和配置值被设置到他们的默认值。这包括复位被影响到的接口中任何的端点的序列号到 0。在进入被配置状态的最初入口处,设备应该默认进入全功能的 D0 状态。
Suspended
为了节省功耗,器件自动进入挂起状态(挂起,默认,地址,或配置之一),当观察到其上游的链路正被驱动到 U3 的状态。当挂起时,该设备保持任何内部的地位,包括它的地址和配置。
连接的设备应准备随时从 Default, Address, 或者 Configured 进入挂起。当所连接的集线器端口被设置进入 U3 时,一个设备应该进入挂起状态。这被称为选择性挂起。
当观察到其上行端口上的唤醒信号时,设备退出挂起模式。设备也可能通过驱动恢复信号(参考第 7.4.9 节)和发送功能唤醒通知在其上游链路来表示远程唤醒,请求主机退出挂起模式或选择性挂起。设备发送远程唤醒信号的能力是可选的。
如果一个设备可支持远程唤醒能力,设备应支持主机启用和禁用此功能。当设备复位,远程唤醒应被禁用。