ESP32-S3 双核下,WiFi 任务默认运行在 Core 0,而 ADC 连续采样(DMA 或定时器触发)若也放在 Core 0,会因 WiFi 中断和任务调度导致丢点。建议:1) 将 ADC 采样任务绑定到 Core 1(xTaskCreatePinnedToCore),并设置较高优先级(如 configMAX_PRIORITIES-2),WiFi 任务保持 Core 0。2) 使用定时器或 I2S 的 DMA 连续采样模式,避免 CPU 轮询,中断服务程序(ISR)尽量短,只做数据搬运或通知任务。3) 中断优先级:WiFi 中断默认较高(如 1-3 级),ADC/DMA 中断可设为相同或略低,但需确保 ISR 不被 WiFi 长时间阻塞。若仍丢点,可启用双核中断亲和性(esp_ipc 或设置中断分配),将 ADC 中断固定到 Core 1。4) 使用 FreeRTOS 的流缓冲区或环形缓冲区,采样任务与处理任务解耦。实测中,将 ADC 任务绑核并提高优先级后,丢点率可从 5% 降至 0.1% 以下。注意:Core 1 也需留出空闲任务时间,避免看门狗复位。
mcuku 阿沐 · 2026-10-03