烽火社区

标题: ADXL345使用技巧 [打印本页]

作者: ADI_aaron    时间: 2014-8-22 10:32 AM
ADXL345的启动时间在1.4ms左右。                                                                                                                                                                       
作者: lcyacp    时间: 2015-3-4 03:05 AM
标题: ADXL345使用技巧
以下帖子转载自:小磷光一的博客

ADXL345是一种三轴加速度计。当ADXL345沿检测轴正向加速时,它对正加速度进行检测。在检测重力时需要注意,当检测轴的方向与重力的方向相反时检测到的是正加速度。

ADXL345通过3线式或4线式模式进行通信。

图1所示为4线式SPI模式的电气连接。注意,当使用3线式SPI模式时可断开SDO引脚。

[attach]18845[/attach]
图1、4线式连接

图2所示为推荐的3线式模式电气连接。器件的7位I2C地址是0x53,紧随其后的是R/W位。用户通过将SDO/ALTADDRESS引脚连接到VDDIO引脚来选择I2C的替代地址。此配置下的7位I2C地址是0x1D,紧随其后的是R/W位。

[attach]18846[/attach]
图2、3线式连接

初始化时,ADXL345在启动序列期间工作在100 Hz ODR,在INT1引脚上有DATA_READY中断。设置其它中断或使用FIFO时,建议所使用的寄存器在POWER_CTL和INT_ENABLE寄存器之前进行设置。

读取数据时,DATA_READY中断信号表明数据寄存器中的三轴加速度数据已被更新。当新数据就绪时它会被置为高电平。(通过DATA_FORMAT寄存器,中断信号可设置为由低电平变为高电平)利用低-高跃迁来触发中断服务例程。可从DATAX0、DATAX1、DATAY0、DATAY1、DATAZ0和DATAZ1寄存器中读取数据。为了确保数据的一致性,推荐使用多字节读取从ADXL345获取数据。

ADXL345为16位数据格式。从数据寄存器中获取加速度数据后,用户必须对数据进行重建。

DATAX0是X轴加速度的低字节寄存器,DATAX1是高字节寄存器。在13位模式下高4位是符号位。注意,可通过DATA_FORMAT寄存器设置其它数据格式POWER_CTL和INT_ENABLE寄存器之前进行设置。

同时ADXL345具有偏移寄存器,可进行偏移校准。偏移寄存器的数据格式是8位、二进制补码。偏移寄存器的分辨率为15.6 mg/LSB。如果偏移校准的精度必须高于15.6 mg/LSB,需要在处理器中进行校准。偏移寄存器将写入到寄存器的值相加来测试加速度。例如,如果偏移为+156 mg,那么应该往偏移寄存器写入−156 mg
作者: lcyacp    时间: 2015-3-4 03:09 AM
ADXL345是ADI公司的一款3轴、数字输出的加速度传感器。ADXL345是ADI公司最近推出的基于iMEMS技术的3轴、数字输出加速度传感器。ADXL345具有+/-2g,+/-4g,+/-8g,+/-16g可变的测量范围;最高13bit分辨率;固定的4mg/LSB灵敏度;3mm*5mm*1mm超小封装;40-145uA超低功耗;标准的I2C或SPI数字接口;32级FIFO存储;以及内部多种运动状态检测和灵活的中断方式等特性。

ADXL345应用领域很广,拥有灵活的和主控制器通行的SPI(3线和4线)和I2C数字接口,可选的测量范围和带宽,有方便的单振/双振检测 ,活动/非活动监控 和自由落体检测功能。

这款加速度计有八个能够独立使用的中断,中断这里要说一下的就是int1和int2两个中断管脚,中断功能能够通过寄存器相应的映射到这两个管脚。还有就是x、y、z三个轴的中断只能单独使用。另外,对于Activity和Inactivity中断,分成两个工作方式,一个是AC、一个是DC,这两个工作方式对应的工作方式是不同的,AC对应的是新的采样点将以之前的某个采样点为参考,用两个采样点的差值与门限进行比较,来判断是否发生中断。DC 工作方式下,每个采样点的加速度值将直接与门限进行比较,来判断是否发生中断。还有就是Watermark 当FIFO里所存的采样点超过一定点数(SAMPLES)时,Watermark中断置位。当FIFO里的采样点被读取,使得其中保存的采样点数小于该数值(SAMPLES)时,Watermark中断自动清除。 Watermark 当FIFO里所存的采样点超过一定点数(SAMPLES)时,Watermark中断置位。当FIFO里的采样点被读取,使得其中保存的采样点数小于该数值(SAMPLES)时,Watermark中断自动清除。 还要说的一点是:ADXL345的FIFO最多可以存储32个采样点(X、Y、Z三轴数值),且具有Bypass模式、普通FIFO模式、Stream模式和Trigger模式,一共4种工作模式。FIFO功能也是ADXL345的一个重要且十分有用的功能。

还有,当开始调试ADXL345时,先不要急着对其数据进行处理,可以直接先观察数据,然后根据数据再分析,之后再进行处理,比如做补偿电路
作者: zhuml2010    时间: 2015-6-30 02:52 AM
ADXL345和微控制器之间的电路连接非常简单。由ADXL345和微控制器ADuC7026组成。给出了ADXL345和ADuC70262之间的典型电路连接。ADXL345的\CS管脚接高电平,表示ADXL345工作在I2C模式。SDA和SCL是I2C总线的数据线和时钟线,分别连接到ADuC7026相应的I2C总线管脚。ADuC7026的一个GPIO管脚连接到ADXL345的ALT管脚,用来选择ADXL345的I2C地址。ADXL345的INT1管脚连接到ADuC7026的IRQ输入用来产生中断信号。说到了I2C,就说下有关I2C的东西吧!对于I2C总线协议,无论读写,I2C的SDA信号线上送出的第一个字节一定是SLAVE ADDRESS+WRITE。如果这里配置错了,那么数据就是一直读不出来的。读取ADXL345内部寄存器的读写操作时以字节为单位的,而两个字节之间的CS-n,SCLK一直保持有效。在读取寄存器的时候,先要读取内部地址0x00的DEVID,正确之后再进行其他寄存器的操作。因为一个器具具有唯一的ID号,而对这个ID号的读取时首要的任务。

在通信模式和硬件连接的电路中,要注意几点:

1 cs-n必须要上拉到VDD才能启动I2C总线模式
2 SDA和SCL需要上拉电阻
3 SDA在FPGA的IO配置时,要将其配置为inout类型
4 注意ALT-ADDRESS的连接方式与对应的设备从地址是不同的底层驱动的调试是件很头疼的事情,最关键的是对时序的理解。下面是一些经验总结:

1)应当确保硬件连线的正确性。比如,在调试I2C模式时,先确定DSP板的I2C接口正常;如果开始也能确保ADXL345模块正常,那就能将错误定位在软件上,问题就容易解决多了。
2)要确保拿到通信双方器件的正确时序图。合理的配置主控器件,使双方的时序一致。
3)搜索一些参考例子,在其基础上修改,这样也可加快调试的进度。
4)调试中,尽量寻找发现异常现象,分析可能的原因。据此,修改电路或者程序,尝试凸显问题,印证推断。同时,不断记录总结现象和实际原因,日积月累,经验会不断增加。
作者: LL569    时间: 2015-8-30 11:24 AM
谢谢经验分享,收藏了                                                                                                                                                                       
作者: 栗子    时间: 2015-11-14 03:04 AM
不错,谢谢                                                                                                                                                                       
作者: ADI_Rock    时间: 2015-11-30 07:24 AM
请问它的启动时间是多少                                                                                                                                                                       
作者: yaoyan    时间: 2015-12-21 11:36 AM
请问我用QQ2440v3开发板的IIC总线读取ADXL345加速度数据,读0x00为0xe5是对的,但是读加速度数据为0x30,0,0x30,0x31,0x3,0,显然不对啊,换了个片子也是这样,真心不清楚问题出在哪里啊,能给点指点吗?                                                                                                                                                                       
作者: LL569    时间: 2016-1-3 05:25 AM
您好。您描述的“0x30,0,0x30,0x31,0x3,0,”是什么含义。
POWER_CTL中的Measure是否置位。
作者: lcyacp    时间: 2016-1-3 06:26 AM
您好,为什么ADXL345的启动函数void ADXL345_Start();void ADXL345_Start(){SDA = 1;//拉高数据线SCL = 1;//拉高时钟线Delay5us(); //延时SDA = 0;//产生下降沿Delay5us(); //延时SCL = 0;//拉低时钟线}不执行呢?但不调试的时候直接跳过啦!采用i2c总线和51通信时,四线制只需要连接SCL SDA ALTADDRES CS四个引脚么?VCC和GND用不用连呢?                                                                                                                                                                       
作者: zhuml2010    时间: 2016-1-3 08:31 AM
您好。I2C的连接请参考数据手册图40。注意上拉电阻,GND需要连接。                                                                                                                                                                       
作者: LL569    时间: 2016-1-3 09:00 AM
为什么ADXL345的启动函数void ADXL345_Start(); void ADXL345_Start() { SDA = 1; //拉高数据线 SCL = 1; //拉高时钟线 Delay5us(); //延时 SDA = 0; //产生下降沿 Delay5us(); //延时 SCL = 0; //拉低时钟线 }不执行呢?单步调试的时候直接跳过啦!硬件连接确定没问题,可能是什么原因呢?                                                                                                                                                                       
作者: ADI_Rock    时间: 2016-1-3 10:14 AM
请问您在调试过程中,能否测量到引脚电平的相应变化                                                                                                                                                                       
作者: zhuml2010    时间: 2016-1-3 12:49 PM
你好! “Activity和Inactivity中断,分成两个工作方式,一个是AC、一个是DC,这两个工作方式对应的工作方式是不同的,AC对应的是新的采样点将以之前的某个采样点为参考,用两个采样点的差值与门限进行比较,来判断是否发生中断。”这段话中“之前的某个采样点”具体指哪个点?是模块上电时还是活动中断使能开启时??加入中断了,通过读寄存器INT_SOURCE和ACT_TAP_STATUS清中断后。采样点值得选取是否发生改变??期待您给予指点。谢谢!!                                                                                                                                                                       
作者: ADI_aaron    时间: 2016-1-3 02:49 PM
我刚开始接触这款芯片,谁能给我一份ADXL345和51单片机连接的电路原理图吗或者说有没有相关的视频呢?                                                                                                                                                                       
作者: ADI_Rock    时间: 2016-1-3 04:59 PM
请问读取出的XYZ三轴加速度的值单位是什么?                                                                                                                                                                       
作者: l0700830216    时间: 2016-1-3 06:02 PM
单位是mg                                                                                                                                                                       




欢迎光临 烽火社区 (http://bbs.cnecport.com/) Powered by Discuz! X3.2