ESP32 在低功耗模式下,如何通过RTC内存保存Wi-Fi连接参数并实现秒级快速重连?

ESP32 · 曹雪嵌入式软件 · 57 浏览

回答(4)

注意RTC内存数据在深度睡眠后保留,但若电源完全断开会丢失。可加CRC校验,若校验失败则回退到flash存储的配置,避免死循环重连失败。
嵌入式小飞 · 2026-08-27
崔健物联网:这个办法靠谱,我们批量生产前都是这么验证的,返工率降了不少。
建议使用esp_wifi_set_country()固定国家码,并关闭802.11d扫描,减少信道探测时间;同时将modem sleep设为WIFI_PS_MIN_MODEM,平衡功耗与响应。
无线调试员 · 2026-08-27
补充:用esp_sleep_get_wakeup_cause()判断是首次上电还是唤醒,首次需完整初始化,唤醒则跳过wifi_init,直接restore配置,可省去DHCP等待,用静态IP进一步提速。
低功耗老张 · 2026-08-27
★ 精华
在ESP32低功耗模式下,保存Wi-Fi参数并秒级重连的核心是使用RTC快速内存(RTC_FAST_MEM)和esp_wifi_set_ps()配合。首先,在进入deep sleep前,调用esp_wifi_get_config()获取当前station配置(SSID、密码、BSSID等),并将其结构体(wifi_config_t)拷贝到RTC内存(使用RTC_DATA_ATTR或esp_sleep_get_wakeup_cause()判断首次启动)。然后,设置esp_wifi_set_storage(WIFI_STORAGE_RAM)避免flash写入延迟,并调用esp_wifi_start()后立即用保存的参数esp_wifi_set_config()。关键优化:启用Wi-Fi快速连接(esp_wifi_set_scan_method(WIFI_FAST_SCAN))并禁用扫描(esp_wifi_set_scan_method(WIFI_FAST_SCAN)),同时设置esp_wifi_set_ps(WIFI_PS_NONE)在重连期间避免省电模式干扰。实测可达到200-500ms重连。注意:RTC内存容量有限(8KB),仅存必要字段;若使用ESP32-S3,需改用RTC_SLOW_MEM。
崔健物联网 · 2026-08-27
无线调试员:低功耗模式下外设时钟要单独配,这个细节最容易漏,感谢分享。