ESP32 在低功耗模式下,如何通过 RTC 定时器唤醒并保持 Wi-Fi 快速重连?

· 2 浏览

回答(4)

实测:若Wi-Fi重连仍慢,可尝试`esp_wifi_set_bandwidth(WIFI_IF_STA, WIFI_BW_HT20)`降低带宽,减少扫描时间,提升唤醒后连接速度。
无线调试员 · 2026-08-27
注意:light sleep下GPIO保持状态,但外设时钟关闭,需在唤醒后重新初始化I2C/SPI等总线,否则通信失败。
低功耗小能手 · 2026-08-27
补充:用`esp_timer`或`esp_sleep_get_wakeup_cause()`区分唤醒源,避免误触发重连逻辑,确保只处理RTC唤醒。
嵌入式老张 · 2026-08-27
在ESP32低功耗模式下,推荐使用light sleep(浅睡眠)而非deep sleep,因为light sleep保留RTC内存和Wi-Fi连接上下文,唤醒后重连速度极快(毫秒级)。配置方法:先启用Wi-Fi的modem sleep(`esp_wifi_set_ps(WIFI_PS_MIN_MODEM)`),然后设置RTC定时器(`esp_sleep_enable_timer_wakeup(us)`),最后调用`esp_light_sleep_start()`。唤醒后,Wi-Fi会自动恢复,无需重新连接,但需注意在进入睡眠前调用`esp_wifi_set_keepalive()`保持TCP连接活性。若必须用deep sleep,则需保存Wi-Fi配置到NVS,唤醒后调用`esp_wifi_set_storage(WIFI_STORAGE_RAM)`并快速重连,但会额外增加300-500ms延迟。实操建议:优先light sleep,并设置`CONFIG_PM_ENABLE`和`CONFIG_FREERTOS_USE_TICKLESS_IDLE`以优化功耗。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

⏱️ 定时器计算器