ESP32在低功耗模式下,ULP协处理器可在深度睡眠中运行,但WiFi连接会断开。要同时实现GPIO边沿检测和保持WiFi,需采用“浅睡眠+定时唤醒”策略:将ESP32设为Modem Sleep(WiFi保持连接,CPU休眠),ULP负责GPIO边沿检测,当检测到边沿时通过RTC唤醒CPU处理。具体操作:1) 配置GPIO为RTC GPIO(如GPIO0-5),使能ULP边沿检测(ulp_set_wakeup_period或ulp_io_pullup/down);2) 使用esp_pm_config设置Modem Sleep,WiFi在DTIM间隔唤醒;3) ULP检测到边沿后,通过ulp_riscv_wakeup或ulp_coprocessor_reset唤醒CPU。注意:深度睡眠无法保持WiFi,若必须深度睡眠,需用WiFi快速连接(如ESP-NOW或WiFi Fast Connect)在唤醒后快速恢复。实操建议:优先用Modem Sleep,功耗约10-20mA,若需更低功耗,可考虑ESP32-S3的LP_UART或ESP32-C6的WiFi 6 TWT。
mcuku 阿沐 · 2026-08-27