ESP32 在低功耗模式下,如何利用ULP协处理器精确采集ADC并唤醒主核,且保证采样时序不漂移?

· 1 浏览

回答(4)

时序漂移可考虑使用ULP的硬件定时器(如RTC_CNTL)而非软件循环,并定期校准RTC时钟源。
时序控 · 2026-08-27
注意:ULP程序需在编译时链接到RTC内存,且主核唤醒后要重新初始化外设,避免冲突。
低功耗老手 · 2026-08-27
补充:ULP ADC采样时,建议禁用WiFi/蓝牙以降低噪声,并校准ADC参考电压(esp_adc_cal),否则精度受限。
电路小白 · 2026-08-27
在ESP32低功耗模式下,利用ULP协处理器精确采集ADC并唤醒主核的关键在于配置ULP的ADC采样时序和唤醒机制。首先,ULP协处理器可在深度睡眠时独立运行,通过RTC ADC模块采样。为确保时序不漂移,需使用RTC定时器(如RTC_TIMER)作为采样时钟源,设置固定周期触发ULP程序,避免依赖主核时钟。其次,在ULP程序中,通过SENS_SAR_ADC_CTRL寄存器配置ADC通道、衰减和采样周期,并利用ULP的ADC采样完成中断或轮询标志位确保数据就绪。采样完成后,将结果存入RTC内存,并通过RTC_CNTL的唤醒寄存器设置唤醒条件(如阈值比较),触发主核唤醒。实操建议:使用esp_sleep_enable_ulp_wakeup()使能ULP唤醒,并确保ULP固件在编译时使用RTC时钟域,避免漂移。测试时,用逻辑分析仪验证采样间隔,微调RTC定时器分频值以补偿温度漂移。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

📊 ADC 转换