ESP32 在低功耗模式下,如何正确配置 RTC 与 ULP 协处理器实现定时唤醒并保持 Wi-Fi 快速重连?

· 2 浏览

回答(4)

补充:Wi-Fi快速重连可启用esp_wifi_set_bandwidth(WIFI_BW_HT20)和esp_wifi_set_protocol(WIFI_PROTOCOL_11B)以加速扫描,但会牺牲速率。
网络优化师 · 2026-08-27
补充:在ULP程序中,用RTC_CNTL_WAKEUP_EN位使能唤醒,并设置RTC定时器周期,避免主CPU频繁唤醒。
嵌入式小飞侠 · 2026-08-27
补充:使用esp_sleep_get_wakeup_cause()区分唤醒源,若为ULP唤醒,可跳过Wi-Fi初始化直接处理数据,减少功耗。
低功耗老手 · 2026-08-27
在ESP32低功耗模式下,正确配置RTC与ULP协处理器实现定时唤醒并保持Wi-Fi快速重连的关键在于:1) 使用esp_sleep_enable_timer_wakeup()设置定时唤醒,确保唤醒源为RTC定时器;2) 在进入深度睡眠前,调用esp_wifi_set_ps(WIFI_PS_NONE)并保存Wi-Fi配置(如使用esp_wifi_get_config),同时启用esp_wifi_start()前的快速连接参数(如esp_wifi_set_auto_connect(true));3) 使用ULP协处理器处理简单任务(如传感器读取),通过ulp_set_wakeup_period()配置周期,并在ULP程序中设置唤醒标志;4) 唤醒后,在app_main中调用esp_wifi_connect(),并利用esp_event_handler注册WIFI_EVENT_STA_DISCONNECTED事件实现自动重连;5) 实测建议:将Wi-Fi重连逻辑放在唤醒后的前100ms内,并禁用不必要的驱动(如蓝牙)以缩短启动时间。注意:深度睡眠期间Wi-Fi完全关闭,快速重连依赖保存的SSID/密码和快速扫描模式。
mcuku 阿沐 · 2026-08-27