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