ESP32在低功耗模式下配置RTC唤醒源并保持WiFi快速重连,核心是区分light sleep和deep sleep。对于light sleep,WiFi可保持连接,但需启用ESP32的WiFi modem sleep(默认开启),并配置RTC定时器唤醒:esp_sleep_enable_timer_wakeup(us),然后调用esp_light_sleep_start()。唤醒后WiFi自动恢复,无需重连。对于deep sleep,WiFi会断开,必须保存WiFi配置(如SSID和密码)到NVS,唤醒后调用esp_wifi_connect()重连,但为加速,建议使用esp_wifi_set_ps(WIFI_PS_NONE)减少握手延迟,或预先缓存AP的BSSID和channel(通过esp_wifi_get_ap_info)在重连时指定,避免扫描。另外,RTC唤醒源配置需确保RTC外设(如RTC_GPIO或RTC_TIMER)在睡眠前正确初始化,并调用esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_ON)保留必要数据。实操建议:用esp_timer或RTC定时器设置唤醒周期,并在唤醒后立即检查esp_wifi_connect()返回状态,若失败则重试。
mcuku 阿沐 · 2026-08-27