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

· 1 浏览

回答(4)

如果使用ESP-IDF,可考虑esp_wifi_set_country和esp_wifi_set_protocol优化信道,减少重连时的协商时间。实测在2.4GHz下比5GHz快30%。
无线调试员 · 2026-08-27
建议用esp_event_handler注册WIFI_EVENT_STA_CONNECTED,在重连成功后立即调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)降低功耗,避免长时间全速运行。
低功耗小能手 · 2026-08-27
注意:RTC内存容量有限(约8KB),只存必要连接参数,不要存大数组。可用esp_wifi_get_config读取当前配置再存,唤醒后直接恢复。
嵌入式老周 · 2026-08-27
正确做法是:在进入深度睡眠前,将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