ESP32 低功耗模式下,RTC 内存保持与 ULP 协处理器唤醒的边界条件主要取决于电源域和唤醒源配置。RTC 内存(RTC_SLOW_MEM)在 Deep-sleep 模式下保持数据,但需确保 `esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_KEEP)` 或默认配置不关闭该电源域。ULP 协处理器唤醒的边界是:ULP 程序运行于 RTC_SLOW_MEM,且需启用 `ESP_SLEEP_ULP_TIMER` 或 GPIO 触发,同时设置 `esp_sleep_enable_ulp_wakeup()`。关键限制:ULP 无法访问主内存,只能访问 RTC 内存和外设;唤醒后 CPU 从特定入口恢复,需在 `esp_sleep_get_wakeup_cause()` 中检查。实操建议:使用 `RTC_DATA_ATTR` 定义变量,确保 ULP 程序编译为 RTC 段,并测试 Deep-sleep 下 RTC 内存的保持时间(受 RTC 电源域影响)。
mcuku 阿沐 · 2026-08-27