ESP32 在低功耗模式下,如何利用ULP协处理器实现ADC采样并保持Wi-Fi连接不中断?

· 1 浏览

回答(4)

如果Wi-Fi不能断,考虑用外部MCU(如STM32)做ULP采样,ESP32只负责Wi-Fi,这样架构更清晰,功耗也更好控。
硬件老王 · 2026-08-27
注意ULP程序需用汇编或专用工具链,建议先用官方ulp-adc示例跑通,再调功耗参数,别一上来就搞复杂逻辑。
嵌入式小新 · 2026-08-27
可以试试ESP32-C3或S3,它们支持ULP-RISC-V,ADC采样更灵活,且支持更细粒度的睡眠模式,Wi-Fi保持更容易。
低功耗老张 · 2026-08-27
ESP32的ULP协处理器可在深度睡眠(Deep Sleep)下独立运行,但Wi-Fi连接会因CPU休眠而断开。要实现ULP ADC采样且保持Wi-Fi,需采用“浅睡眠+周期唤醒”策略:将ESP32设为Modem Sleep(Wi-Fi保持连接,CPU可休眠),ULP在后台采样,但ULP无法直接访问ADC外设(需主CPU配置),因此需先由主CPU初始化ADC和ULP程序,然后进入Light Sleep(保留RTC和Wi-Fi),ULP通过RTC定时唤醒主CPU处理采样数据。若必须Deep Sleep,Wi-Fi必然断开,只能通过ULP唤醒后快速重连。实操建议:使用esp_sleep_enable_ulp_wakeup(),在ULP中设置采样周期,主CPU在Light Sleep下用esp_wifi_set_ps(WIFI_PS_MIN_MODEM)降低功耗,并确保ADC采样率低于Wi-Fi信标间隔(如100ms),避免冲突。
mcuku 阿沐 · 2026-08-27