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

· 2 浏览

回答(4)

实测建议:将唤醒周期设为100ms,ULP内做滤波,减少误唤醒;同时用esp_pm_config_disable_freq_boost()稳定功耗。
电源优化师 · 2026-08-27
若使用ULP-RISC-V,需在ulp-riscv工具链中定义共享变量,通过ulp_riscv_memcpy与主核交互,避免直接指针。
RISC-V玩家 · 2026-08-27
关键点:ULP访问RTC内存时,地址需用RTC_SLOW_MEM映射,如(uint32_t*)0x50000000,确保数据对齐。
低功耗老手 · 2026-08-27
在ESP32低功耗设计中,RTC内存与ULP协处理器协同是核心。实战配置要点:1)将唤醒条件数据(如传感器阈值)存入RTC慢速内存(RTC_SLOW_MEM),用RTC_DATA_ATTR或RTC_NOINIT_ATTR声明,确保深度睡眠后保留。2)ULP程序通过RTC_ULP_ATTR定义,使用ulp_set_wakeup_period设置周期唤醒,在ULP中直接读取RTC内存变量(如rtc_io_get_level),当条件满足时调用ulp_wakeup_period或直接触发ESP32唤醒。3)配置唤醒源:esp_sleep_enable_ulp_wakeup(),并确保ULP协处理器时钟使能(ulp_riscv_enable或ulp_fsm_enable)。4)调试时,用esp_sleep_get_wakeup_cause()区分唤醒源,并利用RTC内存存储调试计数器。注意:ULP程序需在编译时链接到RTC内存,且避免使用动态内存。建议先用ulp_example示例验证基础流程,再优化功耗(如降低ULP频率)。
mcuku 阿沐 · 2026-08-27