stm32f429开发指南寄存器_探索者 STM32F407 开发板资料连载第三十七章六轴传感器实验...

1)实验平台:alientek 阿波罗 STM32F767 开发板

2)摘自《STM32F7 开发指南(HAL 库版)》关注官方微信号公众号,获取更多资料:正点原子

3643a0feef397036eb211ce2826a8ab5.png

第三十七章 MPU6050 六轴传感器实验

本章,我们介绍当下最流行的一款六轴(三轴加速度+三轴角速度(陀螺仪))传感器:

MPU6050,该传感器广泛用于四轴、平衡车和空中鼠标等设计,具有非常广泛的应用范围。

ALIENTEK 探索者 STM32F4 开发板自带了 MPU6050 传感器。本章我们将使用 STM32F4 来驱

动 MPU6050,读取其原始数据,并利用其自带的 DMP 实现姿态解算,结合匿名四轴上位机软

件和 LCD 显示,教大家如何使用这款功能强大的六轴传感器。本章分为如下几个部分:

37.1 MPU6050 简介

37.2 硬件设计

37.3 软件设计

37.4 下载验证

37.1 MPU6050 简介

本节,我们将分 2 个部分介绍:1,MPU6050 基础介绍。2,DMP 使用简介。

37.1.1 MPU6050 基础介绍

MPU6050 是 InvenSense 公司推出的全球首款整合性 6 轴运动处理组件,相较于多组件方

案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了安装空间。

MPU6050 内部整合了 3 轴陀螺仪和 3 轴加速度传感器,并且含有一个第二 IIC 接口,可用

于连接外部磁力传感器,并利用自带的数字运动处理器(DMP: Digital Motion Processor)硬件

加速引擎,通过主 IIC 接口,向应用端输出完整的 9 轴融合演算数据。有了 DMP,我们可以使

用 InvenSense 公司提供的运动处理资料库,非常方便的实现姿态解算,降低了运动处理运算对

操作系统的负荷,同时大大降低了开发难度。

MPU6050 的特点包括:

① 以数字形式输出 6 轴或 9 轴(需外接磁传感器)的旋转矩阵、四元数(quaternion)、欧

拉角格式(Euler Angle forma)的融合演算数据(需 DMP 支持)

② 具有 131 LSBs/°/sec 敏感度与全格感测范围为±250、±500、±1000 与±2000°/sec

的 3 轴角速度感测器(陀螺仪)

③ 集成可程序控制,范围为±2g、±4g、±8g 和±16g 的 3 轴加速度传感器

④ 移除加速器与陀螺仪轴间敏感度,降低设定给予的影响与感测器的飘移

⑤ 自带数字运动处理(DMP: Digital Motion Processing)引擎可减少 MCU 复杂的融合演算

数据、感测器同步化、姿势感应等的负荷

⑥ 内建运作时间偏差与磁力感测器校正演算技术,免除了客户须另外进行校正的需求

⑦ 自带一个数字温度传感器

⑧ 带数字输入同步引脚(Sync pin)支持视频电子影相稳定技术与 GPS

⑨ 可程序控制的中断(interrupt),支持姿势识别、摇摄、画面放大缩小、滚动、快速下降

中断、high-G 中断、零动作感应、触击感应、摇动感应功能

⑩ VDD 供电电压为 2.5V±5%、3.0V±5%、3.3V±5%;VLOGIC 可低至 1.8V± 5%

⑪ 陀螺仪工作电流:5mA,陀螺仪待机电流:5uA;加速器工作电流:500uA,加速器省

电模式电流:40uA@10Hz

⑫ 自带 1024 字节 FIFO,有助于降低系统功耗

⑬ 高达 400Khz 的 IIC 通信接口

⑭ 超小封装尺寸:4x4x0.9mm(QFN)

MPU6050 传感器的检测轴如图 37.1.1.1 所示:

188d1a8f381c62c55534e32032aadfad.png

图 37.1.1.1 MPU6050 检测轴及其方向

MPU6050 的内部框图如图 37.1.1.2 所示:

ef68352098e3af93d461353e936a253b.png

图 37.1.1.2 MPU6050 框图

其中,SCL 和 SDA 是连接 MCU 的 IIC 接口,MCU 通过这个 IIC 接口来控制 MPU6050,

另外还有一个 IIC 接口:AUX_CL 和 AUX_DA,这个接口可用来连接外部从设备,比如磁传感

器,这样就可以组成一个九轴传感器。VLOGIC 是 IO 口电压,该引脚最低可以到 1.8V,我们

一般直接接 VDD 即可。AD0 是从 IIC 接口(接 MCU)的地址控制引脚,该引脚控制 IIC 地址

的最低位。如果接 GND,则 MPU6050 的 IIC 地址是:0X68,如果接 VDD,则是 0X69,注意:

这里的地址是不包含数据传输的最低位的(最低位用来表示读写)!!

在探索者 STM32F4 开发板上,AD0 是接 GND 的,所以 MPU6050 的 IIC 地址是 0X68(不

含最低位),IIC 通信的时序我们在之前已经介绍过(第二十九章,IIC 实验),这里就不再细说了。

接下来,我们介绍一下利用 STM32F4 读取 MPU6050 的加速度和角度传感器数据(非中

断方式),需要哪些初始化步骤:

1)初始化 IIC 接口

MPU6050 采用 IIC 与 STM32F4 通信,所以我们需要先初始化与 MPU6050 连接的 SDA 和

SCL 数据线。这个在前面的 IIC 实验章节已经介绍过了,这里 MPU6050 与 24C02 共用一个 IIC,

所以初始化 IIC 完全一模一样。

2)复位 MPU6050

这一步让 MPU6050 内部所有寄存器恢复默认值,通过对电源管理寄存器 1(0X6B)的 bit7

写 1 实现。 复位后,电源管理寄存器 1 恢复默认值(0X40),然后必须设置该寄存器为 0X00,

以唤醒 MPU6050,进入正常工作状态。

3)设置角速度传感器(陀螺仪)和加速度传感器的满量程范围

这一步,我们设置两个传感器的满量程范围(FSR),分别通过陀螺仪配置寄存器(0X1B)

和加速度传感器配置寄存器(0X1C)设置。我们一般设置陀螺仪的满量程范围为±2000dps,

加速度传感器的满量程范围为±2g。

4)设置其他参数

这里,我们还需要配置的参数有:关闭中断、关闭 AUX IIC 接口、禁止 FIFO、设置陀螺

仪采样率和设置数字低通滤波器(DLPF)等。本章我们不用中断方式读取数据,所以关闭中断,

然后也没用到 AUX IIC 接口外接其他传感器,所以也关闭这个接口。分别通过中断使能寄存器

(0X38)和用户控制寄存器(0X6A)控制。MPU6050 可以使用 FIFO 存储传感器数据,不过

本章我们没有用到,所以关闭所有 FIFO 通道,这个通过 FIFO 使能寄存器(0X23)控制,默

认都是 0(即禁止 FIFO),所以用默认值就可以了。陀螺仪采样率通过采样率分频寄存器(0X19)

控制,这个采样率我们一般设置为 50 即可。数字低通滤波器(DLPF)则通过配置寄存器(0X1A)

设置,一般设置 DLPF 为带宽的 1/2 即可。

5)配置系统时钟源并使能角速度传感器和加速度传感器

系统时钟源同样是通过电源管理寄存器 1(0X6B)来设置,该寄存器的最低三位用于设置

系统时钟源选择,默认值是 0(内部 8M RC 震荡),不过我们一般设置为 1,选择 x 轴陀螺 PLL

作为时钟源,以获得更高精度的时钟。同时,使能角速度传感器和加速度传感器,这两个操作

通过电源管理寄存器 2(0X6C)来设置,设置对应位为 0 即可开启。

至此,MPU6050 的初始化就完成了,可以正常工作了(其他未设置的寄存器全部采用默认

值即可),接下来,我们就可以读取相关寄存器,得到加速度传感器、角速度传感器和温度传感

器的数据了。不过,我们先简单介绍几个重要的寄存器。

首先,我们介绍电源管理寄存器 1,该寄存器地址为 0X6B,各位描述如图 37.1.1.3 所示:

图 37.1.1.3 电源管理寄存器 1 各位描述

其中,DEVICE_RESET 位用来控制复位,设置为 1,复位 MPU6050,复位结束后,MPU

硬件自动清零该位。SLEEEP 位用于控制 MPU6050 的工作模式,复位后,该位为 1,即进入了

睡眠模式(低功耗),所以我们要清零该位,以进入正常工作模式。TEMP_DIS 用于设置是否

使能温度传感器,设置为 0,则使能。最后 CLKSEL[2:0]用于选择系统时钟源,选择关系如表</

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值