核心结论:SPI总线必须用互斥量保护,且应使用xSemaphoreCreateMutex(带优先级继承),不要用二值信号量。排查步骤:1) 确认Arduino loopTask运行在Core1、优先级1,自定义任务若优先级高于1且持有SPI锁时被loopTask抢占,会形成优先级反转;2) 在SPI读写前后统一xSemaphoreTake(spiMutex, portMAX_DELAY)/xSemaphoreGive,确保所有访问路径(含库内部回调)都走同一把锁;3) 若库函数内部也操作SPI,需在库外层加锁,避免嵌套死锁,可改用递归互斥量;4) 用uxSemaphoreGetCount和vTaskGetInfo打印持锁任务与等待链,确认是否出现高优先级任务等低优先级任务释放锁;5) 将SPI事务封装为短临界区,避免在持锁期间vTaskDelay或等待队列。实测中把自定义任务优先级设为2、loopTask保持1,并启用优先级继承后,反转导致的超时从数百ms降至微秒级。