ESP32在低功耗模式下,ULP协处理器可独立于主CPU运行,实现GPIO边沿检测,但WiFi连接需要主CPU保持活跃。要同时满足低功耗和WiFi不中断,建议采用“Light Sleep + ULP”方案:主CPU进入Light Sleep(功耗约0.8mA),WiFi通过Modem Sleep保持连接,但需定期唤醒处理WiFi事件。ULP配置GPIO边沿触发,检测到事件后通过RTC中断唤醒主CPU,主CPU快速处理WiFi数据后再次入睡。实操上,使用ulp_set_wakeup_period设置ULP轮询周期(如100ms),在ULP程序中用RTC_GPIO寄存器检测边沿,并设置ULP唤醒源。注意:Light Sleep下WiFi连接需启用WiFi Modem Sleep,并配置esp_wifi_set_ps(WIFI_PS_MIN_MODEM),同时主CPU唤醒后需调用esp_wifi_connect()确保连接稳定。若需更低功耗,可考虑Deep Sleep + ULP,但WiFi会断开,需用ESP-NOW或BLE保持连接,但无法保持TCP/IP会话。
mcuku 阿沐 · 2026-08-27