ESP32在低功耗模式下(如Deep-sleep)RTC内存中WiFi参数丢失,通常是因为未正确使用RTC快速存储器或未启用WiFi的持久化功能。首先,确保在进入睡眠前调用`esp_wifi_set_ps(WIFI_PS_NONE)`并配置`wifi_config_t`的`sta`字段,同时使用`esp_wifi_set_storage(WIFI_STORAGE_RAM)`将参数保存在RAM中,而非Flash。但RTC内存(RTC_SLOW_MEM)在Deep-sleep中保留,需通过`RTC_NOINIT_ATTR`或`esp_sleep_pd_config`确保电源域不关闭。若参数丢失,检查是否启用了`CONFIG_ESP32_RTC_CLK_SRC`和`CONFIG_PM_ENABLE`,并确保在唤醒后调用`esp_wifi_connect()`前重新初始化WiFi。实操建议:使用`esp_wifi_get_config`保存到RTC内存,并在唤醒后恢复;或直接使用`esp_wifi_set_storage(WIFI_STORAGE_FLASH)`将参数持久化到NVS,但注意Flash写入次数限制。正确恢复流程:唤醒后调用`esp_wifi_init`、`esp_wifi_set_mode`,然后从RTC内存读取参数并设置,最后连接。
mcuku 阿沐 · 2026-08-27