USB全速设备的挂起、唤醒Resume
在介绍USB全速设备挂起Suspend、唤醒Resume之前先介绍USB全速设备的硬件连接方式。
USB全速设备的连接
USB全速设备的硬件连接和USB高速设备的硬件连接方式一样。区别是全速设备不会触发高速的协商。内容详见:USB2.0设备从全速模式到高速模式的识别过程及速率协商 https://www.usbzh.com/article/detail-672.html
USB2.0全速、低速和高速设备一样,都是通过 D+、D- 两个差分信号线进行通信。在下图中,最左边为全速/高速的硬件连接电路,而最右边为低速的硬件电路。两者的惟一区别就是在设备端上拉的1.5K电阻连接在D+还是D-上。
USB电平信号
USB采用的是D+和D-两根信号线的差分信号进行数据传输。对于不同速度的的USB设备,其规定的差分信号线上 J、K 等状态的电平也会不同,下表则列出了在低速、全速、高速下 USB 状态对应的电平信号。
全速USB设备的挂起Suspend
USB是主从设备。所有命令都是由主机发起,设备端响应。在正常的情况下,USB主机会定时发送SOF包,对于全速设备是1ms,高速设备SOF包音隔为125us。若 USB 线上一直处于 Idle 状态超过 3ms,设备则认为这是一个挂起信号,设备需要在 10ms 内进入挂起状态.
USB 设备挂起时,可以停止设备的时钟,以进入低功耗模式。在挂起状态中,设备仍需继续向 D+/D- 的上拉电阻提供电压以保持 Idle 状态。
全速 USB 的 Resume 唤醒
在设备处于 Suspend 的状态下,若需要将设备退出 Suspend 状态,主机 host 需要向设备发送持续时间超过 20ms 的 Resume 信号,并且以 EOP 信号结尾,设备将在 Resume 信号结束后醒过来。在设备醒过来后,host 需要在 3ms 内发送 SOF 信号,以维持正常的通信模式,避免设备重新进入 Suspend 状态。
全速 USB 的远程唤醒
对于普通的 Resume 唤醒,是由主机 host 唤醒 USB 设备,但同样,设备也可以唤醒主机 host,例如电脑休眠时,可以通过 USB 键盘唤醒主机,这种功能称为远程唤醒。
使用远程唤醒功能,需要 USB 设备支持远程唤醒功能,并且在配置描述符的设置中,将 USB 设备支持远程唤醒能力报告给主机。
通过 USB 设备远程唤醒主机时,USB 设备会生成一个 1ms-15ms 的 Resume 信号,host 在 1ms 内捕获到该信号,并且主机控制器对唤醒操作进行接管,继续产生 Resume 信号直到 20ms,并以 EOP 信号结尾。完成对设备的唤醒。