LIS3D20L的配置
来源:互联网 发布:普通人如何利用大数据 编辑:程序博客网 时间:2024/06/07 10:23
意法半导体做的这个加速度传感器,能够测得3维加速度。其内部有配置寄存器,数据寄存器和状态寄存器。这些大家可以看看数据手册。我只说说我在应用中遇到的问题,或许和您遇到的问题一样,希望能给您提供帮助。
芯片经过简单地配置,就能输出数据到X,Y,Z的三个数据输出寄存器中,通过SPI读取这三个数据寄存器就可以得到各个方向的加速度值。读取数据可以通过查询STATUS寄存器的状态来确定是否有数据更新,藉此来选择是否读取X,Y,Z数据寄存器。但是这种方式太浪费CPU时间了,所以最好的选择是通过中断读取数据。
在CTRL_REG3中首先选择中断发生后的电平状态。如果要用上升沿触发中断的话,就选择高有效,反之,选择低有效。其次选择中断引脚和中断事件,比如要选择中断输出的第一个引脚输出Data Ready中断,那么将该寄存器的第三位配置成100即可。
我遇到的第一个问题是,配置的Data Ready中断,但是处理器中断没有触发。原来是当配置成为该类型的中断,数据更新后,中断输出引脚立即变成高电平。如果不让该引脚变为低电平,后来的中断就无法触发了。读X,Y,Z的数据寄存器清除该高电平。所以在开中断之前,先读X,Y,Z的数据寄存器将中断引脚变为低电平,这样当内部数据更新时,就可以触发中断。同时,如果想要连续触发,就要在下一次数据更新之前,读取X,Y,Z数据寄存器。一般都在中断中读取了这三个寄存器,也就将中断输出引脚拉低电平了。
第二个问题是,配置click模式中的threshold value,time limit,duration time,latency time,window time 以及single click 与double click。
single click是只给芯片一次激励,让它动一下。
double click是给芯片两次激励,让它动两下,明白吗?
结合下面几个图,解释这几个时间的意义。
在上图的single click中,设定了time limit长的一段限制时间。当某时刻开始,加速度超过了threshold,如果经过小于time limit的时间内,它的加速度又下降到threshold之下,那么会触发sigle click中断。如图(a)就触发了中断,而在图(b)中,由于时间超出了time limit,所以不会触发中断。
下图是一个single click和double click触发的场景:
最上面的红曲线线是某一段时间加速度的曲线,横黑虚线是设置的threshold。蓝色的竖虚线之间的时间为time limit,红色的竖虚线之间的时间为latency。在图的下半部分(b)中还有个不起眼的WINDOW。
在(a)栏里是single click,由于曲线在time limit之内回到了threshold以下,所以会触发中断。
在(b)栏里是double click,在这里用到了latency time 和window time。latency time是中断电平保持多久时间,而window time又限制了下一次激励的到来时间必须在window之内,这样才能触发double click中断,如果下次激励到来晚了,就没饭吃了。
在下图的(a)中,第二次的激励来的时间在window之内,所以成功触发,(b)中设定的window比较短,所以没有赶上触发中断。
最后一个要注意的问题就是,中断触发后,如果还想要得到后来的中断,就必须把中断信号线拉低。如何拉低,仔细阅读数据手册。有的数据手册写的不够详细,请查阅详细一点的。
- LIS3D20L的配置
- [tuxedo配置]我的配置
- LVS的配置详解配置
- PIC 配置字的配置
- eclipse配置linux的配置
- [Java配置]Tomcat的配置
- PHPStorm基本的配置配置
- eclipase的配置jdk的配置
- 2.action的配置、常量配置以及路径的配置
- Apache的中配置Directory配置问题
- 配置JSP-Tomcat需要配置的参数
- 取得配置器配置参数的FM
- RedHat的几个常用配置-网络配置
- JAVA配置-JDK环境变量的配置
- web.xml的配置中配置作用
- 配置NHibernate有三种常见的配置方法
- 配置CKEditor显示的图标及配置
- Mongodb的安装、主从配置、replicaSet配置
- android学习系列-JDBC连接SQL server与ADO.NET连接Sql Server对比(4)
- 欧拉函数
- Access Control
- 数据库查询优化方案(处理上百万级记录如何提高处理查询速度)
- 浅谈线程
- LIS3D20L的配置
- SDJZ 平均绩点
- VIM学习笔记001 - VIM配置
- 实现字符串中子字符串的替换
- 编程中无穷大常量的设定技巧
- Launcher源码浅析-----Launcher自定义布局属性
- 进程的通信方式
- Linux进程阻塞的相关知识
- 反射Reflect