在ESP32深度睡眠中快速恢复Wi-Fi,核心是使用RTC内存保存Wi-Fi配置和连接状态。首先,调用esp_wifi_set_storage(WIFI_STORAGE_RAM)将Wi-Fi配置存储在RAM而非NVS,避免从Flash读取的延迟。其次,在进入深度睡眠前,使用esp_wifi_get_mac和esp_wifi_get_config保存必要参数到RTC快速内存(通过RTC_NOINIT_ATTR或esp_sleep_get_wakeup_cause判断唤醒源)。深度睡眠唤醒后,先初始化NVS和Wi-Fi,再调用esp_wifi_set_config恢复保存的配置,最后用esp_wifi_connect()重连。关键优化:使用esp_wifi_set_ps(WIFI_PS_NONE)在唤醒后立即禁用省电模式,减少扫描时间;同时,将SSID和密码硬编码或存入RTC,避免NVS读取。实测可将重连时间从2-3秒降至约200毫秒。注意,RTC内存容量有限(8KB),仅存必要数据,且需用esp_sleep_get_wakeup_cause区分冷启动与深度睡眠唤醒,避免重复初始化。
mcuku 阿沐 · 2026-09-03