移植正点原子mpu6050代码,总是MPU6050初始化失败解决

本文档详细记录了移植正点原子MPU6050代码时遇到的问题,即MPU6050初始化失败。问题根源在于原始代码包含串口调试部分,而在实际应用中不需要该部分。作者通过删除不必要的串口及LCD显示函数,并屏蔽初始化函数内的特定代码块,成功解决了初始化失败的问题,实现了仅读取MPU6050数据的功能。移植后的代码使用OLED显示陀螺仪和欧拉角数据。
摘要由CSDN通过智能技术生成

移植正点原子mpu6050代码,总是MPU6050初始化失败解决

首先观察正点原子MPU6050代码,发现它在读取MPU6050数据的同时,还将数据通过串口发送给上位机进行调试,而我们移植mpu6050,只是单纯的想读取MUP6050的数据,不需要串口部分,问题就出在串口发送数据这。下面我将详细的讲解:(库函数)
我们在移植代码的时候,只移植MPU6050的代码,这样当然没什么问题,我也是这样移植的,移植之后再修改主函数,将串口及LCD显示的一些函数给删掉,删掉之后的代码我就用我的主函数作为示例,我使用的是oled进行显示,示例如下:

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "mpu6050.h" 
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h" 
#include "oled.h"

char oledBuf[20];
 	
 int main(void)
 {	 
	float pitch,roll,yaw; 		//欧拉角
	short aacx,aacy,aacz;		//加速度传感器原始数据
	short gyrox,gyroy,gyroz;	//陀螺仪原始数据	 
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	delay_init();	//延时初始化 
	LED_Init();		  			//初始化与LED连接的硬件接口
	KEY_Init();					//初始化按键 
	MPU_Init();					//初始化MPU6050
	while(mpu_dmp_init())
    {
    }
    OLED_Init();			//初始化OLED  
    OLED_Clear(); 
 	while(1)
	{	
		while(mpu_dmp_get_data(&pitch,&roll,&yaw)==0)
		{		
			MPU_Get_Accelerometer(&aacx,&aacy,&aacz);	//得到加速度传感器数据
			MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);	//得到陀螺仪数据
        }
		delay_ms(100);       
        sprintf(oledBuf,"%d",gyrox);
        OLED_ShowString(0,4,(u8*)oledBuf,16);
        sprintf(oledBuf,"%d",gyroy);
        OLED_ShowString(48,4,(u8*)oledBuf,16);
        sprintf(oledBuf,"%d",gyroz);//得到陀螺仪数据
        OLED_ShowString(96,4,(u8*)oledBuf,16);
        sprintf(oledBuf,"%.1lf",pitch);
        OLED_ShowString(0,6,(u8*)oledBuf,16);
        sprintf(oledBuf,"%.1lf",roll);
        OLED_ShowString(48,6,(u8*)oledBuf,16);
        sprintf(oledBuf,"%.1lf",yaw);
        OLED_ShowString(96,6,(u8*)oledBuf,16);//得到欧拉角数据			
	} 	
}

在修改主函数之后,将程序烧录进自己的板子,发现程序不执行,显示屏无显示。
经过筛查之后,发现mpu_dmp_init()这个函数中的mpu_init()这个函数初始化失败。
在mpu_init()这个函数中,将蓝颜色方框的代码屏蔽掉,问题自然就解决了。
在这里插入图片描述

正点原子MPU6050是一种常用的惯性测量单元(IMU),可以通过感知和测量物体的运动和姿态。如果要将MPU6050移植到其他硬件平台上,可以参考以下步骤: 1. 硬件连接:首先,根据MPU6050的引脚定义,将其正确连接到目标硬件平台上。确保电源和地线的正确连接,并使用适当的电平转换器(如果需要)来匹配平台的电平要求。 2. 引脚定义:查阅MPU6050的数据手册,了解其引脚功能和寄存器的作用。根据目标硬件平台的引脚分配,将引脚定义和寄存器地址进行适配。可能需要对代码进行修改,以保证正确的引脚和寄存器访问。 3. I2C通信:MPU6050使用I2C来与主控芯片进行通信。在移植过程中,需要根据目标硬件平台的I2C接口定义,修改MPU6050库中的相关代码。确保正确的I2C引脚和初始化配置,并处理好I2C通信的错误。 4. 硬件中断配置:MPU6050可以通过硬件中断来提醒主控芯片有新的数据可用。在移植过程中,需要根据目标硬件平台上的外部中断引脚进行配置,并修改MPU6050库中的相关代码,以便处理中断触发和相应的数据读取。 5. 校准和滤波:为了获得更精确和稳定的数据,可以进行MPU6050的校准和滤波。参考MPU6050库中的相关函数,并根据实际需求和平台特性进行适当的修改。 6. 数据处理和应用:一旦MPU6050成功移植到目标硬件平台上,可以根据需要进行数据处理和应用开发。使用MPU6050提供的姿态和运动测量数据,可以实现姿态传感、动作识别等功能。 总之,将MPU6050移植到其他硬件平台上需要进行硬件连接、引脚定义、I2C通信、硬件中断配置、校准和滤波等步骤。在移植过程中,需要根据目标平台的特性进行相关代码的修改,以确保MPU6050在新平台上能够正常工作。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值