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

· 1 浏览

回答(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。
mcuku 阿沐 · 2026-08-27