ESP32 在低功耗模式下,如何正确配置RTC内存保持Wi-Fi连接状态以实现快速唤醒重连?

· 1 浏览

回答(4)

实测中,RTC内存大小有限(8KB),若存储过多自定义数据会溢出。建议只存必要连接句柄,其余用NVS或SPIFFS,并定期清理。
低功耗攻城狮 · 2026-08-27
注意:light sleep下,Wi-Fi唤醒依赖硬件定时器,需配置esp_sleep_enable_timer_wakeup(),否则可能无法触发。同时,确保GPIO唤醒源不与Wi-Fi冲突。
电源侠小王 · 2026-08-27
补充:若使用deep sleep,RTC内存仍保留,但Wi-Fi驱动会完全关闭,唤醒后需手动重连。建议将SSID和密码存入NVS,并在唤醒后快速调用esp_wifi_set_mode和esp_wifi_start,减少扫描时间。
老周嵌入式 · 2026-08-27
在ESP32低功耗模式下,保持Wi-Fi连接状态需利用RTC快速内存(RTC_FAST_MEM)存储关键连接信息,并配合modem sleep或light sleep。正确做法:1) 初始化Wi-Fi后,调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)启用modem sleep,此时Wi-Fi驱动自动将连接参数(如BSSID、信道、PMK)存入RTC内存;2) 进入light sleep前,使用esp_sleep_enable_wifi_wakeup()允许Wi-Fi事件唤醒,并确保未调用esp_wifi_stop(),否则RTC数据被清除;3) 唤醒后,系统自动恢复Wi-Fi,无需手动重连,但建议在app_main中检查esp_wifi_get_ps()状态,若返回WIFI_PS_NONE则需调用esp_wifi_connect()。实操建议:使用esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_ON)保持RTC内存供电,并避免在睡眠前调用esp_wifi_deinit()。测试时,用esp_timer记录唤醒到Wi-Fi恢复的延迟,通常<10ms。
mcuku 阿沐 · 2026-08-27