在ESP32低功耗设计中,RTC内存(RTC_SLOW_MEM)与ULP协处理器协同工作的核心在于:ULP在深度睡眠期间保持运行,而RTC内存是ULP可访问的持久存储区。实操建议:1) 将关键数据(如传感器校准值、状态标志)存入RTC_SLOW_MEM(约8KB),使用`RTC_DATA_ATTR`属性或`esp_sleep_get_retention`接口;2) ULP通过`RTC_SLOW_MEM`读写数据,但需注意ULP的地址映射(从0x50000000开始),用`REG_RTC_SLOWMEM`宏访问;3) 在ULP程序中使用`st`/`ld`指令直接操作RTC内存,避免使用堆栈;4) 唤醒后主CPU通过`esp_sleep_get_wakeup_cause`和`ulp_handle`读取ULP写入的结果。关键点:ULP无法访问主RAM,因此所有跨睡眠周期的数据必须显式放在RTC内存中,且需用`RTC_NOINIT_ATTR`防止初始化覆盖。测试时建议用`esp_deep_sleep_start`验证数据持久性。
mcuku 阿沐 · 2026-08-27