嵌入式学习日志————MPU6050简介
1.MPU6050简介
MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景
3轴加速度计(Accelerometer):测量X、Y、Z轴的加速度
3轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度
加速度计具有静态稳定性,不具备动态稳定性
陀螺仪具有动态稳定性,不具有静态稳定性(角速度积分得到的角度禁不起时间的考验)
2.MPU6050参数
16位ADC采集传感器的模拟信号,量化范围:-32768~32767
加速度计满量程选择:±2、±4、±8、±16(g)
陀螺仪满量程选择: ±250、±500、±1000、±2000(°/sec)
可配置的数字低通滤波器(当输出数据抖动太厉害时可用)
可配置的时钟源
可配置的采样分频
I2C从机地址:1101000(AD0=0);1101001(AD0=1)
3.硬件电路
引脚 | 功能 |
---|---|
VCC、GND | 电源 |
SCL、SDA | I2C通信引脚 |
XCL、XDA | 主机I2C通信引脚 |
AD0 | 从机地址最低位 |
INT | 中断信号输出 |
4.MPU6050框图
自测单元:当启动自测以后,芯片内部会模拟一个外力施加在传感器上,这个外力会导致传感器数据比平时大。(步骤:使能自测->读取数据->使能自测->读取数据。两个数据相减得到的是自测响应,这个值在芯片手册里给出了相应的范围,如果自测响应在这个范围内,就说明芯片没有问题)
充电泵的升压原理:电源和电容一直快速持续地进行并联充电和串联放点
中断状态寄存器:可以控制内部的哪些事件到中断引脚的输出
先入先出寄存器:可以对数据流进行缓存(本节暂时不用)
配置寄存器:可以对内部各个电路进行配置
传感器寄存器(数据寄存器):存储了各个传感器的数据
工厂校准:内部的传感器校准(不用了解)
数字运动处理器(DMP):是芯片内部自带的一个姿态解算的硬件算法,配合官方的DMP库,可以进行姿态解算(暂时不涉及)
帧同步:用不到
从机的I2C和SPI通信接口:用于和STM32通信
主机的I2C通信接口:用于和MPU6050扩展的设备进行通信
接口旁路选择器:就是一个开关,如果拨到上面,辅助的I2C引脚就和正常的I2C引脚接到一起,这样两路总线就合在一起了,STM32可以控制所有设备。如果拨到下面,辅助的I2C就由MPU6050控制,两条I2C总线独立分开。
5.说明书
这个芯片的系统时钟,可以由
①内部晶振;
②X、Y、Z轴的陀螺仪(因为陀螺仪内部需要高精度时钟的支持,所以陀螺仪内部也有独立的时钟,这三个时钟可以输出作为系统时钟);
③可以通过外部的CLKIN引脚输入32.768Hz的方波,或者19.2MHz的方波(需要额外的电路,比较麻烦)
来提供
可选的中断信号(发生以下事件时,在INT引脚输出一个电平跳变,然后STM32可以用外部中断来接收这个跳变,这样中断信号就可以通往STM32的CPU了)
6.寄存器手册
(1)
(2)数据寄存器↓
(-L表示低八位,-H表示高八位)
①加速度计XYZ轴
②温度传感器
③陀螺仪XYZ轴
(3)电源管理寄存器1
(4)电源管理寄存器2
(5)陀螺仪配置寄存器(4.4)
高三位是XYZ轴的自测使能位,中间两位是满量程选择位,后面三位没用到
自测响应的范围↓
满量程选择↓
(6)加速度计配置寄存器(4.5)
高三位是XYZ轴的自测使能位,中间两位是满量程选择位,后面三位配置高通滤波器
自测响应范围↓
满量程选择↓
(7)对于所有数据寄存器
想读取相关数据时,直接读取对应的数据寄存器即可:这是一个16位的有符号数,以二进制补码的方式存储,我们读出高8位和低8位,高位左移8次,或上低位数据,最后再存在一个uint16_t的变量里,这样就可以得到数据了
(8)电源管理寄存器1
第一位:设备复位(这一位写1,所有寄存器恢复到默认值)
第二位:睡眠模式(这一位写1,芯片睡眠,不工作,进入低功耗)
第三位:循环模式(这一位写1,设备进入低功耗,过一段时间,启动一次,并且唤醒的频率由下一个寄存器(电源管理寄存器2)的第1、2位确定,这个模式比较省电)
第五位:温度传感器失能(写1之后,禁用内部的温度传感器)
最后三位:用来选择系统时钟来源
(9)电源管理寄存器2
后六位:分别控制6个轴进入待机模式
(10)注意
所有寄存器上电默认值均为0x00,除了下面这两个
距离开学还有5天!!!
加油!!!