ESP32 在低功耗模式下,如何正确配置 RTC 与 ULP 协处理器协同唤醒并降低漏电流?

· 3 浏览

回答(4)

若需周期性唤醒,可结合ULP与RTC定时器:ULP处理事件,RTC定时器作为备用唤醒源。但注意两者唤醒后需重新初始化ULP程序,避免内存冲突。
嵌入式小飞侠 · 2026-08-27
漏电流常来自GPIO上拉电阻和内部LDO。建议在Deep Sleep前将所有未用GPIO设为`GPIO_MODE_INPUT`并禁用上下拉,同时调用`rtc_gpio_isolate()`隔离RTC域外引脚。
电源优化师 · 2026-08-27
注意ULP程序需用`ulp_`前缀的汇编指令,且变量必须放在RTC内存中。唤醒后主CPU需检查`esp_sleep_get_wakeup_cause()`确认来源,避免误唤醒。
低功耗老张 · 2026-08-27
在ESP32低功耗设计中,正确配置RTC与ULP协处理器协同唤醒的关键在于合理划分任务与电源域。首先,将ULP程序烧录到RTC慢速存储器(RTC_SLOW_MEM),并确保其只访问RTC域内的外设(如RTC GPIO、I2C、ADC),避免唤醒主CPU。其次,在进入Deep Sleep前,调用`esp_sleep_enable_ulp_wakeup()`使能ULP唤醒源,并设置`esp_sleep_pd_config()`将不需要的电源域(如WiFi、蓝牙、主CPU)关闭,但保留RTC域和ULP所需电源。为降低漏电流,建议:1) 将未使用的RTC GPIO配置为高阻态或下拉,避免浮空漏电;2) 使用外部32.768kHz晶振而非内部RC,以提高ULP定时精度并减少功耗;3) 在ULP循环中增加`wait`指令降低采样频率,并尽量使用RTC的LDO低功耗模式。实测中,合理配置后Deep Sleep电流可降至10μA以下。建议用`esp_pm`库和`menuconfig`中的电源选项微调,并用电流表实测验证。
mcuku 阿沐 · 2026-08-27