加速度传感器广泛应用于汽车车身安全、硬盘抗冲击防护、地震检测、工程测振、地质勘探等等振动测试分析保护中;消费产品如游戏控制、手柄振动和摇晃等等创新应用中,以及其它工业军事等等多种领域中,应用非常广泛。
UFUN开发板使用的加速度器是意法半导体的三轴加速度传感器LIS3DH,功耗极低,比市场现有的解决方案减少90%以上的功耗,同时缩小封装面积和提升芯片功能性。工作电流消耗最低为2μA,大小仅为3x3x1 mm,最适合运动感应功能、空间和功耗均受限的应用设计,如手机、遥控器以及游戏机。在±2g/±4g/±8g/±16g全量程范围内,LIS3DH可提供非常精确的测量数据输出,在额定温度和长时间工作下,仍能保持卓越的稳定性。
LIS3DH 加速计芯片内置一个温度传感器和三路模数转换器,可简单地整合陀螺仪等伴随芯片。LIS3DH还可实现多种功能,包括鼠标单击/双击识别、4D/6D方向检测以及省电睡眠到唤醒模式。在睡眠模式下,检测链路保持活动状态,当一个事件发生时,传感器将从睡眠模式唤醒,自动提高输出数据速率。
其它重要特性还包括一个可编程的FIFO(先入先出)存储器模块和两个可编程中断信号输出引脚,可立即向主处理器通知动作检测、单击/双击事件等其它状况。
基本原理是通过惯性力作用引起电压变化,通过内部的ADC给出量化数值,从而检测X、Y、Z的加速度数据。UFUN开发板通过I2C串行接口标准读取X、Y、Z的加速度数据。

读取数据需要注意以下两点 :
1.中断出来的非常快,如果在完成初始化之前中断出来了,也就是说整个系统初始化都还没完成,中断就出来了,系统可能就会响应出错。lis3dh的初始化放在系统起来后,考虑到双击唤醒,可以把双击与读加速度分开初始化。调读取加速度数据的时候,如果开了中断,数据FIFO满了,或者没用fifo直接数据准备好了,那么就会产生中断,只有读出数据,中断才会消失。
2.int1中断只能开一个,实测开双击和fifo满中断可以同时运行,但是双击后有时会使中断一直有效不恢复,造成死机。推荐双击中断,加速度轮询。
设置部分关键要搞清楚相关寄存器的配置
//初始化相关寄存器
void Reset_LIS3DH(void)
{
LIS3DH_WriteReg(LIS3DH_TEMP_CFG_REG,0x00);
LIS3DH_WriteReg(LIS3DH_CTRL_REG1,0x07); //XYZ轴使能
LIS3DH_WriteReg(LIS3DH_CTRL_REG2,0x00);
LIS3DH_WriteReg(LIS3DH_CTRL_REG3,0x00);
LIS3DH_WriteReg(LIS3DH_CTRL_REG4,0x00);
LIS3DH_WriteReg(LIS3DH_CTRL_REG5,0x00);
LIS3DH_WriteReg(LIS3DH_CTRL_REG6,0x00);
LIS3DH_WriteReg(LIS3DH_REFERENCE_REG,0x00);
LIS3DH_WriteReg(LIS3DH_FIFO_CTRL_REG,0x00);
LIS3DH_WriteReg(LIS3DH_INT1_CFG,0x00);
LIS3DH_WriteReg(LIS3DH_INT1_THS,0x00);
LIS3DH_WriteReg(LIS3DH_INT1_DURATION,0x00);
LIS3DH_WriteReg(LIS3DH_CLICK_CFG,0x00);
LIS3DH_WriteReg(LIS3DH_CLICK_THS,0x00);
LIS3DH_WriteReg(LIS3DH_TIME_LIMIT,0x00);
LIS3DH_WriteReg(LIS3DH_TIME_LATENCY,0x00);
LIS3DH_WriteReg(LIS3DH_TIME_WINDOW,0x00);
}
//初始化LIS3DH
int gsensor_init(void){
uint8_t response = 0;
response |= LIS3DH_SetODR(LIS3DH_ODR_400Hz);//设置数据输出频率
response |= LIS3DH_SetMode(LIS3DH_NORMAL);//设置正常模式
response |= LIS3DH_SetFullScale(LIS3DH_FULLSCALE_16);//设置量程为±16g
response |= LIS3DH_SetAxis(LIS3DH_X_ENABLE | LIS3DH_Y_ENABLE | LIS3DH_Z_ENABLE);//使能三轴数据输出
return response;
}
由于时间的原因,该加速度传感器的体验还刚刚入门,要想学好该器件的应用,还得跟着张进东老师好好学习,争取能可靠地用到我们的产品中。