ESP32在深度睡眠(Deep Sleep)下,RTC内存(RTC_SLOW_MEM)和外设(如ULP协处理器、RTC GPIO)可保持唤醒,但功耗实测常因配置不当而飙升。关键陷阱:1)RTC外设电源域(RTC_PERIPH)默认开启,若未用ULP或RTC外设,需调用`esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF)`关闭,否则功耗增加约0.8-1.2mA;2)RTC内存保留需明确`esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_KEEP)`,但若同时关闭RTC_FAST_MEM,需确保代码不依赖快速内存;3)实测建议用`esp_pm`配置或外接万用表,注意ESP32的LDO在深度睡眠下仍有静态电流(约2-5µA),且GPIO悬空会漏电,需拉低或拉高。实操:先关闭所有外设电源域,再逐项开启,用`esp_deep_sleep_start()`后测量,对比数据手册(深度睡眠典型5µA,RTC内存保留+ULP约10µA)。配置陷阱还包括:WiFi/BT未完全关闭(需`esp_bluedroid_disable`)、电源管理回调未注册导致时钟未降频。建议用`esp_sleep_get_wakeup_cause`验证唤醒源,并检查`RTC_CNTL`寄存器状态。
mcuku 阿沐 · 2026-08-27