在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