极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: zhanghuipz

arduino下挂多个MPU6050,如何写I2C程序?

[复制链接]
 楼主| 发表于 2013-7-7 21:09:35 | 显示全部楼层
林定祥 发表于 2013-7-7 20:17
这个问题低级了些,你的arduino有多余的端口吧,最简单的方法,一个端口挂一颗芯片的使能端,控制端口就能分 ...

它是不同于SPI中的片选,不是说pin9拉高或拉低就开启这个MPU6050器件的
回复

使用道具 举报

发表于 2013-7-7 21:33:36 | 显示全部楼层
嗨,你已经说到了,pin9低,地址0x68,那你某一时刻只有一个低,只发0x68不就读到你需要访问的芯片了吗。读完第一片后,再对第一片置高,对第二片置低,地址仍旧0x68,那就访问了第二片了,以此类推,是否就可以读到n片的数据了吗?
回复

使用道具 举报

 楼主| 发表于 2013-7-7 21:40:42 | 显示全部楼层
林定祥 发表于 2013-7-7 21:33
嗨,你已经说到了,pin9低,地址0x68,那你某一时刻只有一个低,只发0x68不就读到你需要访问的芯片了吗。读完第 ...

哈哈,我真的傻X了,脑子不会转弯了,我只想着要每个器件要有不同的地址,没想到还可以这样设置,谢谢你的指点!恍然大悟啊!受教了
回复

使用道具 举报

发表于 2013-7-11 11:51:34 | 显示全部楼层
zhanghuipz 发表于 2013-7-7 14:38
只能使用两个吗,不能再多了吗,我看资料上说可以有四个从机,这是什么意思呢

看硬件的地址脚.
IIC设备有的 是1根脚, 那么只能是0,1两种状态, 所以IIC地址就只有2个中选1个
看硬件技术手册  一般叫做ADD 比如ADD1 ADD2之类的
2根脚可以出4个地址,3个就是8个地址.

如果实在是需要多MPU的环境,一般可以采用多组 MPU+单片 然后用一个单片进行数据汇总(也可以直接用电脑汇总,不过电脑的接口有限 不能接太多单片机)

还有就是单片机直接沟通的方式有很多,比如IIC, 单片机可以定义无数的地址, 也就是说可以一台做M的单片,一群做S的单片+MPU的 主从模式 (S可以达到127组)  M单片单独和电脑进行数据通讯.这样就可以进行数据采集和分析
回复

使用道具 举报

发表于 2013-7-11 12:07:33 | 显示全部楼层
zhanghuipz 发表于 2013-7-7 14:38
只能使用两个吗,不能再多了吗,我看资料上说可以有四个从机,这是什么意思呢


源地址:http://wenku.baidu.com/view/95b01eb5960590c69ec376a3.html

从上表上看,6050只有一个ADD0脚.也就是说 一个IIC总线上最多接2个MPU6050,
IIC通讯建议你看看精华区, 就好像IP地址一样, 唯一不同的是,IP地址是可以自由指定的,IIC地址一般是通过硬件地址来指定的,1个脚,意味着只能用2个地址其中的一个
访问的时候,要用到这个地址才能访问这个器件,地址不对 其他硬件是不会响应的,这就是为啥IIC可以同时并联N多设备而不会冲突.
一个脚 意味着只能 2个状态 + 或者 GND (或者叫做 高或者低)

如果用2个MPU并联在一个IIC总线上, 它们的ADD0脚 必须是一个连接到 高 一个连接到 地 ,IIC地址可以看数据手册 上面会标注 主地址和备用地址(或者标注 ADD0的状态和对应的地址)


================黄金分割线 详细看我上面的引用地址========
MPU-60X0的Slave地址为b110100X,7位字长,最低有效位X由AD0管脚上的逻辑电平决定。这样就可以允许两个MPU-60X0
连接到同一条I2C总线,此时,一个设备的地址为b1101000(AD0为逻辑低电平),另一个为b1101001(AD0为逻辑高)。
===============================================

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-7-11 12:11:43 | 显示全部楼层
darkorigin 发表于 2013-7-11 12:07
源地址:http://wenku.baidu.com/view/95b01eb5960590c69ec376a3.html

从上表上看,6050只有一个ADD0脚 ...

哥哥,说的不错啊,一个地址同时挂两个没问题!
回复

使用道具 举报

发表于 2013-7-11 12:13:20 | 显示全部楼层
Randy 发表于 2013-7-11 12:11
哥哥,说的不错啊,一个地址同时挂两个没问题!

挂多了,不知道会咋样.呵呵
或许就像上面有个兄弟写的可以用程序调整6050的ADD0来实现多片同时工作, 这个需要测试之后才知道.
回复

使用道具 举报

发表于 2013-7-11 12:14:35 | 显示全部楼层
darkorigin 发表于 2013-7-11 12:13
挂多了,不知道会咋样.呵呵
或许就像上面有个兄弟写的可以用程序调整6050的ADD0来实现多片同时工作, 这个 ...

是的,需要测试才能肯定,看datasheet上说是可以,等他们去试吧!
回复

使用道具 举报

发表于 2013-7-11 12:22:14 | 显示全部楼层
Randy 发表于 2013-7-11 12:14
是的,需要测试才能肯定,看datasheet上说是可以,等他们去试吧!

手册上只是说了ADD0 也就是脚9的状态对应的地址,并没有说可以动态修改,不知道这样的修改会不会有神马问题
(比如需要重新设置寄存器 初始化神马的  要知道这样单片机的程序时间就会后延很多时钟周期  采集频率会被影响)
回复

使用道具 举报

发表于 2013-7-11 12:22:40 | 显示全部楼层
Randy 发表于 2013-7-11 12:14
是的,需要测试才能肯定,看datasheet上说是可以,等他们去试吧!

大多数状况下,也不需要一个IIC总线上接N多MPU,没这样的应用
回复

使用道具 举报

 楼主| 发表于 2013-7-12 09:36:21 | 显示全部楼层
darkorigin 发表于 2013-7-11 11:51
看硬件的地址脚.
IIC设备有的 是1根脚, 那么只能是0,1两种状态, 所以IIC地址就只有2个中选1个
看硬件技 ...

非常感谢你的解答
回复

使用道具 举报

 楼主| 发表于 2013-7-12 09:38:03 | 显示全部楼层
darkorigin 发表于 2013-7-11 12:07
源地址:http://wenku.baidu.com/view/95b01eb5960590c69ec376a3.html

从上表上看,6050只有一个ADD0脚 ...

我如果早一个礼拜看到你的解答就好了,谢谢
回复

使用道具 举报

发表于 2014-6-26 15:13:21 | 显示全部楼层
zhanghuipz 发表于 2013-7-12 09:38
我如果早一个礼拜看到你的解答就好了,谢谢

嗨,我现在也遇到需要多个MPU6050的问题了,请问你解决了吗?怎么解决的?
回复

使用道具 举报

发表于 2014-8-7 12:33:23 | 显示全部楼层
ZhangAnam 发表于 2014-6-26 15:13
嗨,我现在也遇到需要多个MPU6050的问题了,请问你解决了吗?怎么解决的?

请问你解决了吗 能挂两个以上吗
回复

使用道具 举报

发表于 2014-8-12 08:40:42 | 显示全部楼层
如果想挂两个以上的,可以用4052进行分。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-21 18:59 , Processed in 0.045596 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表