你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
lzz0609 提问时间:2020-9-12 17:28 /
在STM32单片机的一个IIC接口上同时连了两个MPU9250传感器,将两者的AD0分别设为高和低,对于磁力计都设置成Bypass模式,发现两块磁力计的数据都能读出来,Bypass模式不是由单片机直接读取磁力计的数据嘛,两块磁力计的IIC地址都一样,在一个iic总线上不会产生冲突嘛?非常困惑,请各位前辈能帮助指点一下,感激不尽
收藏 评论6 发布时间:2020-9-12 17:28

举报

6个回答
corez 回答时间:2020-9-28 10:03:27
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引脚设置为输出开漏模式。
如不清楚,还可以参考以下文章。
Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器https://www.cnblogs.com/leptonation/p/5225889.html
GD32F207E+MPU9255数据读取http://www.cirmall.com/bbs/thread-46005-1-1.html





陌路夕颜 回答时间:2020-9-28 09:46:07
用两个IIC总线就解决这个困惑了
freeelectron 回答时间:2020-9-28 09:56:45
保证设备地址不一样就可以读取了
butterflyspring 回答时间:2020-9-30 11:38:12
从I2C协议上看,只要不同的设备地址,就可以区分开。不是当前访问地址的设备是不会响应当前I2C总线的。一条I2C总线挂多个不同设备地址的从设备是很常见的。
lzz0609 回答时间:2020-10-23 11:35:57
corez 发表于 2020-9-28 10:03
MPU9250是MPU6500+AK8963。两个I2C地址不同。
对MPU6500的I2C地址及进行操作,读取加速度和陀螺仪数据。按 ...

您好,您说的是在I2C master模式下,1脚需要接VDDIO嘛,还是两种模式都需要?
corez 回答时间:2020-10-27 09:47:13
lzz0609 发表于 2020-10-23 11:35
您好,您说的是在I2C master模式下,1脚需要接VDDIO嘛,还是两种模式都需要? ...

1脚需要接VDDIO。
请参考以下是管脚定义。

Pin Out and Signal Description

Pin Out and Signal Description
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版