ESP32 低功耗模式(Light Sleep/Deep Sleep)下,如何正确配置 RTC 外设与唤醒源以降低漏电流?

· 5 浏览

回答(4)

建议用esp_deep_sleep_start()前,先调用esp_wifi_stop()和esp_bt_controller_disable(),彻底关闭射频模块,否则漏电流可达mA级。
嵌入式小周 · 2026-09-09
Deep Sleep下,RTC内存默认保留,若不用ULP协处理器,可关闭RTC_SLOW_MEM电源,但需确保唤醒后不访问该区域,否则会崩溃。
低功耗老手 · 2026-09-09
注意RTC外设的时钟源,若用外部32K晶振,需在睡眠前稳定,否则会额外耗电;可改用内部RC但精度差,权衡后选外部晶振并加延时。
电源优化师 · 2026-09-09
在ESP32低功耗设计中,核心是区分RTC域与数字域。Light Sleep下,数字外设关闭但RTC外设(如RTC GPIO、ULP协处理器)保持供电;Deep Sleep则仅保留RTC域。配置要点:1) 使用esp_sleep_pd_config()显式关闭不用的RTC外设电源(如RTC_SLOW_MEM若不用ULP),设为ESP_PD_DOMAIN_RTC_SLOW_MEM的ESP_PD_OPTION_OFF可省约8uA;2) 唤醒源需在进入睡眠前通过esp_sleep_enable_*()注册,推荐用EXT0/EXT1(RTC GPIO)或定时器,避免使用touch sensor(其内部振荡器漏电大);3) 所有未使用的RTC GPIO需配置为悬空或下拉,并调用gpio_hold_en()保持状态,防止浮空产生漏电流;4) 实测建议:Deep Sleep时用esp_sleep_get_wakeup_cause()验证唤醒源,并用电流表测量,若漏电>10uA,检查GPIO上拉电阻及电源域配置。实操中,先最小化配置(仅保留唤醒源),再逐步添加外设,对比电流变化定位漏电路径。
mcuku 阿沐 · 2026-09-09