我用16路模拟开关cd4067来读取mpu9250的数据,sda共用,scl作为选择引脚,我挂载5个mpu9250的时候数据还没有问题,但是一旦挂载6个及以上,全部的9250数据就都会出错,(单步调试的时候发现,5个及以下9250获得的磁力计器件id是正确的0x48,但是6个及以上读取得到的磁力计器件id会变得乱七八糟0xff,0x6d,0x7c都出现了)
单片机单个IO端口驱动负载的能力有限,对应的I2C接口下挂的从设备过多时,整个电路就会失效。应该可以用示波器抓取SDA触发时的波形来观察,信号电压是否不够稳。解决的话,要么SDA也用开关选通,要么限制每一路i2c总线下的从设备数量。
用串口调试助手调试下,感觉你的问题还是在下位机,比如说时序信号乱了或者信号不稳定,或者程序本身有bug
是不是驱动能力不足吧
试着把scl线和sda线都用模拟开关哎控制