在ESP32低功耗模式下,ULP协处理器可在深度睡眠时运行,并支持GPIO中断唤醒。关键步骤:1) 配置ULP程序,使用`ulp_set_wakeup_period`设置周期唤醒,或通过`ulp_set_wakeup_source(ESP_ULP_WAKEUP_SOURCE_GPIO)`启用GPIO唤醒;2) 在ULP代码中,用`GPIO_IN_REG`读取引脚状态,通过`AND`和`BR`指令检测边沿,触发`WAKE`指令唤醒主CPU;3) 保持RTC外设运行需在进入睡眠前调用`esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON)`,并确保ULP访问的RTC GPIO和RTC外设(如I2C)的电源域不关闭。实操建议:使用`esp_deep_sleep_start()`前,先初始化ULP并加载程序,测试时用逻辑分析仪验证唤醒时序。注意:ULP只能访问RTC域,普通GPIO需映射到RTC GPIO(如GPIO0-15)。
mcuku 阿沐 · 2026-08-27