一块控制板共用SCLK、MOSI和MISO,分别给两颗外设分配独立CS。单独接每颗都能通信,一起接入就会读错数据,甚至出现总线电平异常。

故障拆分片选逻辑正确,不代表总线电气状态正确
多从设备SPI通常要求未被选中的从设备将MISO置为高阻态。若某颗器件的MISO在CS无效时仍主动驱动,或者电平转换器在未选中时没有隔离,就可能与另一颗器件发生总线争用。此时读错数据只是表象,严重时还会形成额外电流。
示波器检查按“CS→时钟→MISO”的顺序对照
两路CS应遵守芯片数据手册中的有效电平、建立时间和保持时间;避免CS切换重叠。
分别测每个器件单独连接时的MISO,以及双器件并联后未选中时的MISO状态。
确认电平转换器方向控制、上拉/下拉与IO供电域,尤其注意三态器件未上电时的漏电或反灌。
若器件不支持真正的总线共享,可考虑三态缓冲器、模拟开关或分开SPI外设,而不是仅修改软件片选延时。
参考回答强调“协议正常”和“电气可共线”两层验证
“我会先从逻辑分析仪确认CS时序,再用示波器验证未选中器件的MISO是否为高阻。因为片选正确不代表它一定释放了输出,同时还要排查电平转换器和电源域。若数据手册限制MISO共享,就需要硬件隔离,而不是靠重复发指令解决。”
常见误区上拉电阻能解决两个推挽输出打架吗?
不能。弱上拉只能定义高阻时的默认电平,不能把两个正在主动驱动不同逻辑电平的推挽输出隔开。先解决三态控制与硬件连接,再谈阻值。

扫码关注






























