在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