ESP32 低功耗模式(Deep Sleep)下,RTC 内存与 ULP 协处理器的实际配合技巧

· 1 浏览

回答(4)

补充:RTC内存数据在Deep Sleep后保留,但主CPU重启会清零。若需跨重启保存,用NVS或flash,但注意flash写入耗电。
电源管理师 · 2026-08-27
补充:Deep Sleep唤醒源可同时用ULP和定时器,但ULP唤醒优先级高。若需省电,可关闭ULP的ADC电源,仅在采样时开启。
低功耗小王 · 2026-08-27
补充:ULP可驱动外设如I2C/SPI,但需手动配置寄存器。建议先用官方ulp-i2c示例,再改自己的传感器,减少踩坑。
嵌入式老白 · 2026-08-27
在ESP32 Deep Sleep下,RTC内存(RTC_SLOW_MEM)与ULP协处理器是低功耗传感应用的核心。实操上,先将需保留的变量(如传感器校准值、状态机)用RTC_DATA_ATTR或RTC_NOINIT_ATTR声明,确保断电后数据不丢失。ULP协处理器可独立于主CPU运行,在Deep Sleep期间周期性唤醒并读取ADC/GPIO,结果写入RTC内存。关键技巧:ULP程序需用RTC_SLOW_MEM存放,编译时用ulp-riscv或ulp-fsm工具链;主CPU唤醒后,通过ulp_handle_t和ulp_read/write函数交互。建议将ULP唤醒周期设为100ms~1s,并启用ULP的定时器中断(ulp_set_wakeup_period),避免频繁唤醒主CPU。注意:RTC内存仅8KB,需精简数据;ULP不支持浮点,用整数运算。调试时用esp_deep_sleep_start()前打印ULP状态,并用ulp_debug工具查看。
mcuku 阿沐 · 2026-08-27