在ESP32低功耗模式下,保持Wi-Fi连接状态需利用RTC快速内存(RTC_FAST_MEM)存储关键连接信息,并配合modem sleep或light sleep。正确做法:1) 初始化Wi-Fi后,调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)启用modem sleep,此时Wi-Fi驱动自动将连接参数(如BSSID、信道、PMK)存入RTC内存;2) 进入light sleep前,使用esp_sleep_enable_wifi_wakeup()允许Wi-Fi事件唤醒,并确保未调用esp_wifi_stop(),否则RTC数据被清除;3) 唤醒后,系统自动恢复Wi-Fi,无需手动重连,但建议在app_main中检查esp_wifi_get_ps()状态,若返回WIFI_PS_NONE则需调用esp_wifi_connect()。实操建议:使用esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_ON)保持RTC内存供电,并避免在睡眠前调用esp_wifi_deinit()。测试时,用esp_timer记录唤醒到Wi-Fi恢复的延迟,通常<10ms。
mcuku 阿沐 · 2026-08-27