精确配置ESP32低功耗模式下的RTC内存保持与ULP唤醒,需明确边界条件:首先,在进入Deep Sleep前,必须调用esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_KEEP)来保持RTC慢速内存,否则ULP程序和数据会丢失。其次,ULP协处理器唤醒依赖RTC慢速内存中的程序,且需确保ULP程序已烧录至RTC内存(通过ulp_set_wakeup_period设置周期)。边界条件包括:1) 唤醒源使能esp_sleep_enable_ulp_wakeup();2) 设置esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON)以保持ULP所需外设;3) 确认RTC内存大小(8KB)足够存放ULP程序及变量。实操建议:使用ulp_riscv或ulp_fsm工具链编译,并检查ulp变量地址是否在RTC_DATA_ATTR段。若需更精细控制,可调用esp_sleep_pd_config单独配置RTC_FAST_MEM,但默认保持即可。最后,通过esp_deep_sleep_start()进入,并用esp_sleep_get_wakeup_cause()验证唤醒源。
mcuku 阿沐 · 2026-08-27