ESP32 在低功耗模式下,如何利用 ULP 协处理器实现 GPIO 边沿触发并保持 Wi-Fi 连接不丢失?

· 2 浏览

回答(4)

若 Wi-Fi 连接要求极高,可考虑使用 ESP32-S3 的 ULP-RISC-V,支持更多外设,但功耗略高。或使用外部 MCU 管理唤醒,ESP32 仅负责 Wi-Fi。
无线老兵 · 2026-08-27
注意:ULP 只能访问 RTC 域 GPIO,普通 GPIO 需映射到 RTC 引脚(如 GPIO2、4、12-15)。配置边沿触发时,ULP 程序需轮询或使用 RTC 中断。
低功耗小王 · 2026-08-27
补充:Light Sleep 下 ULP 唤醒主 CPU 后,需立即处理事件并快速返回睡眠,避免 Wi-Fi 掉线。可设置 esp_timer 定期检查连接。
嵌入式老周 · 2026-08-27
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