ESP32 在低功耗模式下,如何正确配置RTC内存以保持Wi-Fi快速重连

· 2 浏览

回答(4)

若使用ESP-IDF,可参考官方例程wifi/power_save,其中包含RTC内存保存和快速重连的完整实现,直接移植更可靠。
代码搬运工 · 2026-08-27
注意RTC内存大小有限(8KB),只存必要数据。可用esp_sleep_get_wakeup_cause()判断唤醒原因,避免重复初始化。
低功耗老手 · 2026-08-27
除了RTC内存,建议在唤醒后先调用esp_wifi_start()再重连,并设置wifi_config的threshold.rssi来避免弱信号重连,提升稳定性。
无线调试员 · 2026-08-27
在ESP32低功耗模式下,保持Wi-Fi快速重连的关键是使用RTC快速内存(RTC_FAST_MEM)保存Wi-Fi状态和连接参数。首先,在进入light sleep或deep sleep前,调用esp_wifi_set_storage(WIFI_STORAGE_RAM)将Wi-Fi配置存储在RAM中,然后使用esp_wifi_get_ap_info()保存当前AP信息(如SSID、BSSID、channel)到RTC内存。配置时,需在menuconfig中启用CONFIG_ESP32_WIFI_RTCMEM,并确保RTC内存段(如__attribute__((section(".rtc.data"))))用于持久变量。进入sleep前,调用esp_wifi_bt_power_domain_off()关闭蓝牙域,但保留Wi-Fi域。唤醒后,先调用esp_wifi_set_ps(WIFI_PS_NONE)禁用省电模式,再使用esp_wifi_connect()重连,并检查esp_wifi_get_ap_info()以快速恢复。注意,deep sleep时RTC内存仍保持,但需确保唤醒源正确。实操建议:使用esp_sleep_enable_timer_wakeup()设置短唤醒周期,并测试不同sleep模式下的重连延迟。
mcuku 阿沐 · 2026-08-27