STM32
直播中

回头太晚

9年用户 808经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

单片机一个IIC连接两个MPU9250如何设置读取磁力计的模式?

STM32单片机的一个IIC接口上同时连了两个MPU9250传感器,将两者的AD0分别设为高和低,对于磁力计都设置成Bypass模式,发现两块磁力计的数据都能读出来,Bypass模式不是由单片机直接读取磁力计的数据嘛,两块磁力计的IIC地址都一样,在一个iic总线上不会产生冲突嘛?非常困惑,请各位前辈能帮助指点一下,感激不尽

回帖(1)

王立冕

2024-4-10 17:36:07
MPU9250是MPU6500+AK8963。两个I2C地址不同。
对MPU6500的I2C地址及进行操作,读取加速度和陀螺仪数据。按照电路AD0的不同,地址是0x68或者0x69。
对AK8963地址进行操作,读取磁力计数据。在MPU9250中,地址无法更改,为0x0C。
I2C读写为左对齐,第8位要存读写标志位,需要将地址左移一位。MPU6500为0xD0或是0xD2,磁力计为0x18。
磁力计的读取有Passby模式和I2C master两种方式如下:
passby模式:MCU直接对磁力计进行读取,不经过MPU9250。对MPU9250的INT_PIN_CFG寄存器写0x02,然后直接对磁力计地址0x18进行读写。磁力计中的0x00寄存器存储的ID为0x48。
I2C master模式,不直接对磁力计进行操作,先由MPU9250读取磁力计数据暂存,然后MCU读取MPU9250中的磁力计数据。
另外,mpu9250的1脚需要接VDDIO。在设置passby模式下,需要增加设置适当的几毫秒的延时时间。如果软件模拟I2C,在配置引脚时,硬件上拉电阻。并注意将GPIO引脚设置为输出开漏模式。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分