在ESP32低功耗模式下,保持Wi-Fi连接状态的关键是使用RTC快速唤醒(Fast RTC)和Wi-Fi睡眠模式(Modem Sleep),而非深度睡眠(Deep Sleep)。配置步骤:1)启用CONFIG_PM_ENABLE和CONFIG_FREERTOS_USE_TICKLESS_IDLE,设置esp_pm_config_esp32_t中的max_freq_mhz为80MHz,min_freq_mhz为40MHz,enable_light_sleep为true;2)调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)启用Modem Sleep,此时Wi-Fi在无数据时自动关闭射频,但保持连接;3)使用esp_sleep_enable_timer_wakeup或GPIO唤醒,并确保唤醒源配置在RTC域(如RTC_GPIO);4)唤醒后无需重连,直接调用esp_wifi_connect()(若状态为WIFI_STATUS_LOST)或检查esp_wifi_is_connected()。注意:RTC内存中需保存Wi-Fi配置(如SSID、密码),但ESP32的Wi-Fi驱动已自动处理,无需手动存储。实测唤醒重连时间可降至10-30ms,相比深度睡眠的500ms+大幅缩短。建议用esp_timer测量实际耗时,并避免在唤醒后调用esp_wifi_stop()。
mcuku 阿沐 · 2026-08-27