mpu6050是嵌入式设计中一个比较常用的芯片,虽然有比它更好的芯片,但耐不住这块芯片便宜,所以使用也是非常广。它的主要功能是可以提供以它为中心的欧拉角的值和一些陀螺仪,加速度传感器的数据。
笔者根据正点原子stm32的dmp库,花了一个下午的时间将dmp库移植到了tm4上,并使用了tm4自带的软件iic功能,具体库下载地址为:
https://download.csdn.net/download/qq_43725844/12406989

一、接线

具体的接线为:
SCL——————PB2
SDA——————PB3
VCC——————3.3V
GND——————GND
其他io口空着
注意所有的模块接单片机时都必须共地(即单片机的GND与模块的GND相连)

二、关于移植代码

有关DMP库的内容实在太多,但作为单纯的移植来说并不需要搞懂,只需要修改一些东西达到和源代码相同的格式就行。笔者这里主要修改的就是IIC发送和接收数据的代码,只改一些比较底层的代码,让其他的代码都能不报错就行。

三、关于硬件连接和一些小问题

接线如上,但问题有不少;
一、尽量不要使用杜邦线,使用杜邦线的话建议粘的牢一些,mpu6050的电压差非常敏感,有时候只是碰了下电源线,mpu6050的电源灯就会闪烁,这个闪烁很危险!!!!这一闪就代表着6050进行了重新上电,而iic协议的6050必须要有一个上电后初始化的动作,但单片机此时已工作在while循环中,初始化是不可能了,这样也就导致了单片机卡死的现象。解决方法的话还是要从连接线上下手,笔者建议大家能画板子的画一块板子,这样起码供电没有问题。
二、mpu6050一般要有一个一秒钟左右的上电时间,所以单片机最开始应该有一个延迟一秒的等待时间,不然mpu6050可能完不成初始化。
三、有时在运行dmp库中会发现单片机会一直卡在自检中,这样大概率上是因为mpu6050没有放平。
四、在读数据时发现z轴数据即使6050自身没动也会慢慢增加,这种现象称为零漂,都是便宜惹的祸,要解决的话还是要使用更贵的芯片或者使用地磁模块来解决。贵的芯片自有贵的道理。。。

三、关于使用

一、在mpu6050初始化时一定要放平,其在初始化时会以当前的状态为0值进而有后续变化;
二、有关读6050的值建议在定时器中断中来读,不要使用延时函数来读(笔者用500ms延时函数来读就出现了读不了值的问题)
三、mpu6050最常用的还是它的z轴的值,一般用在小车的原地旋转上;或者是用于平衡车上x或y轴的值;另外在使用6050时一定要将6050固定好!!!

tm4驱动外接模块系列(一)--------有dmp库的mpu6050相关推荐

  1. ESP-12F驱动MPU6050使用DMP库姿态解算

    一.准备工作 主芯片采用是安信可科技的ESF-12F模组(内置ESP8266芯片),使用GPIO模拟I2C驱动MPU6050,i2c驱动部分可直接参考官方例程中的i2c_master.c文件,(附件提 ...

  2. esp32系列(11):ESP32 IDF平台 mpu6050 DMP 驱动移植及测试上位机开发

    目录 1 DMP 官方库介绍 1.1 DMP与MPL(Motion Processing Libraries)功能 1.2 运行MPL的硬件要求 1.3 Motion Driver 6.12 的架构 ...

  3. 字符设备驱动之cdev_init()系列函数

    字符设备驱动之cdev_init()系列函数 1.内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义: linux-2.6.22/include/linux/cdev.h struct ...

  4. K_A07_003 基于 STM32等单片机驱动DRV8825模块按键控制步进电机正反转

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 SETP时序 对应程序: 细分说明 程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+DRV8825模块 1. ...

  5. K_A07_001 基于 STM32等单片机驱动A4988模块按键控制步进电机正反转

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 SETP时序 对应程序: 细分说明 程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+A4988模块 1.2. ...

  6. AP类WiFi模块系列一:核心板式AP类WiFi模块

    WiFi模块主要有网卡类和AP类两大类.     网卡类WiFi模块通信接口.通信信道.综合功能可以大体分成八大类:AP类的WiFi模块可以分为核心板式AP类WiFi模块(核心板方式,只引出接口pin ...

  7. 网卡类WiFi模块系列三:USB接口双通道单/双频WiFi模块

    WiFi模块主要有网卡类和AP类两大类.网卡类WiFi模块通信接口.通信信道.综合功能可以大体分成八大类:AP类的WiFi模块可以分为嵌入式AP模块(核心板方式,只引出接口pin脚)和AP主板(也就是 ...

  8. nginx https 访问http_Nginx之Http模块系列之访问控制模块

    个人博客:https://www.aiopsclub.com/ Nginx之Http模块系列之访问控制模块 接下来我们开始逐个模块讲解nginx,相信这部分结束后,大家对nginx支持的模块功能能做到 ...

  9. [.NET领域驱动设计实战系列]专题八:DDD案例:网上书店分布式消息队列和分布式缓存的实现...

    原文:[.NET领域驱动设计实战系列]专题八:DDD案例:网上书店分布式消息队列和分布式缓存的实现 一.引言 在上一专题中,商家发货和用户确认收货功能引入了消息队列来实现的,引入消息队列的好处可以保证 ...

最新文章

  1. 如何在Windows7上安装Hyper-v manager
  2. nerdctl命令tab键补齐方法
  3. mysql 字段相同条数_用sql语句统计数据库某个字段中相同的数据有多少条?
  4. 深入浅出:HTTP/2
  5. python pca主成分_超越“经典” PCA:功能主成分分析(FPCA)应用于使用Python的时间序列...
  6. django-关联查询-通过模型类跨表关联查询
  7. 何时使用.First以及何时将.FirstOrDefault与LINQ结合使用?
  8. 线性代数与矩阵论 定理 1.3.9 唯一析因定理
  9. linux编程 定时器,Linux 定时器编程
  10. Micrium uC-Probe导入.elf文件的问题
  11. (转)国内外优秀的Web前端工程师
  12. SQL 存储过程使用
  13. linux配置web页面登录密码,在Linux下通过WEB认证方式上网
  14. js发布订阅原理,代码解析
  15. 无损音乐统一音量大小好吗_您可以无损增加MP3文件的音量吗?
  16. JAVA飞机移动斜着走_java复习 做一个简易的飞机游戏
  17. python判断队列是否为空_python队列Queue
  18. 2台博能传动伺服驱动器使用105报文(DSC)实现绝对齿轮同步
  19. iOS之Xcode断点调试
  20. 高等几何——射影平面2

热门文章

  1. MAC 10.14安装第三方软件的方法
  2. jQuery背景墙聚光灯效果
  3. linux C -- ftok函数
  4. 基于Matlab遗传算法工具箱解决物流中心选址
  5. Vue学习记录-路由
  6. 什么是UI?就业前景如何?
  7. torch.sequeeze 和 torch.unsequeeze 的用法
  8. 《管理学》之组织设计(进度一)
  9. so-vits-svc4.0 中文详细安装、训练、推理使用教程
  10. STM32CubeMX(2)——串口实现HC-05蓝牙模块与手机通信