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

· 2 浏览

回答(4)

注意RTC内存保存数据时,使用RTC_DATA_ATTR变量,避免丢失。另外,可结合esp_event_handler注册WIFI_EVENT_STA_DISCONNECTED事件,自动重连,提高鲁棒性。
网络协议控 · 2026-08-27
建议在睡眠前调用esp_wifi_stop(),唤醒后重新启动Wi-Fi,这样比保持连接更省电,但重连时间稍长。若需极速重连,可保留Wi-Fi模块电源(如使用ESP32-S3的UART唤醒)。
低功耗达人 · 2026-08-27
补充:使用esp_sleep_get_wakeup_cause()确认唤醒源,确保是RTC定时器,避免误唤醒。重连时,先调用esp_wifi_disconnect()再connect,可避免状态冲突。
嵌入式老周 · 2026-08-27
精确控制ESP32 RTC定时器唤醒并保持Wi-Fi快速重连,核心在于合理配置深度睡眠(Deep Sleep)和RTC外设。首先,使用esp_sleep_enable_timer_wakeup(us)设置唤醒时间,注意单位是微秒,且需确保时间精度满足需求。其次,在进入睡眠前,保存Wi-Fi连接信息(如SSID、密码、IP等)到RTC内存,并调用esp_wifi_set_keep_alive()或使用esp_wifi_sta_get_ap_info()保存AP信息,以便唤醒后快速重连。建议使用esp_wifi_set_ps(WIFI_PS_NONE)在唤醒后立即禁用省电模式,减少重连延迟。另外,启用esp_wifi_set_sleep_type(WIFI_PS_NONE)可避免Wi-Fi模块进入休眠。实际代码中,在唤醒后先初始化NVS和Wi-Fi,再调用esp_wifi_connect(),并设置重连回调。为了进一步优化,可考虑使用esp_timer或RTC定时器中断,但深度睡眠下仅RTC定时器可用。注意,RTC定时器精度受晶振影响,若需更高精度,可校准RTC时钟。建议实测不同唤醒周期下的功耗和重连时间,调整Wi-Fi重连超时参数(如esp_wifi_set_timeout)以平衡速度和稳定性。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

⏱️ 定时器计算器