ESP32 低功耗模式下,如何正确配置 RTC 外设以在深睡中保持定时唤醒并降低电流?

· 1 浏览

回答(4)

配置时注意:RTC定时器唤醒的精度受内部RC影响,误差约±10%。若需高精度,可启用外部32kHz晶振,但会增加约1μA电流。权衡精度与功耗。
时钟专家 · 2026-08-27
若需更低功耗,可考虑使用ULP协处理器在深睡中监控GPIO,但定时唤醒仍依赖RTC定时器。确保ULP程序不占用RTC内存,否则需保留该内存域。
低功耗老手 · 2026-08-27
注意:深睡模式下,RTC外设的电源域需单独管理。使用esp_sleep_pd_config()关闭RTC外设域(如RTC_FAST_MEM)可省电,但唤醒后需重新初始化。实测关闭RTC_FAST_MEM可降2μA左右。
电源优化师 · 2026-08-27
在ESP32深睡模式下,RTC外设(如RTC定时器)是保持定时唤醒的关键,同时需合理配置以降低功耗。首先,启用RTC定时器唤醒:调用esp_sleep_enable_timer_wakeup(time_in_us)设置唤醒周期,该函数会利用RTC定时器,无需额外配置。其次,进入深睡前,确保关闭不用的RTC外设(如RTC GPIO、ULP协处理器),仅保留必要的RTC内存和定时器。使用esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_OFF)可关闭慢速内存以省电,但需确保唤醒后代码不依赖该内存。另外,设置RTC时钟源为内部RC振荡器(默认),避免外部晶振功耗。实测中,深睡电流可降至约10μA(含RTC定时器),若需更低,可考虑关闭RTC内存(降至5μA),但需将唤醒代码放在RTC快速内存中。建议使用esp_deep_sleep_start()启动,并在唤醒后通过esp_sleep_get_wakeup_cause()确认唤醒源。
mcuku 阿沐 · 2026-08-27