找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6499|回复: 8
打印 上一主题 下一主题
收起左侧

STM32 MPU6050驱动程序的详细讲解及DMP库的移植

  [复制链接]
跳转到指定楼层
楼主
ID:764756 发表于 2020-5-30 09:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提供给MPU6050驱动的讲解注释(本人亲测),以及DMP库移植的说明,提供一切必须文件,直接移植即可使用输出欧拉角。(附件)


提供完整的附加函数,方便移植使用:


提供完整的驱动以及移植好的DMP库:



MPU6050模块:输出原始数据通过内置DMP进行数据处理,获取姿态信息:角度、角速度,多用于PID控制。
IIC接口引脚配置
3.3V供电
SDA:PB11
SCL:PB10
AD0:PB2
//INT:PB5 中断,暂时用不到

通信协议层:mpu_iic.c/mpu_iic.h
软件模拟IIC,是STM32与MPU6050通信的基本框架

驱动层:mpu6050.c/mpu6050.h
建立在IIC通信机制上的,向DMP库提供对MPU6050寄存器的读写操作,以及完成对MPU6050初始化的任务。

应用层:
移植的库:inv_mpu.c/inv_mpu_dmp_motion_driver.c(及所包含的头文件)
移植的DMP库,对原始数据进行处理,
调用时,在inv_mpu.c中添加如下代码即可(实际上是让DMP库和我们写的驱动层建立联系)
#define i2c_write   MPU_Write_Continue
#define i2c_read    MPU_Read_Continue
#define delay_ms    delay_ms
#define get_ms      mget_ms


附加的函数:延时、串口打印,这些到时候可以统一








具体使用例子如下:
#include "stm32f10x.h"   
#include "usart.h"
#include "delay.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"

int main(void)
{
    uint8_t x=0;
    float pitch,roll,yaw;         //欧拉角
    short aacx,aacy,aacz;        //加速度传感器原始数据
    short gyrox,gyroy,gyroz;    //陀螺仪原始数据
    short temp;                    //温度
   
    NVIC_PriorityGroupConfig( 2 );
    delay_init();
    USART1_Init(115200);   
    printf("程序开始\n");
   
    if( MPU_Init()!=0 )
    {
        printf("MPU6050初始化错误!\n");
        return 0;
    }
        
    if( mpu_dmp_init() )
    {
        printf("DMP初始化错误!\n");
        return 0;
    }
    while(1)
    {
        if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0) //获取DMP处理后的姿态信息(欧拉角)
        {
            temp=MPU_Get_Temperature();    //得到温度值
            MPU_Get_Accelerometer(&aacx,&aacy,&aacz);    //获取加速度传感器原始数据
            MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);    //获取陀螺仪原始数据
        }
        delay_ms(100);
        printf("pitch:%02f  roll:%02f  yaw:%02f\n",pitch,roll,yaw);
    }
   
            
}

全部资料51hei下载地址:
MPU6050.rar (47.44 KB, 下载次数: 310)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏6 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:894089 发表于 2021-3-19 21:10 | 只看该作者
为啥没人留言?
回复

使用道具 举报

板凳
ID:899638 发表于 2021-4-1 18:09 | 只看该作者
不错,下载试试,看能不能跑
回复

使用道具 举报

地板
ID:559804 发表于 2021-4-19 09:57 | 只看该作者
cheers139 发表于 2021-4-1 18:09
不错,下载试试,看能不能跑

可以跑吗
回复

使用道具 举报

5#
ID:248754 发表于 2021-5-12 22:22 | 只看该作者
怎么样  可以跑吗
回复

使用道具 举报

6#
ID:894065 发表于 2021-5-18 20:45 | 只看该作者
帖子里的引角口和程序里的不对应啊
回复

使用道具 举报

7#
ID:829213 发表于 2021-5-19 01:00 | 只看该作者
貌似正点原子例程,这里给个HAL库的驱动,已经带了卡尔曼滤波,(无dmp),
如果希望使用dmp,可以将正点原子例程里关于dmp部分迁移过去,改写几个函数就好,

ps. 每次看正点的程序,都是一万个mmp...

mpu6050_hal_hw_i2c.7z

2.51 KB, 下载次数: 21, 下载积分: 黑币 -5

mpu6050 hal驱动(硬件i2c)

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

8#
ID:797931 发表于 2021-8-7 23:27 | 只看该作者
正在尝试
回复

使用道具 举报

9#
ID:797931 发表于 2021-8-9 13:11 | 只看该作者
可以跑
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表