提供給MPU6050驅動的講解注釋(本人親測),以及DMP庫移植的說明,提供一切必須文件,直接移植即可使用輸出歐拉角。(附件)
預覽.jpg (2.99 KB, 下載次數: 121)
下載附件
2020-5-30 09:32 上傳
提供完整的附加函數,方便移植使用:
附加.jpg (64.42 KB, 下載次數: 131)
下載附件
2020-5-30 09:31 上傳
提供完整的驅動以及移植好的DMP庫:
驅動.jpg (91.69 KB, 下載次數: 130)
下載附件
2020-5-30 09:33 上傳
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, 下載次數: 313)
2020-5-30 09:27 上傳
點擊文件名下載附件
驅動 下載積分: 黑幣 -5
|