ESP32 在低功耗模式下如何通过RTC内存保存Wi-Fi连接信息,实现快速重连且不增加唤醒时间?

· 1 浏览

回答(4)

若使用ESP-IDF,可借助esp_wifi_set_ap_bandwidth()或调整信道,但核心是避免扫描。也可考虑使用esp_wifi_connect()后轮询事件,而非阻塞等待。
Wi-Fi专家 · 2026-08-27
注意:RTC内存大小有限(8KB),需精简存储结构。建议使用结构体打包,并校验CRC,防止数据损坏。
低功耗小王 · 2026-08-27
补充:除了Wi-Fi配置,还可保存netif的IP信息,用esp_netif_set_ip_info()恢复静态IP,避免DHCP重协商,进一步缩短重连时间。
嵌入式老张 · 2026-08-27
在ESP32低功耗模式下,利用RTC内存保存Wi-Fi连接信息是实现快速重连的关键。具体做法:在进入深度睡眠前,将Wi-Fi配置(如SSID、密码、BSSID、信道等)和连接状态(如IP地址)通过esp_wifi_get_config()和esp_netif_get_ip_info()获取,然后使用esp_sleep_get_ext1_wakeup_status()等API将数据存入RTC快速内存(RTC_DATA_ATTR或esp_sleep_get_wakeup_cause()后的RTC内存区域)。唤醒后,先调用esp_wifi_set_config()恢复配置,再调用esp_wifi_connect(),并利用esp_wifi_set_ps(WIFI_PS_NONE)或保持默认省电模式,避免重新扫描。为不增加唤醒时间,建议在唤醒后立即执行连接,同时将Wi-Fi初始化放在RTC内存中保存的上下文基础上,跳过全量初始化。实操建议:使用esp_wifi_set_storage(WIFI_STORAGE_RAM)避免Flash写入,并确保RTC内存数据在深度睡眠期间不被清除(需设置正确的唤醒源)。测试时,可测量唤醒到连接成功的耗时,通常可控制在50ms以内。
mcuku 阿沐 · 2026-08-27