介绍
![](https://img-blog.csdnimg.cn/img_convert/038d408a552345e99f97ae02f1e99a6f.png)
作用:测量三轴加速度和三轴角速度
测三轴加速度:加速度计
![](https://img-blog.csdnimg.cn/img_convert/12ac1f407e12447fa5abc9695eca6e22.png)
测三轴角速度:陀螺仪
![](https://img-blog.csdnimg.cn/img_convert/f3ec71c000fc464484d37120efa984fd.png)
加速度计具有静态稳定性,动态不稳定性
陀螺仪具有静态不稳定性,动态稳定性
需要互补滤波,得到动态,静态都稳定的姿态角
参数
16位ADC采集传感器:测量范围:-32768--32767
加速度计满量程选择:±2;±4;±8;±16(g)
陀螺仪满量程选择:±250;±500;±1000;±2000;(°/sec:每秒转多少度)
注意:满量程数据和范围测量数据对应,满量程数据越小,数据就越精确,线性关系
可以配置低通滤波:设置滤波值,低频部分可以通过,提高数据平滑
可以配置时钟源
可以配置采样分频
注意:时钟源和采样分频用来给设备提供时钟,控制采样速度
i2c从机地址:1101000(AD0=0); 1101001(AD0=1)
寄存器
![](https://img-blog.csdnimg.cn/img_convert/ee25677a1e8741e7b36f8bc7a3a6ca1f.png)
将采集到的数据通过ADC写入到SensorRegister(传感器寄存器)每个传感器都有自己单独的数据寄存器,不会数据覆盖;我们,设置好转换频率后,数据定时更新,i2c接口直接读取寄存器的值即可以获取六轴数据
数据通过i2c接口读写数据过程
![](https://img-blog.csdnimg.cn/img_convert/aa3b380eac0d4001b25f9d7119583059.png)
![](https://img-blog.csdnimg.cn/img_convert/edef06f3a8714a7f904698115363043a.png)
采样分频寄存器
![](https://img-blog.csdnimg.cn/img_convert/065f22d74c634e149f8f6a8170638ddc.png)
作用:设置采样速率,也就是数据刷新率
![](https://img-blog.csdnimg.cn/img_convert/c227f2405d65487abb10b23283edc46f.png)
Gyroscope output rata:陀螺仪y轴的时钟频率
注意:其中陀螺仪输出速率= 8kHz时,DLPF(低通滤波器)是禁用的(DLPF_CFG = 0或7),为1kHz时,DLPF是启用的。
配置寄存器(主要是DLPF_CFG)
![](https://img-blog.csdnimg.cn/img_convert/23ea3f838cf048b7a5123e4c0d7f9835.png)
低通滤波器配置表:0:不用,和1上面对应,其余按需要选择
![](https://img-blog.csdnimg.cn/img_convert/c8fa6895bb4c42409293f7afe6dc47d3.png)
陀螺仪配置寄存器
![](https://img-blog.csdnimg.cn/img_convert/29f8c2935a834a189c70832d9820d41d.png)
bit5-bit7:陀螺仪自测使能寄存器
bit3-bit4:满量程选择位
![](https://img-blog.csdnimg.cn/img_convert/fcab6c937fe3423b8462956d4b7d7f34.png)
加速度计配置寄存器
![](https://img-blog.csdnimg.cn/img_convert/6587a27823c749a1948369f9dba2bd1e.png)
前五位和上个寄存器功能一样,后面三位是高通寄存器配置位
![](https://img-blog.csdnimg.cn/img_convert/6213eb47455b47448786af452d360214.png)
![](https://img-blog.csdnimg.cn/img_convert/02274d00160f415490dcbc221764854a.png)
![](https://img-blog.csdnimg.cn/img_convert/c901ad8985eb41d3ba41a58d29d47be4.png)
高通滤波器:通过高于设定频率的数据
运动检测阈值寄存器
![](https://img-blog.csdnimg.cn/img_convert/297cb2a0908b472d926266fe7450e19c.png)
当任何加速度计测量值的绝对值超过该运动检测阈值时,将检测运动。此条件增加运动检测持续时间计数器(寄存器32)。当运动检测计数器达到MOT_DUR(寄存器)中指定的时间计数时,运动检测中断被触发
运动检测时间寄存器
![](https://img-blog.csdnimg.cn/img_convert/c3c76cd2f6b64f7e9e8762042fde1119.png)
这个寄存器为运动中断生成配置持续时间计数器阈值。持续时间计数器以1 kHz滴答,因此MOT_DUR的单位为1 LSB = 1 ms。当任何加速度计测量值的绝对值超过运动检测阈值(寄存器MOT_DUR)时,运动检测持续时间计数器增加。当运动检测计数器达到该寄存器中指定的时间计数时,运动检测中断被触发。
零运动阈值检测寄存器(uint8_t)
![](https://img-blog.csdnimg.cn/img_convert/02e02119860f450295962de3b0b37350.png)
这个寄存器为零运动中断的产生配置检测阈值。当加速度计测量的3个轴的绝对值都小于检测阈值时,检测到零运动。此条件增加零运动持续时间计数器(寄存器34)。当零运动持续时间计数器达到ZRMOT_DUR(寄存器34)中指定的时间计数时触发零运动中断。与自由落体或运动检测不同,零运动检测在首次检测到零运动和不再检测到零运动时触发中断。当检测到零运动事件时,将在MOT_DETECT_STATUS寄存器(寄存器97)中指示零运动状态。当检测到从运动到零运动的条件时,状态位设置为1。当检测到零运动到运动的条件时,状态位设置为0。
零运动检测时间寄存器
![](https://img-blog.csdnimg.cn/img_convert/de2dd895169b43ed8d2d30e0c4751155.png)
这个寄存器为零运动中断生成配置持续时间计数器阈值。持续时间计数器以16hz的频率跳动,因此ZRMOT_DUR的单位为1 LSB = 64 ms。当加速度计测量值的绝对值小于检测阈值(寄存器33)时,零运动持续时间计数器增加。当零运动持续时间计数器达到该寄存器中指定的时间计数时触发零运动中断。参数:ZRMOT_DUR8位无符号值。持续时间计数器阈值。单位1lsb = 64ms。
中断使能寄存器
![](https://img-blog.csdnimg.cn/img_convert/04c0627d8a644fcc850dd7324daeee06.png)
要使用哪个中断中断源,使能即可
FF_EN:自由落体检测
MOT_EN:运动检测
ZMOT_EN:零运动检测
FIFO_OFLOW_EN:FIFO缓冲区溢出
I2C_MST_INT_EN:I2C主中断源生成中断
DATA_RDY_EN:Data Ready中断,每次完成对所有传感器寄存器的写入操作时,都会发生该中断。
中断状态寄存器
![](https://img-blog.csdnimg.cn/img_convert/554120004da041ee8ed40261e31677e3.png)
这个寄存器显示了每个中断产生源的中断状态。读取寄存器后,每一位都将被清除。与上面的中断使能寄存器一一对应,当产生某个中断时,对应位被置位。
加速度数据寄存器
![](https://img-blog.csdnimg.cn/img_convert/2623c57fce4a4345b65a53fe2b37fa96.png)
每个数据分为高八位和低八位,想要什么数据直接读取即可,它以16位2的补码存储。
每个量程的灵敏度
![](https://img-blog.csdnimg.cn/img_convert/c2312a09812b450aa9910f4bf458a092.png)
12.温度传感器
![](https://img-blog.csdnimg.cn/img_convert/f703a192eaf440d5a9c16a712b4e1ab1.png)
用法同加速度数据传感器
陀螺仪传感器
![](https://img-blog.csdnimg.cn/img_convert/66c1f8e59e4d4f40b6f4ebebb472b042.png)
用法同加速度数据传感器
运动状态寄存器
![](https://img-blog.csdnimg.cn/img_convert/5b8f729de7b14642ad7f419076cc9b1c.png)
这个寄存器报告运动检测和零运动检测的状态。运动检测位,MOT_XNEG, MOT_XPOS, MOT_YNEG, MOT_YPOS, MOT_ZNEG和MOT_ZPOS,报告产生运动检测中断的运动轴和极性。当检测到零运动时,MOT_ZRMOT位被设置为1。读取这个寄存器清除运动检测位。然而,直到不再检测到零运动,MOT_ZRMOT位才会清除。
MOT_XNEG:当负X轴的运动产生运动检测中断时,该位自动设置为1
MOT_XPOS:当正X轴的运动产生运动检测中断时,该位自动设置为1
MOT_YNEG:当负Y轴的运动产生运动检测中断时,该位自动设置为1
MOT_YPOS:当正Y轴上的运动产生运动检测中断时,该位自动设置为1
MOT_ZNEG:当负Z轴的运动产生运动检测中断时,该位自动设置为1
MOT_ZPOS:当正Z轴的运动产生运动检测中断时,该位自动设置为1
MOT_ZRMOT:该位自动设置为1时,零运动检测中断产生
13.电源管理寄存器1
![](https://img-blog.csdnimg.cn/img_convert/5b567f1d9619437eaa02419138686d19.png)
BIT7:写1复位
BIT6:睡眠
BIT5:循环模式:过一段时间启动一次,唤醒频率由电源管理寄存器2的高2位决定;
BIT3:写1禁用内部温度传感器
BIT0-BIT3:系统时钟来源选择;推荐陀螺仪晶振,更加精确
![](https://img-blog.csdnimg.cn/img_convert/a65bb4ae46d04b5aa7b63f7064f04c13.png)
14.电源管理寄存器2
![](https://img-blog.csdnimg.cn/img_convert/4a50ce582b6545679b31cb56ba8b623e.png)
前两位配置电源管理寄存器1的唤醒频率
![](https://img-blog.csdnimg.cn/img_convert/b9304a6ded9f49318c33dcdf3dd47dbb.png)
后面六位用于配置让那些轴工作,哪些轴不工作,十分省电。
15.设备id寄存器(不可更改)
![](https://img-blog.csdnimg.cn/img_convert/e673dda4f8554e79bb755b7cde28ecf7.png)
始终都是0x68
注意
上电所有寄存器值都是0x00,除了下面这两个:
一个是电源管理寄存器1:默认上电为睡眠(操作寄存器时要解除睡眠)
第二是地址寄存器,始终为0x68(它不是i2c地址)
![](https://img-blog.csdnimg.cn/img_convert/e6e6e7aa053b4607981b864252669cc1.png)