【uFun试用】测试Lis3dh陀螺仪
LIS3DH是ST公司生产的MEMS三轴加速度计芯片,实现运动传感的功能。主要特性有:
宽工作电压范围:1.71 ~ 3.6V
功耗:低功耗模式2μA;正常工作模式、ODR = 50Hz时功耗11μA(要求SDO/SA0脚浮空或上拉)
测量范围:+/-2g ~ +/-16g
接口:I2C、三线制/四线制SPI16 bit数据输出
两个可编程中断输出脚,用于自由落体和动作检测
6D/4D方向检测
内置AD支持3路外部信号输入
内置温度传感器内置32-slot的10-bit FIFO存储器
封装:3 x 3 x 1 mm LGA-16
引脚定义:
VCC:电源
Vdd_IO:数字接口供电电源
GND:地
RES:连接到地
NC:不连接
CS:I2C接口选择(CS=1);或SPI接口片选脚(CS=0)
SCL/SPC:I2C接口或SPI接口的时钟线
SDA/SDI/SDO:I2C接口或SPI接口数据线
SDO/SA0:I2C地址选择脚;或四线制SPI接口输出脚。浮空时为1。
INT1:中断信号输出,触发条件可中断
INT2:中断信号输出,触发调节可中断
ADC1、ADC2、ADC3:数模转换的模拟信号输入脚
简单的介绍之后开始查看数据手册进一步的了解陀螺仪,(帖子最后我会附lis3dh陀螺仪英文资料,无奈没找到中文资料),ST公司给了一份官方的驱动,所以只需要知道配置相关的寄存器,IIC和SPI协议读取数据这需要我们来写。开始配置初始化使能XYZ三轴,进而读取相关寄存器相关数据,读取16位数据以后进行数据是处理这样就可以得到XYZ三轴原始数据如下图1,其他两轴寄存器数据也是一样的。
图1
图1是X轴寄存器的数据格式,前5位是符号位所以在进行数据使用的时候需要判断正负号
读取完XYZ三轴的原始数据(xyz三轴加速度)以后在计算的得出灵敏度,加速度 = 加速度轴原始数据/加速度灵敏度,读取0x23寄存器数据可得,加速度配置寄存器如下图2所示, FSCALE2:0这三位设置陀螺仪满量程范围,000-2g,001-4g,010-6g,011-8g,100-16g这样就可以得到灵敏度,一般默认是2g传感器是16位数据,得到灵敏度是65536/4=16384LSB/g
- //灵敏度,加速度数据 = 加速度轴原始数据/加速度灵敏度
- void LIS3DH_Get_Sensitivity(uint8_t* sensitivity)
- {
uint8_t fullscale = 0; //读取0x23寄存器数据得到低两位数据,灵敏度和设置的量程有关,但是只会相关的设置 LIS3DH_ReadReg(LIS3DH_CTRL_REG4,&fullscale); //使用IIC读取数据函数
- fullscale = (fullscale & 0x30) >> 4;
- switch (fullscale)
- {
- case 0:*sensitivity = 1;break;
- case 1:*sensitivity = 2;break;
- case 2:*sensitivity = 4;break;
- case 3:*sensitivity = 12;break;
- default : break;
- }
- }
复制代码
这样就可以某一轴加速度了
- AXIS_X = ( int32_t )( pdata[0] * sensitivity );//X轴加速度
复制代码
重力加速度
- acc_g = sqrt(pow(acc_x, 2) + pow(acc_y, 2) + pow(acc_z, 2));
复制代码
|