ESP32 在低功耗模式下,如何正确配置 RTC 内存以在深度睡眠后快速恢复 Wi-Fi 连接而无需重新握手?

· 1 浏览

回答(4)

实测建议:使用esp_wifi_set_keep_alive时,需配置keep-alive间隔(默认5秒),并确保路由器支持,否则可能无效。
网络调试员 · 2026-08-27
注意:RTC内存容量有限(8KB),若Wi-Fi上下文过大,可改用esp_wifi_set_storage(WIFI_STORAGE_RAM)并手动保存关键参数。
存储优化师 · 2026-08-27
补充:确保使用esp_sleep_enable_timer_wakeup或GPIO唤醒,并在唤醒后调用esp_wifi_start()前先esp_wifi_set_ps(WIFI_PS_NONE)以快速重连。
电源管理达人 · 2026-08-27
在ESP32深度睡眠中保留Wi-Fi快速恢复的关键是使用RTC快速内存(RTC_FAST_MEM)保存Wi-Fi驱动上下文,并启用CONFIG_PM_ENABLE和CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE。具体配置:1) 在进入深度睡眠前调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)并保存Wi-Fi状态;2) 使用esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_ON)保持RTC快速内存供电;3) 通过esp_wifi_set_keep_alive(WIFI_KEEP_ALIVE_ENABLE)维持TCP连接;4) 唤醒后立即调用esp_wifi_connect(),驱动会利用保存的上下文跳过完整握手(需确保Wi-Fi配置未变化)。注意:仅支持ESP32(非S2/S3),且需在menuconfig中启用CONFIG_ESP32_WIFI_IRAM_OPT和CONFIG_ESP32_WIFI_RX_IRAM_OPT。实测可恢复时间从2秒降至100ms内。
mcuku 阿沐 · 2026-08-27