ADXL345数字加速度传感器通过IIC协议传输数据的使用方法(一)

ADXL345数字加速度传感器通过IIC协议传输数据的使⽤
⽅法(⼀)
ADXL345是ADI公司推出的具有SPI和IIC数字输出功能的三轴加速度计,其最⼤的量程可达到 -16g,另外可选择 -2, -4,-8g量程,可采⽤4mg/LSB分辨率,该分辨率可测得0.25的倾⾓变化
16g量程,意思就是16g时输出32768,-16g时输出-32768,2的16次⽅
LSB的意思是最⼩有效位,为数字输出⽅式,⼀般我们可以⽤mg/LSB来表⽰灵敏度
例如ADXL345量程为 /2g,输出的位数为10位(2的10次⽅共1024个LSB)对应满量程,那么灵敏度就为
4g/1024LSB=3.9mv/g,取倒数为256LSB/g。
ADXL345引脚功能图
⾃动休眠模式
静⽌期间⾃动切换到休眠模式,可以省电。要使能此功能,
如果ADXL345在静⽌期
在THRESH_INACT寄存器(地址0x25) 和TIME_INACT寄存器(地址0x26)设置⼀个值表⽰静⽌(适当值视应⽤⽽定),然后在POWER_CTL寄存器(地址0x2D) 中设置AUTO_SLEEP位(位D4)和链接位(位D5)
。VS为2.5V 时,该模式下低于12.5 Hz数据速率的功耗通常为23 µA。
待机模式
更低功率操作,也可以使⽤待机模式。待机模式下,功耗降低到0.1µA(典型值)
。该模式中,⽆测量发⽣。在 POWER_CTL寄存器(地址0x2D)中,清除测量位(位D3),可进⼊待机模式。器件在待机模式下保存FIFO内容
串⾏通信
可采⽤IIC和SPI数字通信。上述两种情况下,ADXL345作为从机运⾏。
电极扁钢
CS引脚上拉⾄VDD I/O,I2C模式使能
模式使能。CS引脚应始终上拉⾄VDD I/O或由外部控制器驱动,因为CS引脚⽆连接时,默认模式不存在。因此,如果没有采取这些措施,可能会导致该器件⽆法通信。
SPI模式下,CS引脚由总线主机控制。SPI和I2C两种操作模式下,ADXL345写⼊期间,应忽略从ADXL345传输到主器件的数据。
IIC协议
CS引脚拉⾼⾄VDD I/O,ADXL345处于I2C模式,需要简单2线式连接如下图
⽀持单个或多个字节的读取/写⼊。ALT ADDRESS引脚处于⾼电平,器件的7位I2C地址是0x1D,随后为R/W位。这转化为读取。通过ALT ADDRESS引脚(引脚12)接地,可以选择备⽤I2C地址0x53(随后为R/W位)。这转化
0x3A写⼊,0x3B读取
为0xA6写⼊,0xA7读取。
对于任何不使⽤的引脚,没有内部上拉或下拉电阻,因此, CS引脚或ALT ADDRESS引脚悬空或不连接时,任何已知状态或默认状态不存在。
使⽤I2C时,
必须连接⾄VDD
CS引脚必须
必须连接⾄任⼀VDD I/O或接地。
I/O,ALT ADDRESS 引脚必须
不能⾼于VDD I/O 0.3V以上如果有其他器件连接到同⼀I2C总线,这些器件的额定⼯作电压电平不能⾼于
IIC器件寻址
IIC时序图如下
ADXL345为驱动中断提供两个输出引脚:INT1和INT2。
这两个中断引脚都是推挽低阻抗引脚,其输出规格如表 13所⽰。
中断引脚默认配置为⾼电平有效。
设置 DATA_FORMAT寄存器(地址0x31)中的INT_INVERT 位,可以更改为低电平有效。所有功能都可以同时使⽤,但是,⼀些功能可能需要共享中断引脚。
设置INT_ENABLE寄存器(地址0x2E)的适当位,中断使能,
映射到INT1引脚或INT2引脚,根据INT_MAP 寄存 器(地址0x2F)内容⽽定。
最初配置中断引脚时配置中断引脚时,建议中 断使能前前完成功能和中断映射。
改变中断配置时,建议
先通过清零INT_ENABLE 寄存器的功能对应位,禁⽤中 断,
然后再使能中断,重新进⾏功能配置。
中断禁⽤ 时,功能配置助于防⽌中断意外发⽣。
数据相关中断条件失效前,读取数据寄存器(地址0x32⾄ 地址0x37),
或读取INT_SOURCE 寄存器(地址0x30)的剩 余 中 断 , 锁 存 和 清 除 中 断 功 能 。
************************************************************************************************特殊情况的发⽣
**************************************************************************************************
DATA_READY
当有新新的数据产⽣时,DATA_READY 中断置位;当没有 新的数据时,DATA_READY 中断清除。
SINGLE_TAP
加速度值超过THRESH_TAP 寄存器(地址0x1D)值,并且 持续时间⼩于DUR 寄存器(地址0x21)规定的时间范围的 时候,SINGLE_TAP 中断置位。
Activity
加速度值⼤于THRESH_ACT 寄存器(地址0x24)存储值 时,Activity(活动)中断置位,由任⼀轴参与,通过
ACT_INACT_CTL 寄存器(0x27)置位。
DOUBLE_TAP
两次加速度事件超过THRESH_TAP 寄存器(地址0x1D) 值,并且持续时间⼩于DUR 寄存器(地址0x21)的规定时 间范围的时候,DOUBLE_TAP 中断置位。第⼆次敲击开 始于Latent 寄存器(地址0x22)规定的时间之后,但在 Window 寄存器(0x23)规定时间内。
Inactivity
加速度值⼩于THRESH_INACT 寄存器(地址0x25)的存储 值时,Inactivity(静⽌)位置位,所有轴参与,多于 TIME_INACT 寄存器(地址0x26)规定的时间,通过 ACT_INACT_CTL 寄 存 器 (地 址 0x27)置 位 。 TIME_INACT 最⼤值为255秒。
FREE_FALL
加速度值⼩于THRESH_FF 寄存器(地址0x28)的存储值 时,FREE_FALL 置位,⼤于TIME_FF 寄存器(地址0x29) 所有轴(逻辑与)所规定的时间。FREE_FALL 中断不同于 静⽌中断,因为:所有轴始终参与,并为逻辑“和”的形 式,定时器周期⼩得多(最⼤值:1.28秒),始终为直流耦 合操作模式。
蛇板
Watermark
FIFO 样本数等于存储在样本位(FIFO_CTL 寄存器,地址 0x38)的值时,Watermark(⽔印)位置位。读取FIFO 时, ⽔印位⾃动清零,返回⾄样本位存储值的更低值。
Overrun
当有新采样点更新了未被读取的前次采样点时当有新采样点更新了未被读取的前次采样点时,Overru
n 中断置位。Overrun 功能与FIFO 的⼯作模式有关。当 FIFO ⼯作在Bypass 模式下,如果有新采样点更新了 DATAX 、DATAY 和DATAZ 寄存器(地址0x32⾄0x37)⾥ 的数值,则Overrun 中断置位。在其他模式下,只有 FIFO 被存满时,Overrun 中断才会置位。读取FIFO 内容 时,Overrun 位⾃动清零。
FIFO
ADXL345包含嵌⼊式存储器管理系统(专利申请中),采 ⽤32位FIFO ,可将主机处理器负荷降⾄最低。缓冲分四 种模式:旁路模式、FIFO 模式、流模式和触发器模式(参 见FIFO 模式)。在FIFO_CTL 寄存器(地址0x38)内设置 FIFO_MODE 位(位[D7:D6]),可选择各模式
************************************************************************************************四种模式**************************************************************************************************
旁路模式
旁路模式下,FIFO 不可操作,因此,仍然为空。
FIFO 模式
在FIFO 模式下,x 、y 、z 轴的测量数据存储在FIFO 中。 当FIFO 中的采样数与FIFO_CTL 寄存器(地址0x38)采样数 位规定
的数量相等时,⽔印中断置位。FIFO继续收集样本,直到填满(x、y和z轴测量的32位样本),然后停⽌收集数据。FIFO停⽌收集数据后,该器件继续⼯作,因此,FIFO填满时,敲击检测等功能可以使⽤。⽔印中断继续发⽣,直到FIFO样本数少于FIFO_CTL寄存器的样
流模式
流模式在流模式下,x、y、z轴的测量数据存储在FIFO中。当 FIFO中的采样数与FIFO_CTL寄存器(地址0x38)采样数位规定的数量相等时,⽔印中断置位。FIFO继续收集样本,保存从x、y和z轴收集的最新32位样本。新数据更新后,丢弃旧数据。⽔印中断继续发⽣,直到FIFO样本数少于FIFO_CTL寄存器的样本位存储值。
触发器模式
触发器模式下,FIFO收集样本,保存从x、y和z轴收集的最新32位样本。触发事件发⽣后,中断被发送到INT1引脚或INT2引脚(取决于FIFO_CTL寄存器的触发位), FIFO保持最后n个样本(其中n为FIFO_CTL寄存器样本位规定值),然后在FIFO模式下运⾏,只有FIFO没有填满时,才会收集新样本。
从触发事件发⽣到开始从FIFO读取数据,⾄少有5 µs延迟,允许FIFO丢弃和保留必要样本。触发器模式复位后,才能识别附加触发事件。要复位触发器模式,设置器件为旁路模式,然后再设置回触发器模式。请注意,应⾸先读取FIFO数据,因为器件旁路模式下,FIFO清零。
************************************************************************************************
数据读取
**************************************************************************************************
从FIFO中读取数据
从DATAX、DATAY和DATAZ寄存器(地址0x32⾄0x37) 读取FIFO数据。
当FIFO为FIFO模式、流模式或触发器模式时,DATAX,DATAY和DATAZ寄存器读取存储在 FIFO中的数据。每次从FIFO读取数据,x、y和z轴的最早数据存⼊DATAX、DATAY和DATAZ寄存器。
如果执⾏单字节读取操作,当前FIFO样本的剩余数据字节会丢失。因此,所有⽬标轴应以突发(或多字节)读取操作进⾏读取。为确保FIFO完全弹出(即新数据完全移动到DATAX、DATAY和DATAZ寄存器),读取数据寄存器结束后⾄FIFO重新读
⾄少必须有5 µs延迟
磨床磨削液延迟。(保证数据不会丢失)
取或FIFO_STATUS寄存器(地址 0x39)读取前,⾄少必须有
结束。
①从寄存器0x37⾄寄存器0x38的转变或②CS引脚变为⾼电平为标志,读读取数据寄存器结束
对于1.6 MHz或更低频率下的SPI操作,传输的寄存器处理部分充分延迟,确保FIFO完全弹出。
对于⼤于1.6 MHz频率下的SPI操作,有必要拉⾼CS引脚确保5 µs的总延迟;否则,延迟会不充分。5 MHz操作的必要总延迟最多为3.4 µs。
使⽤I2C模式时,不⽤担⼼这个问题,因为通信速率⾜够低,确保FIFO读取的充分延迟
下⾯是⽹友分享的ADXL345校准原理和初始化原理
初始化
茶油精初始化时,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
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时,先不要急着对其数据进⾏处理,可以直接先观察数据,然后根据数据再分析,之后再进⾏处理,⽐如做补偿电路。
ADXL345使⽤⼼得⼆
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)调试中,尽量寻发现异常现象,分析可能的原因。据此,修改电路或者程序,尝试凸显问题,印证推断。同时,不断记录总结现象和实际原因,⽇积⽉累,经验会不断增加。
校准原理
⾸先,这个校准的过程是⼿动的(类似⼿机上的传感器校准),把模块⽔平放置(这个⽔平也只是个⼤概,如果要求⾼的话,还需要其他仪器辅助),
那么x轴和y轴的度数应该为0g,
获取此时的实际x轴和y轴的度数,假设是20和-17。
要注意此时传感器的量程和分辨率,假设此时adxl345是常规量程 -16g,分辨率13位,
那么此时度数的系数应该是1g/256 *1000 = 3.9 mg/LSB,
从数据⼿册上可以查到偏移寄存器的⽐例因⼦是 15.6mg/LSB(固定的,与量程⽆关),
那么需要设定的实际偏移值就是 20/4 = 5和-17/4 = 4(15.6/3.9约为4)
然后取两个值的补码,分别为0x05和0xFB,
写⼊对应的偏移寄存器。
这样,每次从传感器读取的数值就⾃动加上了这个设置的偏移。
z轴的偏移值检测⽅式⼀样,
石材磨光机
把z轴⽔平放置(处于0g场)。
需要注意的是:
1、传感器掉电后,设置的偏移值就丢失了,需要在下次上电后重新设置(不过这个偏移值主要跟芯⽚所处的环境有关,理论上不会经常性的⼤变化)
2、对于偏移值的测量,可以采⽤多次测量求平均值的⽅法

本文发布于:2024-09-21 17:47:56,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/197752.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:寄存器   模式   中断
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议