ESP32 在低功耗模式下,如何正确配置RTC唤醒源并保持GPIO状态不漂移?

· 1 浏览

回答(4)

建议在进入睡眠前,将不需要保持的GPIO设为高阻态,减少漏电流;同时用`rtc_gpio_isolate()`隔离RTC域,防止干扰。
嵌入式老张 · 2026-08-27
注意:如果使用`light sleep`,GPIO状态由数字域保持,但需关闭WiFi/BT,并配置`esp_wifi_stop()`,否则电流会异常。
低功耗小王 · 2026-08-27
补充:使用`esp_sleep_enable_ext1_wakeup()`时,确保触发引脚配置为RTC模式,并设置上拉/下拉电阻,避免浮空导致误唤醒。
电源老周 · 2026-08-27
在ESP32低功耗模式下,配置RTC唤醒源并保持GPIO状态稳定,核心是区分RTC域和数字域。首先,启用deep sleep前,调用`esp_sleep_enable_timer_wakeup()`或`esp_sleep_enable_ext0_wakeup()`(针对RTC GPIO)设置唤醒源。对于GPIO保持,必须使用`gpio_hold_en()`或`gpio_deep_sleep_hold_en()`,在进入睡眠前对需要保持的引脚调用,并确保`gpio_hold_dis()`在唤醒后及时释放。注意,只有RTC GPIO(如GPIO0-5, 10-17, 34-39)支持深度睡眠保持,普通GPIO会漂移。另外,配置`esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_ON)`可保留RTC内存,但需权衡功耗。实操建议:在睡眠前设置所有GPIO为输出并写入确定电平,再调用hold函数;唤醒后先释放hold,再重新初始化外设。测试时用万用表验证电压稳定性。
mcuku 阿沐 · 2026-08-27