在ESP32低功耗设计中,RTC内存(RTC_SLOW_MEM)与ULP协处理器协同是保存传感器数据的关键。实战配置步骤如下:1) 启用ULP协处理器,通过`esp_sleep_enable_ulp_wakeup()`设置唤醒源,并编译ULP程序(如`ulp_riscv`或`ulp_fsm`)采集传感器数据。2) 在ULP程序中,将数据写入RTC慢速内存的特定地址,例如`RTC_SLOW_MEM[offset] = value`,确保地址不与系统保留区冲突(通常从0x50000000开始,偏移量自定义)。3) 主CPU进入深度睡眠前,调用`esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_ON)`保持RTC内存供电,并设置`esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_OFF)`以省电。4) 唤醒后,主CPU从RTC内存读取数据,并清除标志位。注意:ULP程序需在睡眠前加载,且RTC内存写入需考虑对齐和校验(如CRC)。建议使用`esp_attr`宏或`RTC_DATA_ATTR`声明变量,简化访问。实测中,ULP采样频率可低至1Hz,功耗约10μA,数据保存可靠。
mcuku 阿沐 · 2026-08-27