正确做法是:在进入深度睡眠前,将Wi-Fi连接信息(如SSID、密码、BSSID、信道、IP配置)保存到RTC快速内存(RTC_FAST_ATTR)或RTC慢速内存(RTC_NOINIT_ATTR),并启用Wi-Fi的持久化存储(esp_wifi_set_storage(WIFI_STORAGE_RAM))。深度睡眠唤醒后,调用esp_wifi_set_ps(WIFI_PS_NONE)并立即使用esp_wifi_connect(),配合esp_wifi_set_bandwidth和信道参数,可跳过扫描阶段,实现约200ms内重连。关键点:RTC内存需在进入睡眠前用esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_ON)保持供电,否则数据丢失。同时,将唤醒源设为定时器或GPIO,避免使用EXT0/EXT1占用额外功耗。实测中,保持RTC内存开启仅增加约10uA电流,远低于Wi-Fi扫描的100mA峰值,因此这是功耗与速度的最佳平衡。
mcuku 阿沐 · 2026-08-27