
一、 MPU6050简介 MPU6050集成了3轴加速度和3轴陀螺仪,是一款不错的传感器模块,可以用在很多方面,比如:四轴飞控、空中鼠标、两轮平衡车、GPS定位方面、游戏机、3D遥控器、平板设备等等,此模块给我们提供了强大的数据供应,由于将加速度和陀螺仪集成到了一起,免去了组合这两个模块时之间的轴差问题,减少了包装问题,这两年很火,成了DIY制作者的最爱。 二、 细节问题 在淘宝上买MPU6050时,要注意一下几点: 1.查看卖家给出的介绍信息,是否刻意夸大,结合自己所学的知识进行判断。比如:当时在某个论坛上看到某位大神将的,tb上说他们的模块采用高性能的微处理器和先进的动力学解算与卡尔曼动态滤波算法,能够快速求解出模块当前的实时运动姿态。细心的你就会发现它的这种处理器根本就不能提供这种需求,也就是会所计算不出来。2.不要让模块受到碰撞,否则会影响他的性能。 三、相关技术 MPU6050数据是用IIC进行读取的,So必须学会IIC。类似于USB协议,不过和USB比起来可以说是小巫见大巫。 1.IIC技术概述 IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是 由飞利浦半导体公司在八十年代初设计出来的两线式串行总线 特点:接口线少、器件封装形式小、通信速率较高 IIC总线只有两根双向信号线,如下图所示: ![]() 2.IIC数据传输 数据有效位的定义: IIC总线在进行数据传输时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线的高电平或低电平状态才允许变化 起始和停止条件: 当SCL线是高电平时,SDA线从高电平向低电平切换,这个情况视为起始条件。 当SCL线是高电平时,SDA线有低电平向高电平切换,表示停止条件 数据传输格式: ![]() 3.IIC总线寻址 IIC总线规定:从机地址有第一个字节的7位组成 (想要插入表格,可是在这里不会用了,直接从world中截张图算了) ![]() 4.IIC总线编号 从机的地址有固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中科编程部分决定了可接入总线该类期间的最大数目 例如:一个从机的7位寻址中有4为是固定的,3位是可编程的,那个这时仅能寻址8个同类期间。 5.STM32F103中的IIC 这里主要看下载STM32中,IIC是怎么个分布: ![]() 四、操作步骤 1.熟悉MPU6050管脚 ![]() 上图是我自己的模块,由于连上了线,管脚不是很清楚,可以看着一张,管脚和清楚的。 ![]() 2.管脚功能介绍 ![]() 这里已经很详细的介绍了各个管脚的功能,在心里就有个大概了解,在后面编写代码中就会明白好多,更多细节可以查看手册的! 五、实现代码 当时开始做这个东西的时候参考了原子、野火的各个例子,再次感谢你们。 代码块 MPU初始化:
下边是读取陀螺仪的数据函数:
其实参考了圆点博士的开源代码的,看了下匿名四轴下位机协议,当初试了下自己获取的数据是否正确,很不错的,下面是匿名的协议:
在主函数中调用相应的函数即可获取相关数据,做一个简单的测试。 一下是我从串口中获取的数据: ![]() 以及其他数据: ![]() 因为代码中使用了圆点博士的开源代码,而且都是现成的,就不往出贴了…… 以上只是做了个简单介绍,以及获取到了数据,但是并没有说明怎样处理数据,这是很关键的也是最重要的,本次无线飞鼠的数据不好处理,我做到现在数据也不是很稳定,任然有一定幅度的变化。 |
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化