睡眠模式
睡眠模式
概述
ESP32 有轻度睡眠(light sleep)和深度睡眠(deep sleep)两种省电模式。
在轻度睡眠模式下,数字外设,大多数 RAM 和 CPU 都是时钟门控的,电源电压会降低。从轻度睡眠退出后,外围设备和 CPU 恢复运行,其内部状态将得以保留。
在深度睡眠模式下,CPU,大多数 RAM 以及从 APB_CLK 提供时钟的所有数字外设都将断电。芯片中仍然可以通电的唯一部分是:RTC 控制器,RTC 外设(包括 ULP 协处理器)和 RTC 存储器(慢速和快速)。
可以使用多种唤醒源从深度和轻度睡眠模式唤醒。可以组合这些唤醒源,在这种情况下,当触发任何一个源时芯片将被唤醒。可以使用 esp_sleep_enable_X_wakeup
API 启用唤醒源,并可以使用 esp_sleep_disable_wakeup_source()
API 禁用唤醒源。下一节将详细介绍这些 API。在进入浅色或深度睡眠模式之前,可以随时配置唤醒源。
此外,应用程序可以使用 esp_sleep_pd_config()
API 强制 RTC 外设和 RTC 存储器的特定掉电模式。
配置唤醒源后,应用程序可以使用 esp_light_sleep_start()
或 esp_deep_sleep_start()
API 进入睡眠模式。此时,将根据请求的唤醒源配置硬件,RTC 控制器将关闭 CPU 或数字外设的电源或关闭电源。
WiFi/BT 和睡眠模式
在深度睡眠和轻度睡眠模式下,无线外围设备断电。 在进入深度睡眠或轻度睡眠模式之前,应用程序必须调用适当的函数(esp_bluedroid_disable()
,esp_bt_controller_disable()
,esp_wifi_stop()
)禁用 WiFi 和 BT。 即使不调用这些功能,也不会在深度睡眠或轻度睡眠中保持 WiFi 和 BT 连接。
如果需要维护 WiFi 连接,请启用 WiFi 调制解调器睡眠(modem sleep),并启用自动轻度睡眠功能(请参阅电源管理 API)。这将允许系统在需要 WiFi 驱动程序时自动从睡眠中唤醒,从而保持与 AP 的连接。
唤醒源
定时器
RTC 控制器具有内置定时器,可用于在预定义的时间后唤醒芯片。时间以微秒精度指定,但实际分辨率取决于为 RTC SLOW_CLK 选择的时钟源。有关 RTC 时钟选项的详细信息,请参见“ESP32 技术参考手册”的“复位和时钟”一章。
此唤醒模式不需要在睡眠期间打开 RTC 外