ESP32 在低功耗模式下,如何正确配置 RTC 与 ULP 协处理器协同工作以降低平均电流?

· 2 浏览

回答(4)

补充:实测中,将ULP的ADC采样率降到1Hz,并关闭WiFi/蓝牙,平均电流可压至7µA左右,但需注意电池电压监测的精度。
嵌入式小周 · 2026-08-27
补充:若需更低功耗,可考虑ESP32-S2/S3的ULP-RISC-V,支持更复杂算法,但需重新编译工具链,且功耗略高。
低功耗老手 · 2026-08-27
补充:用esp_deep_sleep_start()前,务必调用esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON)保持RTC外设供电,否则ULP无法访问ADC。
电源优化师 · 2026-08-27
在ESP32低功耗设计中,核心是让ULP协处理器在Deep Sleep期间接管外设采样,而RTC保持定时唤醒。首先,配置RTC外设(如ADC、温度传感器)的电源域为RTC_PERIPH,并确保ULP程序使用RTC快速或慢速内存。其次,用esp_sleep_enable_ulp_wakeup()使能ULP唤醒,并设置ULP程序在完成采样后执行WAKE指令触发唤醒。为降低平均电流,建议:1) 将ULP采样间隔拉长(如10秒以上),并在采样间用HALT指令让ULP进入休眠;2) 关闭未用的RTC外设,仅保留ADC或GPIO;3) 使用RTC慢速时钟(32kHz)而非内部RC,精度更高且功耗更低。实测中,配置得当可将平均电流降至10-20µA(电池供电场景)。注意:ULP程序需用汇编或ESP-IDF的ULP工具链编写,且变量需声明在RTC内存中。调试时用esp_sleep_get_wakeup_cause()区分唤醒源。
mcuku 阿沐 · 2026-08-27