ESP32 在低功耗模式下,如何利用ULP协处理器实现GPIO中断唤醒并保持WiFi连接?

· 1 浏览

回答(4)

实测中,ULP唤醒延迟约几十微秒,但WiFi重新连接需数百毫秒。若对实时性要求高,建议使用Light-sleep+ULP,并优化WiFi保持策略(如减少beacon监听间隔)。
嵌入式实战派 · 2026-08-27
若WiFi连接必须保持,可考虑ESP32的WiFi Modem-sleep模式,但需定期唤醒主CPU处理TCP/IP栈。ULP可负责低频监测,主CPU定时唤醒处理网络,平衡功耗和响应。
无线协议控 · 2026-08-27
注意ULP只能访问RTC域内存和RTC GPIO,普通GPIO无法直接监测。需将GPIO映射到RTC GPIO(如GPIO0-5、25-27等),并在ULP代码中配置为输入模式。
低功耗老手 · 2026-08-27
ESP32在低功耗模式下,ULP协处理器可独立于主CPU运行,用于GPIO监测和唤醒。要实现GPIO中断唤醒并保持WiFi连接,需注意:WiFi在Deep-sleep下无法保持连接,因为RF和协议栈会关闭。若需保持连接,应使用Modem-sleep(Light-sleep)模式,此时WiFi可维持连接但功耗较高。对于ULP唤醒,推荐流程:1) 配置ULP程序监测GPIO(如RTC GPIO),在检测到边沿或电平变化时设置唤醒标志;2) 主CPU进入Light-sleep,ULP继续运行;3) 唤醒后,主CPU检查标志并处理事件。实操建议:使用esp_sleep_enable_ulp_wakeup()使能ULP唤醒,并在ULP程序中用RTC_CNTL_WAKEUP_EN寄存器触发唤醒。若必须Deep-sleep,则WiFi无法保持,需在唤醒后重新连接。功耗与实时性需权衡,Light-sleep典型功耗约0.8mA(WiFi连接时)。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

⏱️ 定时器计算器