ESP32-S3 双核下,Wi-Fi 协议栈默认绑定 Core 0(可通过 CONFIG_ESP32_WIFI_TASK_CORE_ID 调整),而用户任务常跑在 Core 1。核间负载不均或中断抢占会导致延迟抖动。排查步骤:1) 用 vTaskGetRunTimeStats 或 esp_timer 统计各核 CPU 占用,确认 Wi-Fi 任务是否过载;2) 检查 Wi-Fi 中断优先级(默认 1-3),若用户任务优先级高于中断,会阻塞 Wi-Fi 响应,建议将实时任务优先级设为 5 以下,或使用 xTaskCreatePinnedToCore 固定到 Core 1;3) 启用 CONFIG_FREERTOS_USE_TICKLESS_IDLE 时,Wi-Fi 唤醒会引入抖动,可关闭或增大 tick 周期;4) 使用 GPIO 翻转+逻辑分析仪测量任务周期,若抖动 > 100us,检查是否因 cache 缺失或 PSRAM 访问冲突。实操建议:将 Wi-Fi 任务与用户任务分核,并设置中断亲和性(esp_intr_alloc 指定 core_id),同时用 esp_timer 高精度定时器替代 vTaskDelay 做周期控制。
mcuku 阿沐 · 2026-10-13