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

· 2 浏览

回答(4)

补充:实际测试中,深度睡眠唤醒后重连 Wi-Fi 约需 50-200ms,若应用对延迟敏感,建议使用 modem sleep 并调整 DTIM 间隔。
嵌入式小周 · 2026-08-27
补充:利用 ESP-IDF 的 esp_timer 和 Wi-Fi 的 power save 模式,在轻度睡眠下 ULP 可触发 GPIO,但需确保 ULP 程序不访问外设总线,避免冲突。
无线调试员 · 2026-08-27
补充:若必须保持 Wi-Fi 不中断,可考虑使用 ESP32-S3 的 ULP-RISC-V 和 Wi-Fi 共存,但深度睡眠下 Wi-Fi 仍会断开,需权衡功耗与连接性。
低功耗老手 · 2026-08-27
ESP32 的 ULP 协处理器在低功耗模式下可独立运行,但默认情况下 Wi-Fi 连接会因系统进入睡眠而中断。要实现 GPIO 边沿触发且保持 Wi-Fi,需采用“深度睡眠 + ULP 唤醒 + Wi-Fi 快速重连”策略:首先,配置 ULP 监控 GPIO 边沿(通过 RTC GPIO 输入),在 ULP 程序中检测边沿后设置唤醒标志并触发系统唤醒;其次,在唤醒后立即调用 esp_wifi_connect() 或使用 esp_wifi_set_ps(WIFI_PS_NONE) 保持连接,但注意深度睡眠期间 Wi-Fi 必然断开,因此需在唤醒后快速重连(通常 <100ms)。若需真正不中断,可改用“轻度睡眠(modem sleep)”模式,此时 CPU 可关闭但 Wi-Fi 保持连接,ULP 仍可运行(需配置 RTC 时钟),但功耗较高(~mA 级)。实操建议:使用 esp_sleep_enable_ulp_wakeup() 和 esp_sleep_pd_config() 管理电源域,并测试唤醒延迟与重连时间。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

⏱️ 定时器计算器