1.ESP32 系列芯片提供三種可配置的睡眠模式,針對這些睡眠模式,我們提供了了多種低功耗解決方案,用戶可以結合具體需求選擇睡眠模式並進行配置。三種睡眠模式如下:
- Modem-sleep 模式:CPU 可運行,時鍾可被配置。Wi-Fi/藍牙基帶和射頻關閉。
- Light-sleep 模式:CPU 暫停運行,Wi-Fi/藍牙基帶和射頻關閉。RTC 存儲器和外設以及 ULP 協處理器運行。任何喚醒事件(MAC、主機、RTC 定時器或外部中斷)都會喚醒芯片。
- Deep-sleep 模式:CPU 和大部分外設都會掉電,Wi-Fi/藍牙基帶和射頻關閉,只有 RTC 存儲器和 RTC 外設以及 ULP 協處理器可以工作。Wi-Fi 和藍牙連接數據存儲在 RTC 中。
三種模式的區別如下:

2.Modem-sleep 模式
- 目前 ESP32 的 Modem-sleep 僅工作在 Station 模式下,連接路由器后生效。Station 會周期性在工作狀態和睡眠狀態兩者之間切換。
- ESP32 通過 Wi-Fi 的 DTIM Beacon 機制與路由器保持連接。在 Modem-sleep 模式下,系統可以自動被喚醒,無需配置喚醒源。一般路由器的 DTIM Beacon 間隔為 100 ms ~ 1,000 ms。
- DTIM (Delivery Traffic Indication Message): 使用無線路由器時無線發送數據包的頻率。
- 在 Modem-sleep 模式下,ESP32 會在兩次 DTIM Beacon 間隔時間內,關閉 Wi-Fi 模塊電路,達到省電效果,在下次 Beacon 到來前自動喚醒。睡眠時間由路由器的 DTIM Beacon 時間決定。Modem-sleep 模式可以保持與路由器的 Wi-Fi 連接,並通過路由器接收來自手機或者服務器的交互信息。
- Modem-sleep 一般用於 CPU 持續處於工作狀態並需要保持 Wi-Fi 連接的應用場景,例如,使用 ESP32 本地語音喚醒功能,CPU 需要持續采集和處理音頻數據。
3.Light-sleep 模式
Light-sleep 的工作模式與 Modem-sleep 相似,不同的是,除了關閉 Wi-Fi 模塊電路以外,在 Light-sleep 模式下,還會關閉時鍾並暫停內部 CPU,比 Modem-sleep 功耗更低。有兩種方式使 CPU 進入 Light-sleep 模式:
- 強制 Light-sleep: 通過調用 API 強制 CPU 進入 Light-sleep 模式,強制進入 Light-sleep 模式后,不能通過路由器接收來自手機或者服務器的交互信息。強制 Light-sleep 模式可用於需要保持與路由器的連接,不需要實時響應路由器發來的數據的場景。
- 自動 Light-sleep: 配置為自動休眠方式后,會在 CPU 處於空閑的狀態下自動進入 Light-sleep 模式,能通過路由器接收來自手機或者服務器的交互信息。通常自動 Light-sleep 會與 Modem-sleep 模式 以及電源管理功能共同使用,電源管理功能允許系統根據 CPU 負載動態調節 CPU 頻率以降低功耗。若系統應用中有小於 DTIM Beacon 間隔時間的循環定時,系統將不能進入 Light-sleep 模式。
- 自動 Light-sleep 模式可用於需要保持與路由器的連接,可以實時響應路由器發來的數據的場景。並且在未接收到命令時,CPU 可以處於空閑狀態。比如 Wi-Fi 開關的應用,大部分時間 CPU 都是空閑的,直到收到控制命令,CPU 才需要進行 GPIO 的操作。
4.Deep-sleep 模式
相對於其他兩種模式,系統無法自動進入 Deep-sleep,需要由用戶調用接口函數 esp_deep_sleep_start() 進入 Deep-sleep 模式。在該模式下,芯片會斷開所有 Wi-Fi 連接與數據連接,進入 Deep-sleep 模式,只有 RTC 存儲器和 RTC 外設以及 ULP 協處理器可以工作。從 Deep-sleep 喚醒后,CPU 將軟件復位重啟。
Deep-sleep 可以用於低功耗的傳感器應用,或者大部分時間都不需要進行數據傳輸的情況。設備可以每隔一段時間從 Deep-sleep 狀態醒來測量數據並上傳,之后繼續進入 Deep-sleep。也可以將多個數據存儲於 RTC memory(RTC memory 在 Deep-sleep 模式下仍然可以保存數據),然后一次發送出去。
原文地址:https://blog.csdn.net/qq_27114397/article/details/106451678
