2024年5月31日发(作者:)
USB的挂起和唤醒 (Suspend and Resume)
协议的第9章讲到USB可见设备状态[Universal Serial Bus
地发送SOF包(Start Of Frame,全速USB每1ms发送一个,高速USB
则是125μs发送一个)。按照USB协议,假如USB线上向来处于空闲
(Idle)状态超过3ms,设备应当把它当作一个挂起(Suspended)信号,
Specification, Section 9.1.1, Pg 239],分为衔接(Attached),上
要求设备在10ms内进入挂起状态,并把设备所需的大小降到规定的值
电(Powered),默认(Default),地址(Address),配置(Configured)和
(对于low-power设备,要求是500 μA,而对于high-power或支持
挂起(Suspended)6个状态。所谓可见,即USB系统和主机可见的状态,
远程唤醒(remote wakeup)功能的设备是2.5mA【Section 7.2.3,
其他状态属于USB设备内部而不行见。其中有关电源的,大致可分下面
Pg176】)。在挂起状态中,设备必需继续向数据项D+/D-的上拉提供
三类:
以维持Idle状态。而对于USB2.0高速设备,还有些额外的要求:
1. 衔接状态(Attached):设备衔接,但未提供电源。
1. 高速设备在收到挂起信号(3ms空闲)后,应在0.125ms内切换到全
2. 上电状态(Powered):设备被复位(Reset),或者说处于地址、配置
速状态,也就是说要把终端电阻移除,并在D+数据线上重新挂上1.5k
状态。(参见USB枚举过程,USB Specification, page 241)
上拉电阻。
3. 挂起状态(Suspended):3 ms未见活动而处于省电状态,设备不行
2. 设备在随后的100-875μs内检测数据线上的状态。假如该状态是
用,但仍然保持原有的USB地址和配置。
一个Full speed J,那么解释host发下来的是一个挂起信号;假如此
设备的挂起
时该状态是SE0,解释是host drive数据线D+到0,这是一个复位信
我们知道,在USB系统中,正常状态下hub或root hub会向来周期性
第 1 页 共 2 页
号(复位信号会持续起码10ms时光)。
要注重的是高速设备在挂起状态时处于高速模式,只是所用的是全速信
号。一旦从挂起状态复原回归,会马上进入高速工作状态而无需举行复
位操作。
如上图所示,Host在a点停止发送SOF,系统处于SE0状态,b点是3ms
时光点,之后的125μs内,设备移除终端电阻,并挂上1.5k上拉。此
时如host发送的是suspend信号,那它就不会不drive D+数据线,导
致D+被设备拉高,形成一个Full Speed J状态。在c点之后100-875
μs内设备检测此时host行为,发觉是suspend信号,设备内部进入
低功耗的挂起(suspend)状态。(如果hsot发送的是复位信号,那么当
设备在c点挂1.5k电阻之后,因为host对D+线的drive作用,D+线
无法被拉高,仍然处于SE0状态,设备在c点之后的检测,发觉的还是
SE0状态,等到10ms后就可推断这是一个复位信号,举行设备复位操
作。)
设备的唤醒
设备处于挂起状态时,任何总线上的活动(非空闲信号)都可以把设备
唤醒/复原,从而退出低功耗模式。(同样,设备也可以换醒host,比
如电脑待机时通过USB键盘来换醒主机,这种功能称之为“远程唤醒”
(remote wakeup),不在本文的研究范围内。)
由于设备挂起时处于全速信号,在当host需要把将设备退出suspend
状态时,需要先发送一个持续时光超过20ms的Fulll Speed K状态。
设备看到K状态结束的1.3us内醒过来,而host需要在3ms内发送
uSOF信号以维持正常的高速信号模式,否则设备又将进入suspend。
如下图所示:
第 2 页 共 2 页
发布评论