本文范围:
本文旨在帮助USB初学者快速定性了解USB三个低功耗状态,通过阅读本文可以定性知道USB低功耗状态的主要特点以及进入方式,但本文不会详细描述低功耗的详细指标
USB 协议中规定了三个低功耗状态,分别是U1、U2和U3
这些状态主要用于在不同程度的空闲状态下降低设备的功耗,以下是这三个低功耗状态的特点:
1. U1: U1是最低级别的低功耗状态,主要用于在短暂的空闲时间内降低功耗。 - 在U1状态下,设备的PHY(物理层)和链路层仍然保持激活状态,但数据传输暂停。 - U1状态的恢复时间较短,因此在需要恢复数据传输时,设备可以快速从U1状态唤醒。 - 适用于短暂的空闲时间,例如在连续数据传输的间隙。
2. U2: U2是中等级别的低功耗状态,用于在较长的空闲时间内降低功耗。 - 在U2状态下,设备的链路层进入睡眠状态,但PHY仍然保持激活状态。 - 与U1相比,U2状态的恢复时间较长,但仍然比U3状态快。 - 适用于较长的空闲时间,例如在不同任务之间的等待时间。
3. U3: U3是最高级别的低功耗状态,用于在设备长时间空闲时最大限度地降低功耗。 - 在U3状态下,设备的链路层和PHY都进入睡眠状态,数据传输完全暂停。 - U3状态的恢复时间最长,因为设备需要重新激活链路层和PHY。 - 适用于长时间的空闲状态,例如在设备未使用时。
USB 3.2协议中的三个低功耗状态(U1、U2和U3)在不同程度的空闲状态下降低设备的功耗。U1适用于短暂的空闲时间,U2适用于较长的空闲时间,而U3适用于长时间的空闲状态。这些状态之间的主要区别在于恢复时间和功耗降低的程度。
如何进入各个低功耗状态:
当以下条件满足时,设备会进入U1低功耗状态:
1. 设备和主机都支持U1低功耗状态。
2. 设备和主机之间的数据传输已经完成,即没有正在进行的数据传输。
3. 设备和主机之间的空闲时间达到了设定的U1超时值(U1 Exit Latency)
4. 主机通过发送LPM(Link Power Management)LGO_U1事务包来请求设备进入U1状态,设备接受请求并确认。 在U1状态下,设备和主机的数据链路层(DLL)和物理链路层(PHY)会进入低功耗模式,以降低功耗。当有新的数据传输请求时,设备和主机会迅速从U1状态恢复到U0正常工作状态。
当以下条件满足时,设备会进入U2状态:
1. 当主机(Host)和设备(Device)之间的数据传输暂时停止或完成时,主机可以通过发送LGO_U2命令来请求设备进入U2状态。
2. 设备在收到LGO_U2命令后,如果同意进入U2状态,会发送ACK(确认)响应。然后,设备会在一定时间内完成所有挂起的事务并进入U2状态。
3. 如果设备不同意进入U2状态,它会发送NAK(拒绝)响应。这通常发生在设备仍有数据要传输或处理的情况下。
4. 当设备处于U2状态时,它会进入低功耗模式,以减少能耗。此时,设备的USB链路层会关闭,但设备仍然与主机保持连接。
5. 当主机需要与设备重新开始数据传输时,它会发送WAKE信号。设备在收到WAKE信号后,会从U2状态唤醒并恢复正常工作状态。
当满足以下条件时,设备会进入U3:
1. 当主机(Host)或设备(Device)请求进入U3状态时。这通常是由于设备长时间处于空闲状态,或者系统需要节省能源。
2. 当主机和设备之间的通信完成,且双方都确认可以进入低功耗状态时。
3. 当设备在U3状态下,主机可以随时唤醒设备恢复到正常工作状态。这通常是通过发送一个恢复信号(Resume Signaling)来实现的。
4. 在U3状态下,设备的所有功能都将被挂起,包括数据传输、时钟和电源。这有助于降低设备的功耗,提高系统的能源效率。
5. 设备在U3状态下,可以对其进行重新配置或者执行其他的维护操作。
如何退出各个低功耗状态
退出U1:
1. 通过LFPS(低频电平信号)信号:当一个端口(主机或设备)想要离开U1状态时,它会发送一个LFPS信号。这个信号会被另一个端口检测到,然后双方都会离开U1状态并返回到U0状态(正常操作状态)。
2. 超时:在USB 3.2协议中,U1状态有一个超时计时器。当U1状态持续时间超过设定的超时时间时,端口会自动离开U1状态并返回到U0状态。
3. 通过软件控制:主机可以通过软件控制来强制设备离开U1状态。这通常是通过发送一个Set Feature命令来实现的,该命令会要求设备离开U1状态并返回到U0状态。
退出U2:
1. 首先,主机(Host)或设备(Device)需要发起U2退出请求。这是通过发送LFPS(Low-Frequency Periodic Signaling)信号来完成的。发送方会在一段时间内(最少2.5微秒)发送LFPS信号,以通知另一方请求退出U2状态。
2. 收到LFPS信号的一方(主机或设备)需要在规定的时间内(最多12微秒)对LFPS信号进行响应。响应方式是发送一个LFPS信号,表示已收到请求并准备好退出U2状态。
3. 在收到LFPS响应信号后,双方需要在一定时间内(最多12微秒)完成U2退出过程。这包括重新启动PHY(Physical Layer)和链路层(Link Layer)的相关功能,以便在U0状态下正常传输数据。
4. 在完成U2退出过程后,双方需要通过发送Polling.LFPS信号来确认链路已经恢复正常。这是通过在一段时间内(最少200纳秒)发送Polling.LFPS信号来完成的。收到Polling.LFPS信号的一方需要在规定的时间内(最多2微秒)对Polling.LFPS信号进行响应,表示链路已经恢复正常。
5. 在收到Polling.LFPS响应信号后,双方可以继续在U0状态下进行正常的数据传输。
退出U3 :
1. 首先,主机(Host)会向设备(Device)发送一个LFPS(Low-Frequency Periodic Signaling)信号,这是一种低频信号,用于唤醒设备。
2. 设备在检测到LFPS信号后,会回复一个LFPS信号,以确认收到了主机的唤醒请求。
3. 主机收到设备的LFPS回复后,会停止发送LFPS信号,并开始发送Training Sequence(训练序列)。这是一组特殊的信号,用于在主机和设备之间建立高速通信链路。
4. 设备在收到Training Sequence后,也会开始发送Training Sequence,以便与主机同步。
5. 当主机和设备成功同步后,它们会进入U0状态,即正常工作状态。在这个状态下,它们可以进行高速数据传输。