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

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固定好!!!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值