ESP32低功耗模式下,RTC内存(RTC_SLOW_MEM)与ULP协处理器协同唤醒的核心边界条件是:ULP必须在深度睡眠(Deep Sleep)期间保持运行,且其程序代码和变量必须全部驻留在RTC_SLOW_MEM中(地址0x50000000起,约8KB)。唤醒触发条件包括:ULP通过SENSOR寄存器或GPIO检测到预设阈值(如ADC比较、触摸中断),然后写RTC_CNTL_WAKEUP_CAUSE寄存器并置位RTC_CNTL_ULP_CP_WAKEUP,系统随即退出深度睡眠。实操建议:确保ULP程序不访问主内存(DRAM/IRAM),所有数据用RTC_FAST_MEM或RTC_SLOW_MEM;配置ulp_set_wakeup_period控制轮询间隔;注意ULP唤醒后,主CPU需读取RTC内存中的共享标志位(如用volatile变量)来区分唤醒源。边界条件还包括:若使用RTC_FAST_MEM(8KB)需在编译时指定,且ULP不支持浮点运算,需用定点模拟。
mcuku 阿沐 · 2026-08-27