STM32复习笔记(十六)MPU6050六轴传感器

这篇博客是作者sumjess的STM32学习笔记,重点介绍了MPU6050六轴传感器,包括其特点、初始化步骤和主要寄存器配置。内容涵盖MPU6050的功能、DMP的使用以及关键函数。通过DMP,可以简化姿态解算,降低STM32的负担。
摘要由CSDN通过智能技术生成

声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照正点原子的视频和文档的实际顺序梳理,转载请注明出处。

作者:sumjess

适用:这个视频我已经看过3遍了,总会有忘记的,所以来写这本书的随手笔记,记录重点、易忘点。该博客可以当做字典,也可以当做笔记。

目前内容:MPU6050六轴传感器

 

一、什么是MPU6050?:

       MPU6050InvenSense公司推出的全球首款整合性6轴运动处理组件,内带3轴陀螺仪和3轴加速度传感器,并且含有一个第二IIC接口,可用于连接外部磁力传感器,利用自带数字运动处理器(DMP: Digital Motion Processor)硬件加速引擎,通过主IIC接口,可以向应用端输出完整的9轴姿态融合演算数据。

       有了DMP,我们可以使用InvenSense公司提供的运动处理资料库,非常方便的实现姿态解算,降低了运动处理运算对操作系统的负荷,同时大大降低了开发难度

二、MPU6050的特点:

①自带数字运动处理( DMP: Digital Motion Processing ),可以输出6轴或9轴(需外接磁传感器)姿态解算数据。

②集成可程序控制,测量范围为±250±500±1000±2000°/sec 3轴角速度感测器(陀螺仪)

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

④自带数字温度传感器

⑤可输出中断(interrupt),支持姿势识别、摇摄、画面放大缩小、滚动、快速下降中断、high-G中断、零动作感应、触击感应、摇动感应功能 

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

⑦高达400KhzIIC通信接口

⑧超小封装尺寸:4x4x0.9mmQFN

三、MPU6050框图:

四、MPU6050初始化:

①初始化IIC接口。

②复位MPU6050由电源管理寄存器1(0X6B)控制。

③设置角速度传感器和加速度传感器的满量程范围。由陀螺仪配置寄存器(0X1B)和加速度传感器配置寄存器(0X1C)设置

④设置其他参数。配置中断,由中断使能寄存器(0X38)控制;设置AUX II

MPU6050六轴传感器实验STM32F407开发板KEIL软件工程源码: void usart1_send_char(u8 c) { while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)==RESET){}; USART1->DR=c; } //传送数据给匿名四轴上位机软件(V2.6版本) //fun:功能字. 0X01~0X1C //data:数据缓存区,最多28字节!! //len:data区有效数据个数 void usart1_niming_report(u8 fun,u8*data,u8 len) { u8 send_buf[32]; u8 i; if(len>28)return; //最多28字节数据 send_buf[len+3]=0; //校验数置零 send_buf[0]=0XAA; //帧头 send_buf[1]=0XAA; //帧头 send_buf[2]=fun; //功能字 send_buf[3]=len; //数据长度 for(i=0;i<len;i++)send_buf[4+i]=data[i]; //复制数据 for(i=0;i<len+4;i++)send_buf[len+4]+=send_buf[i]; //计算校验和 for(i=0;i>8)&0XFF; tbuf[1]=aacx&0XFF; tbuf[2]=(aacy>>8)&0XFF; tbuf[3]=aacy&0XFF; tbuf[4]=(aacz>>8)&0XFF; tbuf[5]=aacz&0XFF; tbuf[6]=(gyrox>>8)&0XFF; tbuf[7]=gyrox&0XFF; tbuf[8]=(gyroy>>8)&0XFF; tbuf[9]=gyroy&0XFF; tbuf[10]=(gyroz>>8)&0XFF; tbuf[11]=gyroz&0XFF; tbuf[12]=0;//因为开启MPL后,无法直接读取磁力计数据,所以这里直接屏蔽掉.用0替代. tbuf[13]=0; tbuf[14]=0; tbuf[15]=0; tbuf[16]=0; tbuf[17]=0; usart1_niming_report(0X02,tbuf,18);//传感器帧,0X02 } //通过串口1上报结算后的姿态数据给电脑(状态帧) //roll:横滚角.单位0.01度。 -18000 -> 18000 对应 -180.00 -> 180.00度 //pitch:俯仰角.单位 0.01度。-9000 - 9000 对应 -90.00 -> 90.00 度 //yaw:航向角.单位为0.1度 0 -> 3600 对应 0 -> 360.0度 //csb:超声波高度,单位:cm //prs:气压计高度,单位:mm void usart1_report_imu(short roll,short pitch,short yaw,short csb,int prs) { u8 tbuf[12]; tbuf[0]=(roll>>8)&0XFF; tbuf[1]=roll&0XFF; tbuf[2]=(pitch>>8)&0XFF; tbuf[3]=pitch&0XFF; tbuf[4]=(yaw>>8)&0XFF; tbuf[5]=yaw&0XFF; tbuf[6]=(csb>>8)&0XFF; tbuf[7]=csb&0XFF; tbuf[8]=(prs>>24)&0XFF; tbuf[9]=(prs>>16)&0XFF; tbuf[10]=(prs>>8)&0XFF; tbuf[11]=prs&0XFF; usart1_niming_report(0X01,tbuf,12);//状态帧,0X01 } int main(void) { u8 t=0,report=1; //默认开启上报
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值