【精选】MPU6050使用/正点原子代码移植/MPU6050注意事项/关于几个频率的解释/STM32F103

您所在的位置:网站首页 高度仪f1到f4使用教程视频 【精选】MPU6050使用/正点原子代码移植/MPU6050注意事项/关于几个频率的解释/STM32F103

【精选】MPU6050使用/正点原子代码移植/MPU6050注意事项/关于几个频率的解释/STM32F103

2023-11-08 23:47| 来源: 网络整理| 查看: 265

关于MPU6050 MPU6050简单介绍

对于各位接触到MPU6050的同学们来说,应该不缺MPU6050的参考资料, 其中有一篇《MPU-6000 / MPU-6050 产品说明书》—— By LeeDy.Li 2013.1.7的翻译文档。 正点原子、野火的开发指南都有详细的MPU6050介绍。

MPU6050有 3 轴陀螺仪和 3 轴加速度传感器,还有一个第二个IIC,用于接外部磁力传感器,对于这个IIC,应该算是一个比较鸡肋的功能,磁力计直接接到主控上面是一个不错的解决方案。 MPU6050自带的数字运动处理器(DMP: Digital Motion Processor)硬件 加速引擎,可以减少MCU的负载,但是这个功能,亲测是比较麻烦的,它可能有时候初始化失败,或者是什么别的情况,甚至连导线连接都可能导致初始化失败,所以建议使用这个功能的时候,把它焊丝在主板上面,至少要保证接线的牢靠。

两种使用方式

如题,两种使用方式

一种是不使用DMP,直接将未经处理过的模拟量数据,直接输入到单片机中处理

另一种是使用DMP,将处理好的熟肉,发送到单片机中

频率解释

在这里插入图片描述

这个是加速度的介绍,加速度最高输出频率1KHz

在这里插入图片描述

这个是陀螺仪的介绍,陀螺仪最高输出频率8KHz

在这里插入图片描述

DMP解算频率最高200Hz,这个也就是可以设定的中断频率

在这里插入图片描述

也就是原子在inv_mpu.h文件中加入的这一个输出频率。 这个频率与中断引脚触发时间相同。

//设置MPU6050的采样率(假定Fs=1KHz) //rate:4~1000(Hz) //返回值:0,设置成功 // 其他,设置失败 u8 MPU_Set_Rate(u16 rate) { u8 data; if(rate>1000)rate=1000; if(rateMPU6050文件夹内所有文件拷贝到自己的工程文件夹中

在这里插入图片描述

如果不更改地址,那么所需要的更改部分只有三处,如果不改引脚,那就什么都不用动。 复制完之后记得在工程里添加头文件路径,以及将其添加到工程中。 这里以STM32F103ZET6即原子精英板工程为示例: 这里我们先说说改引脚的:

更改IO口

在这里插入图片描述

首先是mpuiic.c文件这里这个例程是软件模拟IIC,所以,只需要初始设置为推挽输出就可以了,如果用硬件IIC则需要设置为开漏输出,那么整个IIC文件就要重新写了。

在这里插入图片描述

然后是mpu6050.c文件,因为精英板的接线,以及ATK-MPU6050的设计,所以其AD0接到了PA15上了,这里的语句代表PA15端口重定义为普通IO口,并置为低电平。 AD0可以不接线,模块本身就带了一个下拉电阻,使其悬空状态为低电平,如果不用可以删掉,或者是从这里改引脚。

下面就是最容易出错的部分 在这里插入图片描述

这里是mpuiic.h文件

在这里插入图片描述

这里用到了寄存器的相关操作。

补充寄存器相关知识

以下内容均在手册或相关开发指南中有详细介绍。

STM32 的每个 IO 端口都有 7 个寄存器来控制。他们分别是:配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH;2 个 32 位的数据寄存器 IDR 和 ODR;1 个 32 位的置位/复位寄存器BSRR;一个 16 位的复位寄存器 BRR;1 个 32 位的锁存寄存器 LCKR。大家如果想要了解每个寄存器的详细使用方法,可以参考《STM32 中文参考手册 V10》P105~P129。

这里操作的主要是两个32位的端口配置寄存器——CRL和CRH

CRL 和 CRH 控制着每个 IO 口的模式及输出速率。

CRL是低位寄存器,负责 IO 0-7 CRH是高位寄存器,负责 IO 8-15 不难理解,L代表LOW,H代表HIGH

一个IO口占4个位,这是STM32IO口配置表: STM32IO口配置表

刚刚我们说它们是32位寄存器,一个IO占四位,4*8=32,所以低位寄存器可以控制8个IO口。(配合这个和上面的图理解一下) 在这里插入图片描述 那么我们应该如何修改这些代码呢?首先下列代码是控制PB11的:

#define MPU_SDA_IN() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=8GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3