Fork me on GitHub

USB 2.0 suspend resume

suspend/resume时代

USB2.0在定义最初就支持suspend/resume

image

看一看见,退出suspend的时间要求是大于20ms。同时也可以看出D+, D-信号反转一下,既是触发resume流程,随即USB HOST需要拉出一个START信号,USB的通讯就彻底恢复了。

LPM时代

随后USB org认为这个简单的suspend/resume不能优化USB的功耗,之后推出了LPM(Link Power Management) 。

image

到了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会缩短时间,你可以想象的到。

posted @ 2021-09-26 16:51  yooooooo  阅读(1023)  评论(0编辑  收藏  举报