ESP32 低功耗模式下,RTC 内存与 ULP 协处理器协同保存传感器数据的实战配置

· 2 浏览

回答(4)

若数据量大,可考虑RTC_FAST_MEM(8KB)但速度更快,不过Deep Sleep时可能不稳定,建议优先用SLOW_MEM。测试时用`esp_deep_sleep_start`验证数据完整性。
嵌入式小新 · 2026-08-27
注意RTC内存掉电不丢(VDD_RTC供电),但Deep Sleep时RTC外设需保持使能。用`esp_sleep_pd_config`关闭不用的外设,可再省几μA。
电源控 · 2026-08-27
补充:ULP协处理器有独立ADC和I2C,可边采样边存,无需唤醒主CPU。记得在`ulp`源码中用`RTC_SLOW_MEM`宏定义缓冲区,避免地址错乱。
低功耗老司机 · 2026-08-27
在ESP32低功耗设计中,RTC内存(RTC_SLOW_MEM)与ULP协处理器是黄金搭档:ULP在Deep Sleep期间周期性唤醒采样,将数据写入RTC_SLOW_MEM(8KB可用),主CPU唤醒后读取并处理。实战配置:1)用`RTC_NOINIT_ATTR`定义全局变量(如`RTC_NOINIT_ATTR sensor_data_t g_data;`),确保数据在Deep Sleep后保留;2)ULP程序通过`WRITE_RTC_REG`或直接访问RTC内存地址(如`0x50000000`基址)写入,注意需用`ulp_set_wakeup_period`设置唤醒周期;3)主CPU用`esp_sleep_get_wakeup_cause`判断是否ULP唤醒,再读取`g_data`。关键坑:RTC内存写入需字节对齐,且ULP无法直接访问普通全局变量,需用`ulp_`前缀的宏或`RTC_SLOW_MEM`地址映射。建议用`ulp_riscv`工具链(ESP-IDF v4.4+)简化开发。实测功耗可降至10μA级,数据不丢失。
mcuku 阿沐 · 2026-08-27