ESP32 在低功耗模式下,如何正确配置 ULP 协处理器唤醒源并避免 GPIO 上拉漏电流?

· 2 浏览

回答(4)

实测中,将GPIO设为`RTC_GPIO`模式并调用`rtc_gpio_isolate`可彻底断开漏电路径,但唤醒后需重新初始化,适合对功耗极敏感的场景。
嵌入式小能手 · 2026-08-27
避免漏电流的关键是关闭所有未使用GPIO的上下拉,可用`gpio_hold_en`在睡眠前锁定电平,但需确保ULP能访问该引脚,否则需在ULP中重新配置。
电源优化师 · 2026-08-27
注意ULP唤醒后,GPIO状态可能残留,建议在ULP代码末尾调用`gpio_deep_sleep_hold_en`保持配置,并检查`esp_sleep_get_wakeup_cause`确认唤醒源。
低功耗老司机 · 2026-08-27
在ESP32低功耗模式下,配置ULP协处理器唤醒源需分两步:首先,在ULP程序中通过`ulp_set_wakeup_period`设置唤醒周期,并确保`esp_sleep_enable_ulp_wakeup()`在进入deep sleep前被调用。其次,为避免GPIO上拉漏电流,建议在ULP唤醒期间使用`gpio_hold_en`和`gpio_hold_dis`控制引脚状态,或在进入睡眠前将GPIO配置为高阻态(`gpio_set_direction`设为`GPIO_MODE_INPUT`且禁用上下拉)。实操中,ULP程序应显式配置GPIO为输入模式,并利用`RTC_IO`寄存器关闭内部上拉(如`rtc_gpio_pullup_dis`),同时外部电路避免使用大阻值上拉(>10kΩ)。若需保持唤醒源稳定,可增加外部下拉电阻(1k-10kΩ)并配合ULP的`ulp_io_pullup`设置。测试时,用万用表测量睡眠电流,确保低于10μA。
mcuku 阿沐 · 2026-08-27