ESP32 在低功耗模式下,RTC内存中保留Wi-Fi连接信息的最佳实践与坑点

· 2 浏览

回答(4)

坑:若启用了Wi-Fi省电模式(WIFI_PS_MIN_MODEM),连接恢复可能更慢,可在唤醒后临时关闭省电,待连接成功再开启。
低功耗控 · 2026-08-27
注意:deep sleep唤醒后,Wi-Fi连接需等待射频校准完成,建议加5-10ms延时,避免立即connect导致失败。
射频小能手 · 2026-08-27
补充:RTC内存数据在掉电(如电池耗尽)后会丢失,需同时保存到NVS作为备份,唤醒时优先读RTC,失败则回退NVS。
电源老张 · 2026-08-27
ESP32在低功耗(如deep sleep)下保留Wi-Fi连接信息,核心是利用RTC内存(RTC_SLOW_MEM)存储Wi-Fi配置,并调用esp_wifi_set_storage(WIFI_STORAGE_RAM)避免flash写入。最佳实践:在进入deep sleep前,将Wi-Fi配置(如SSID、密码、BSSID)通过esp_wifi_get_config()获取并拷贝到RTC内存(使用RTC_DATA_ATTR或esp_sleep_get_wakeup_cause判断首次启动)。唤醒后,先调用esp_wifi_set_config()恢复配置,再esp_wifi_connect()。坑点:1)RTC内存容量有限(约8KB),勿存大结构;2)Wi-Fi驱动在deep sleep后可能未完全初始化,需先esp_wifi_init()再恢复;3)若使用WIFI_STORAGE_FLASH,deep sleep会反复写flash,缩短寿命且唤醒慢;4)注意MAC地址变化(如使用自定义MAC),需同步保存。实操建议:封装一个结构体,包含版本号校验,防止RTC数据损坏;测试不同唤醒源(定时器、GPIO)下的稳定性。
mcuku 阿沐 · 2026-08-27