关于MPU6050模块的注意事项

关于MPU6050模块的使用

MPU6050中有一个三轴陀螺仪三轴加速度计和一个温度传感器,陀螺仪是用来测角速度的,根据角速度和角加速度可以算出pitch(俯仰)、yaw(航向)、roll(横滚)三个角度。关于坐标方向已经在实物芯片中标明出来。

我们只需使用引脚VCC、GND、SCL、SDA、AD0。即可获得姿态数据。

MPU6050模块是通过IIC来传输数据的,它有两个IIC接口,我们只使用其中一个,**是通过SCL和SDA两条线与MCU通信;**第二个辅助IIC通道,通过AUX_CL和AUX_DA连接外部从设备,比如磁传感器,这样就可以组成一个九轴传感器。

AD0 是我们使用到的IIC 接口的地址控制引脚。当AD0 悬空/接 GND 的时候,模块的 IIC 从机地址为:0x68;当AD0 接 VCC 的时候,模块的 IIC 从机地址为:0x69。

补充

INT 引脚:中断输出引脚,每当MPU6050 有数据更新时,引脚INT 就会产生电平变化。推荐使用这种方式,来读取数据。

二、程序移植

我们关于MPU6050的驱动程序可以移植正点原子的例程,

需要注意的是:

  1. 修改SCL和SDA引脚,如果需要用到AD0引脚,则修改,用不到就删除AD0的初始化代码

  2. 在DMP初始化函数atk_ms6050_dmp_init()中,需要去掉自测试函数atk_ms6050_run_self_test()。因为在函数中会判断传感器是否水平放置,只有水平放置的时候才能自检成功。

  3. 如果我们不采用INT中断读取数据(手动读取),那么需要保证读取ATK-MS6050 FIFO中数据的频率需与宏DEFAULT_MPU_HZ定义的频率一致,例如采样频率为100HZ,那么10ms读取一次数据是合适的。读取得太快或太慢都可能导致读取失败。所以在while循环中调用atk_ms6050_dmp_get_data(&pit, &rol, &yaw)来读取FIFO数据时,最好不要加延时函数,会影响速率,导致读取失败。

  4. 如果我们采用INT中断获取数据,那么在使用CubeMX配置完外部中断引脚后,需要先失能外部中断,在完成MPU6050模块初始化后,再使能外部中断,(经过测试发现,如果在初始化前开启外部中断,则会不断进入外部中断执行函数中,导致主程序卡死)。

以上是所有内容,需要交流可以加微信:cccjw08

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值