arduino用I2C通信并接多个ADXL345加速度传感器时读数变大的问题
连线及代码都来自:http://www.geek-workshop.com/forum.php?mod=viewthread&tid=80感谢弘毅 老师哈
我在这基础上通过改变ADXL345的CS口电平来实现只和一个加速度传感器通信
因为ADXL345 CS口必须置低才能进行I2C通信,我将不需通信的一个用IO口动态置高
(原本可以通过改变SD0口电平选择地址,不过不知怎么的我无论给它置高置低地址用I2C扫描代码得到的都是0x53,所以放弃了这个方法)
但这样的话读数x、y、z会达到9.0~15.0
我只连接一个ADXL345 得到的正常情况应该是 -1.0~1.0不进行加速移动 绝对值不会超过1.0
困扰我将近半个月了... 谢谢大家 本帖最后由 林定祥 于 2015-2-2 10:32 编辑
CS引脚拉高至VDD I/O,ADXL345处于I2C模式,需要简单2线式连接。ADXL345支持单个或多个字节的读取/写入。ALT ADDRESS引脚处于高电平,器件的7位I2C地址是0x1D,随后为R/W位。这转化为0x3A写入,0x3B读取。通过ALT ADDRESS引脚(引脚12)接地,可以选择备用I2C地址0x53(随后为R/W位)。这转化为0xA6写入,0xA7读取。
对于任何不使用的引脚,没有内部上拉或下拉电阻,因此,CS引脚或ALT ADDRESS引脚悬空或不连接时,任何已知状态或默认状态不存在。使用I2C时, CS引脚必须连接至VDD I/O,ALT ADDRESS引脚必须连接至任一VDD I/O或接地。
摘自DataSheet 林定祥 发表于 2015-2-2 10:26 static/image/common/back.gif
CS引脚拉高至VDD I/O,ADXL345处于I2C模式,需要简单2线式连接。ADXL345支持单个或多个字节的读取/写 ...
对我懂这个。
可是不能解决我的问题额{:3_58:} UerRob 发表于 2015-2-2 15:13 static/image/common/back.gif
对我懂这个。
可是不能解决我的问题额
你现在是如何接线的呢? 林定祥 发表于 2015-2-2 16:07 static/image/common/back.gif
你现在是如何接线的呢?
http://image.geek-workshop.com/forum/201107/29/2216493yfefttsytrfjoow.jpg
这个基础上再并接一个加速度传感器
将它们俩的CS口置在 D3口和D4口 :'( 没人么 CS口不是置低进行I2C通讯,而是CS引脚拉高至VDD I/O才进行I2C通讯,如果你把CS口置低电平就变成SPI通讯模式了,CS为串行端口使能线,由SPI主机控制,此线必须在传输起点变为低电平,传输终点变为高电平。我想可能是这个原因。 ADXL345有地址编程引脚的。一条总线上最多可以挂载8个ADXL345,但是如果你买的是模块的话,因为地址都是一样的,也就导致只能识别一个ADXL345,IIC正是通过识别不同的子器件地址而识别的
http://zhidao.baidu.com/link?url=msprNVzc4tHKcZsqRx6nBek4ZZC6sS2chD9irRrvflmCF8rECRmkpuN6Z_8BAv9d8Afd0hIhlRcC1xL3ouO5rWT8_9HYENML5bOeu2K_YjK 用CD4053模拟单刀双掷开关来实现与多个ADXL345的通讯。
http://www.geek-workshop.com/thread-14984-1-1.html 楼主解决了吗就分享方法 zongshiwujie 发表于 2015-12-12 12:07 static/image/common/back.gif
用CD4053模拟单刀双掷开关来实现与多个ADXL345的通讯。
http://www.geek-workshop.com/thread-14984-1-1.h ...
呵呵 这个帖子就是我发的。 慕雅流芳 发表于 2016-1-6 14:46 static/image/common/back.gif
楼主解决了吗就分享方法
已经解决了。可以看看9楼的帖子 有没有连线图以及程序代码
页:
[1]