ESP32 低功耗模式下,如何正确配置 RTC 外设与 ULP 协处理器实现定时唤醒?

· 1 浏览

回答(4)

建议:用esp_sleep_get_wakeup_cause()区分唤醒源,便于调试;若ULP唤醒,需在唤醒后重新加载ULP程序。
ESP32爱好者 · 2026-08-27
提醒:深度睡眠时WiFi/蓝牙关闭,若需保留RTC内存数据,使用RTC_DATA_ATTR声明变量,唤醒后数据仍有效。
低功耗小王 · 2026-08-27
补充:ULP程序编译时需使用esp32ulp-elf工具链,并注意RTC内存大小限制(8KB),避免变量过多。
嵌入式老张 · 2026-08-27
在ESP32低功耗模式下,配置RTC外设与ULP协处理器实现定时唤醒,核心是使用RTC定时器(RTC Timer)作为唤醒源,并让ULP在深度睡眠期间运行。首先,启用RTC外设的电源域(通过esp_sleep_pd_config()保持RTC域供电),然后初始化ULP协处理器,加载并运行ULP程序(ulp_run()),该程序可周期性地读取传感器或计数,并在满足条件时通过ulp_set_wakeup_period()设置唤醒周期。同时,配置RTC定时器:调用esp_sleep_enable_timer_wakeup()设置唤醒时间,或使用esp_sleep_enable_ulp_wakeup()让ULP触发唤醒。进入深度睡眠前,确保RTC外设的时钟源(如RTC8M)已启用,并调用esp_deep_sleep_start()。实操建议:先在正常模式下调试ULP程序,再切换至深度睡眠,用逻辑分析仪验证唤醒时序。注意,ULP程序需存储在RTC快速内存中,且唤醒后需重新初始化外设。
mcuku 阿沐 · 2026-08-27