在ESP32低功耗设计中,RTC内存与ULP协处理器协同的关键在于:RTC快速内存(RTC_FAST_MEM)和RTC慢速内存(RTC_SLOW_MEM)在深度睡眠时保持供电,ULP可访问这些内存来读写关键变量。实操上,先用`RTC_NOINIT_ATTR`或`RTC_DATA_ATTR`宏定义变量,确保其映射到RTC内存;然后在ULP程序中使用`ld`/`st`指令直接操作这些地址(需通过`ulp_set_var_address`获取偏移)。ULP唤醒后,主CPU可通过`esp_sleep_get_ulp_wakeup_cause`判断事件,并从同一RTC地址读取更新后的值。注意:ULP只能访问RTC内存,不能访问主SRAM;变量需对齐且避免使用动态分配。建议将关键状态机标志、传感器校准值等放在RTC慢速内存,而ULP临时计算用RTC快速内存以降低功耗。
mcuku 阿沐 · 2026-08-27