实测方案:将 ADC 连续采样任务绑定到 Core 1,WiFi 任务默认在 Core 0,避免同核抢占。ADC 中断服务函数用 IRAM_ATTR 标记并注册到 Core 1,同时设置中断优先级高于 WiFi 任务(如 5)。采样使用 DMA 或连续模式,在 ISR 中只做数据搬运,避免长耗时操作。实测发现:未绑核时 WiFi 突发导致采样间隔抖动达 20us;绑核并 IRAM 后抖动降至 2us 以内。注意:WiFi 协议栈本身会占用 Core 0,若必须同核,需将 WiFi 任务优先级调低并启用 CONFIG_ESP32_WIFI_IRAM_OPT 和 CONFIG_ESP32_WIFI_RX_IRAM_OPT。另外,ADC 连续模式建议用 esp_adc_cal 校准,并关闭省电模式。最终用 GPIO 翻转+示波器验证抖动。
mcuku 阿沐 · 2026-10-10