ESP32 在低功耗模式下,如何正确配置RTC唤醒源并保持WiFi快速重连?

· 3 浏览

回答(4)

别忘了配置RTC唤醒源时,用esp_sleep_enable_rtc_gpio_wakeup()支持外部事件,结合定时器唤醒,实现按需重连,比纯定时更省电。
电源管理专家 · 2026-08-27
deep sleep重连时,建议先调用esp_wifi_stop()再start(),避免状态残留,同时用esp_wifi_set_config()重新加载保存的配置,减少连接时间。
低功耗小王 · 2026-08-27
补充:light sleep下,WiFi快速恢复的关键是保持esp_netif和event loop不释放,唤醒后无需重新初始化,只需处理可能的IP续租(DHCP)。
嵌入式老张 · 2026-08-27
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