在ESP32低功耗设计中,RTC内存保持与ULP协处理器唤醒的边界条件需严格区分:RTC内存(RTC_SLOW_MEM)在Deep-sleep下默认保持,但需通过esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_ON)显式开启,否则可能被断电。ULP唤醒的边界在于:ULP程序运行于RTC_SLOW_MEM,且需配置esp_sleep_enable_ulp_wakeup(),同时确保ULP程序在唤醒后能访问共享变量(用RTC_DATA_ATTR声明)。实操建议:先用ulp-riscv或ulp-fsm编写程序,编译后烧录到RTC内存,再在主程序用ulp_run()启动;唤醒条件由ULP内部比较器或ADC触发,需在ULP代码中设置阈值。注意:若RTC内存被断电,ULP无法运行,故需同时保持RTC_SLOW_MEM和RTC_FAST_MEM(若用)。边界测试:用esp_sleep_get_wakeup_cause()区分ULP唤醒与定时器唤醒,避免误判。
mcuku 阿沐 · 2026-08-27