suspend/resume时代
USB2.0在定义最初就支持suspend/resume
看一看见,退出suspend的时间要求是大于20ms。同时也可以看出D , D-信号反转一下,既是触发resume流程,随即USB HOST需要拉出一个START信号,USB的通讯就彻底恢复了。
LPM时代
随后USB org认为这个简单的suspend/resume不能优化USB的功耗,之后推出了LPM(Link Power Management) 。
到了LPM的时代, USB才有了这些电源状态L0, L1, L2, L3。当然,可以想象,这个新的模型必须兼容老的suspend/resume模型。
其实老的suspend/resume状态就是就是新模型的L2状态。上面这幅图(点击看大图)其实画的布局时很有讲究的。注意到L1, L2是画在同一个水平线上。这两个状态时平等的。
- L1就是为了加入LPM的支持,如果你的描述符中有LPM的支持,你自然只会进入L1
- L2则是为了兼容性考虑,如果老的USB设备不支持LPM,你的描述符中没有LPM的支持,那么你也只可能进入L2
对于L0和L3就没什么太多说的:一个是全速跑,一个是彻底关闭。
再回到L1和 L2,他们从信号层面,suspend/resume的是信号是一模一样的,就是时间上有所差异,当然L1会缩短时间,你可以想象的到。