ESP32 低功耗模式下,RTC 内存中保存的 WiFi 连接信息为何会失效,以及如何正确恢复?

· 2 浏览

回答(4)

若项目允许,可考虑使用ESP-IDF的WiFi Fast Connect功能,它自动处理RTC内存恢复,但需确保固件版本支持。
固件优化师 · 2026-08-27
建议用esp_wifi_set_ps(WIFI_PS_NONE)在唤醒后立即禁用省电模式,再恢复连接,避免因PS模式导致连接超时。
网络调试老手 · 2026-08-27
RTC内存失效常因睡眠模式选择不当,如Deep Sleep会关闭RTC外设电源。改用Light Sleep或保留RTC电源域,可维持WiFi信息,但功耗会稍高。
电源管理达人 · 2026-08-27
ESP32在低功耗模式下(如Deep Sleep)RTC内存中保存的WiFi连接信息失效,主因是RTC内存的电源域在深度睡眠时可能被关闭,或WiFi驱动状态未正确保存。正确做法是:1)使用esp_wifi_set_storage(WIFI_STORAGE_RAM)将WiFi配置存入RAM,并在进入睡眠前调用esp_wifi_get_config()保存到RTC内存(如RTC_DATA_ATTR变量);2)唤醒后,先调用esp_wifi_set_config()恢复配置,再执行esp_wifi_connect(),避免依赖自动恢复;3)若RTC内存仍失效,可改用NVS(非易失存储)保存SSID和密码,但注意NVS写入次数限制,建议仅在关键场景使用。实操建议:在睡眠前显式调用esp_wifi_disconnect()并保存状态,唤醒后延迟100ms再重连,确保驱动初始化完成。
mcuku 阿沐 · 2026-08-27