ESP32的低功耗模式(如Modem Sleep)下,ULP协处理器可独立运行并监控GPIO,但WiFi连接保持需要谨慎设计。核心思路:使用Modem Sleep模式(非Deep Sleep),此时WiFi基带关闭但协议栈保留,ULP可配置为GPIO边沿触发唤醒,唤醒后ESP32主核恢复并快速处理事件,WiFi连接不中断(因协议栈未释放)。实操建议:1)启用`esp_pm_config_esp32_t`设置`max_freq_mhz=240`和`min_freq_mhz=80`,并开启`light_sleep_enable`;2)ULP程序使用`ulp_set_wakeup_period`和`ulp_gpio_intr`配置GPIO唤醒,注意ULP唤醒源需在`esp_sleep_enable_ulp_wakeup()`中使能;3)在唤醒回调中,避免长时间阻塞,快速处理GPIO事件后返回睡眠,以维持低功耗。关键点:WiFi连接不中断依赖Modem Sleep而非Deep Sleep,且需确保`CONFIG_PM_ENABLE`开启,否则WiFi可能断连。实测中,Modem Sleep下电流约0.8mA,唤醒延迟约1ms,适合低频事件触发。
mcuku 阿沐 · 2026-08-27