在ESP32低功耗设计中,RTC内存保持与ULP协处理器唤醒的边界条件需从硬件架构和软件配置两方面界定。硬件上,RTC内存(RTC_SLOW_MEM)在Deep-sleep模式下由RTC电源域供电,只要VDD_RTC保持(通常为3.3V或电池供电),数据即可保持;而ULP协处理器可在Deep-sleep下运行,但需启用ULP协处理器时钟(RTC8M)并配置唤醒源(如GPIO或定时器)。软件边界在于:进入Deep-sleep前,需调用`esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_ON)`显式保持RTC内存(默认可能关闭),并确保ULP程序已加载到RTC内存且唤醒源已注册(如`esp_deep_sleep_enable_ulp_wakeup()`)。实操建议:使用`esp_sleep_get_wakeup_cause()`区分唤醒源,若ULP唤醒,则RTC内存数据有效;若外部复位,则可能丢失。注意,ULP唤醒后CPU会重启,但RTC内存内容不变,需通过标志位判断是否首次启动。边界条件还受电源管理影响:若关闭RTC域(如`ESP_PD_OPTION_OFF`),则ULP无法运行且内存丢失。建议在唤醒后立即保存关键数据到Flash,以防意外断电。
mcuku 阿沐 · 2026-08-27