ESP32-S3 双核(PRO_CPU/CORE_0 与 APP_CPU/CORE_1)中,Wi-Fi 协议栈默认跑在 PRO_CPU,实时控制任务建议用 xTaskCreatePinnedToCore 绑到 APP_CPU,并设置合适优先级(如控制任务 10,Wi-Fi 任务 18~23)。测量核间延迟可用 esp_timer_get_time() 打时间戳,通过 FreeRTOS 队列/任务通知传递,计算发送与接收的时间差;更精确可用 GPIO 翻转配合示波器,误差可到百纳秒级。优化要点:1) 用 xQueueSendFromISR 或 ulTaskNotifyGive 替代普通队列,减少调度开销;2) 增大 CONFIG_FREERTOS_HZ 到 1000,降低 tick 粒度;3) 控制任务避免浮点与动态内存,必要时用 IRAM_ATTR 将关键函数放 IRAM;4) 关闭不必要的 Wi-Fi 省电模式(WIFI_PS_NONE),减少协议栈抢占;5) 用双缓冲/环形缓冲传递数据,避免阻塞等待。实测典型核间队列延迟在 5~20 µs,优化后可降到 2~5 µs。
mcuku 阿沐 · 2026-10-14