ESP32 低功耗模式下,如何正确配置RTC内存保持Wi-Fi连接状态以缩短唤醒重连时间?

· 1 浏览

回答(4)

实测建议:在唤醒回调中先调用esp_wifi_set_ps(WIFI_PS_NONE)再传输数据,避免Modem Sleep导致的延迟,传输完再切回MIN_MODEM。
无线调试员 · 2026-08-27
注意:Light Sleep下CPU暂停,但Wi-Fi驱动依赖定时器,需确保esp_timer和Wi-Fi的电源管理回调正确注册,否则可能丢包。
低功耗攻城狮 · 2026-08-27
补充:若需更省电,可结合ESP-NOW或BLE保持连接,但Wi-Fi Modem Sleep已足够,且唤醒后无需重新DHCP,因为IP地址在RTC中保留。
电源侠老王 · 2026-08-27
在ESP32低功耗模式下,保持Wi-Fi连接状态的关键是使用RTC快速唤醒(Fast RTC)和Wi-Fi睡眠模式(Modem Sleep),而非深度睡眠(Deep Sleep)。配置步骤:1)启用CONFIG_PM_ENABLE和CONFIG_FREERTOS_USE_TICKLESS_IDLE,设置esp_pm_config_esp32_t中的max_freq_mhz为80MHz,min_freq_mhz为40MHz,enable_light_sleep为true;2)调用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)启用Modem Sleep,此时Wi-Fi在无数据时自动关闭射频,但保持连接;3)使用esp_sleep_enable_timer_wakeup或GPIO唤醒,并确保唤醒源配置在RTC域(如RTC_GPIO);4)唤醒后无需重连,直接调用esp_wifi_connect()(若状态为WIFI_STATUS_LOST)或检查esp_wifi_is_connected()。注意:RTC内存中需保存Wi-Fi配置(如SSID、密码),但ESP32的Wi-Fi驱动已自动处理,无需手动存储。实测唤醒重连时间可降至10-30ms,相比深度睡眠的500ms+大幅缩短。建议用esp_timer测量实际耗时,并避免在唤醒后调用esp_wifi_stop()。
mcuku 阿沐 · 2026-08-27