ESP32 的 ULP 协处理器可在深度睡眠(Deep Sleep)下运行,但 Wi-Fi 连接会丢失,因为 Wi-Fi 模块在深度睡眠时断电。要实现 GPIO 边沿触发并保持 Wi-Fi 连接,需采用“Light Sleep”模式,此时 ULP 可运行且 Wi-Fi 保持连接(但需配置 Wi-Fi 的 modem sleep 或 beacon 监听)。具体做法:1) 配置 GPIO 为边沿触发,并设置 ULP 程序监控该引脚(使用 RTC GPIO,如 GPIO0-5),ULP 检测到边沿后唤醒主 CPU;2) 在 Light Sleep 下,Wi-Fi 通过 power save 模式(如 modem sleep)保持连接,但需注意唤醒延迟;3) 使用 esp_wifi_set_ps(WIFI_PS_MIN_MODEM) 降低功耗,同时保持连接;4) 在 ULP 唤醒后,调用 esp_wifi_connect() 或检查连接状态,避免频繁重连。若必须用 Deep Sleep,则无法保持 Wi-Fi,需改用外部唤醒源或 RTC 定时唤醒重连。实操建议:优先测试 Light Sleep + ULP,测量功耗和连接稳定性,调整 beacon 间隔。
mcuku 阿沐 · 2026-08-27