睡眠模式介绍
ESP32 支持 5 种预设功耗模式,可以覆盖绝大多数应用场景。因此,用户在自行调整各个电源控制信号前,应首先尝试这 5 种功耗模式能否满足要求,具体包括:
- Active 模式:芯片射频处于工作状态。芯片可以接收、发射和侦听信号。
- Modem-sleep 模式:CPU 可运行,时钟可被配置。Wi-Fi/蓝牙基带和射频关闭。
- Light-sleep 模式:CPU 暂停运行。RTC 存储器和外设以及 ULP 协处理器运行。任何唤醒事件(MAC、
主机、RTC 定时器或外部中断)都会唤醒芯片。 - Deep-sleep 模式:CPU 和大部分外设都会掉电,只有 RTC 存储器和 RTC 外设处于工作状态。Wi-Fi
和蓝牙连接数据存储在 RTC 中。ULP 协处理器可以工作。 - Hibernation 模式:内置的 8 MHz 振荡器和 ULP 协处理器均被禁用。RTC 内存恢复电源被切断。只有
1 个位于低速时钟上的 RTC 时钟定时器和某些 RTC GPIO 在工作。RTC 时钟定时器或 RTC GPIO 可
以将芯片从 Hibernation 模式中唤醒。
默认情况下, ESP32 系统复位后将进入 Active 模式。当 CPU 不需要一直工作时,比如当等待外部活动唤醒时,系统可以进入多种低功耗模式。
睡眠模式功耗
设备在不同的功耗模式下有不同的电流消耗,详情请见下表:
在Wi-Fi 开启的场景中,芯片会在Active 和Modem-sleep 模式之间切换,功耗也会在两种模式间变化。
Modem-sleep 模式下,CPU 频率自动变化,频率取决于 CPU 负载和使用的外设。
Deep-sleep 模式下,仅 ULP 协处理器处于工作状态时,可以操作 GPIO 及低功耗 I2C。
睡眠唤醒源
可以使用多种来源唤醒睡眠模式,当任何一种唤醒源被触发,芯片都会醒来。
如图所示,对于 Modem sleep 模式,可以被任意中断唤醒,而对于 deep sleep 模式,可以通过 RTC GPIO(注意:仅有 RTC GPIO 可以作为唤醒源,而非数字 GPIO),RTC 计时器,touch 以及
协处理器来唤醒
睡眠命令使用
ESP32 AT 包含了 model sleep 和 deep sleep 两种睡眠模式,用户可以根据自己的要求自定义 AT 命令来实现定制化睡眠方案。
1. AT+GSLP—进入 Deep-sleep 模式
设置指令
AT+GSLP=<time>
响应
<time>
OK
参数说明
- time:设置 ESP32 的睡眠时长,单位:毫秒。
ESP32 会在休眠设定时长后自动唤醒。
目前 AT 对于 sleep 模式只提供了定时唤醒这一种唤醒方法,设置的参数即睡眠时长。
2.AT+SLEEP—设置 sleep 模式
设置指令:
指令
AT+SLEEP=<sleep mode>
响应
OK
<sleep mode>:
参数说明
- 0:禁用休眠模式
- 1:Modem-sleep 模式
示例:
AT+SLEEP=0
modem sleep 可以被任意中断唤醒,所以需要在使用中很有可能会出现睡眠一会就又被唤醒到 Active 模式的情况。