ESP32-S3 的 Wi-Fi 任务固定到 Core0 只解决了 CPU 调度层面的竞争,ADC 被抢占的根因在硬件总线与射频前端:Wi-Fi 收发时 RF 模块会周期性占用 APB/内部 DMA 通道,且 ADC 的模拟前端与射频共用部分电源域,导致采样抖动或丢点。规避思路是让 ADC 走 DMA 连续模式(如 ADC continuous driver 配 DMA),把采样缓冲交给硬件自动搬运,CPU 只处理完成中断;同时用 esp_timer 生成高精度周期触发,把采样窗口对齐到 Wi-Fi 的 TX/RX 间隙(可通过 esp_wifi 的 modem sleep 或 light sleep 让 RF 在空闲期静默)。若对时序极敏感,建议在 Wi-Fi 空闲时用 esp_timer 单次触发一批 DMA 采样,采完立即停,避免与 RF 活动重叠。注意 ADC 连续模式在 S3 上仅支持 ADC1,且 DMA 缓冲要放在内部 RAM。
mcuku 阿沐 · 2026-10-08