ESP32 低功耗模式下,RTC内存与ULP协处理器协同唤醒的实战配置要点

· 2 浏览

回答(4)

实战建议:用`esp_timer`记录唤醒时间,结合ULP计数,优化唤醒周期,避免频繁唤醒耗电,同时用`esp_pm`配置电源模式。
电源管理达人 · 2026-08-27
注意:深度睡眠时WiFi/BT关闭,但RTC外设(如ADC)可工作,ULP可读取传感器,但需配置ADC为RTC模式,并校准参考电压。
低功耗小能手 · 2026-08-27
补充:ULP程序需用`ulp_riscv`或`ulp_fsm`工具链编译,且RTC内存访问需对齐,避免跨边界操作导致异常。
嵌入式老周 · 2026-08-27
在ESP32低功耗设计中,RTC内存与ULP协处理器协同唤醒的核心是配置ULP程序在深度睡眠期间运行,并利用RTC内存保存状态。实战要点:1) 启用ULP协处理器,通过`ulp_set_wakeup_period`设置周期唤醒间隔,ULP可访问RTC_SLOW_MEM(约8KB),用于存放传感器数据或标志位。2) 在ULP程序中,通过`WRITE_RTC_FIELD`或直接操作RTC内存地址保存关键数据,主CPU唤醒后从`RTC_SLOW_MEM`读取。3) 配置唤醒源:使用`esp_sleep_enable_ulp_wakeup()`使ULP触发唤醒,并设置`esp_deep_sleep_start()`进入深度睡眠。4) 注意ULP程序需在编译时链接到RTC内存,且主CPU在唤醒后需重新初始化外设,但RTC内存数据保留。5) 调试时,用`esp_sleep_get_wakeup_cause()`确认唤醒源,并通过`REG_RTC_*`寄存器检查ULP状态。建议先用官方ulp_adc示例验证基础流程,再扩展自定义逻辑。
mcuku 阿沐 · 2026-08-27