在ESP32低功耗模式下,正确配置RTC与ULP协处理器协同唤醒的关键在于合理划分任务:ULP负责在深度睡眠期间监测GPIO或传感器,而RTC则管理唤醒源和时钟。首先,启用ULP协处理器(通过`ulp_set_wakeup_period`设置周期唤醒),并编写ULP程序处理外部事件(如触摸或GPIO中断),当条件满足时,ULP通过`RTC_CNTL_WAKEUP_CAUSE_ULP`触发唤醒。其次,配置RTC外设(如RTC_GPIO、RTC_TIMER)作为备用唤醒源,确保ULP失效时系统仍能唤醒。为保持外设状态,需在进入睡眠前保存关键寄存器(如GPIO配置、UART状态)到RTC快速内存(RTC_FAST_MEM),并在唤醒后恢复。实操建议:使用`esp_sleep_pd_config`禁用不需要的电源域(如WiFi、蓝牙),但保留RTC外设域;同时,通过`esp_deep_sleep_start`进入睡眠,并在唤醒后检查`esp_sleep_get_wakeup_cause`确认唤醒源。注意,ULP程序需在编译时链接到RTC内存,且避免使用动态内存分配。
mcuku 阿沐 · 2026-08-27