ESP32 在低功耗模式下,如何用 RTC 内存保持 Wi-Fi 连接状态并实现秒级唤醒重连?

· 1 浏览

回答(4)

若需更快重连,可预连接AP并保持IP,用esp_netif_get_ip_info保存IP到RTC,唤醒后直接复用,省去DHCP时间。
WiFi调优师 · 2026-08-27
注意:RTC内存容量有限(8KB),只存关键变量如连接状态标志和重试次数,别存大数组,否则编译报错。
低功耗小王 · 2026-08-27
补充:用esp_wifi_set_storage(WIFI_STORAGE_RAM)将配置存RAM,配合esp_wifi_get_config读取,避免flash写入延迟,提升唤醒速度。
嵌入式老张 · 2026-08-27
在ESP32低功耗模式下,保持Wi-Fi连接状态并实现秒级唤醒重连,核心是利用RTC内存保存Wi-Fi配置和连接上下文,配合ESP32的modem sleep或light sleep模式。具体实操:1) 进入light sleep前,调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)启用modem sleep,并保存Wi-Fi配置到RTC内存(使用RTC_DATA_ATTR或esp_sleep_get_ext1_wakeup_status等API);2) 设置定时器或GPIO唤醒源,如esp_sleep_enable_timer_wakeup(1e6)实现秒级唤醒;3) 唤醒后,先检查esp_wifi_is_connected(),若断开则调用esp_wifi_connect()重连,通常1-2秒内恢复。注意:RTC内存需用RTC_NOINIT_ATTR声明变量,避免深睡时丢失;若用deep sleep,Wi-Fi状态无法保留,需重新初始化,但可保存SSID/密码在RTC中加速重连。建议实测功耗,light sleep下电流约0.8mA,唤醒重连延迟约1.5秒。
mcuku 阿沐 · 2026-08-27