找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5936|回复: 1
收起左侧

MPU6050直接内置融合引擎

[复制链接]
ID:51024 发表于 2014-7-9 23:03 | 显示全部楼层 |阅读模式
官方的运动库,必须通过这个才能启用MPU6050的DMP引擎(数据手册里完全不提这个东西,必须在官网注册登录后才有·····)
里面的代码是基于msp430的,不过很容易就能移植到stm32上面。
编译一下,把报错的地方改掉就OK。

唯一需要的就是得提供i2c读写接口,然后在
#define i2c_write(a, b, c, d)   !I2C_BufferWrite(d, c, b, a)
这里替换

剩下的就是照着范例文件依次调用函数
主要是这几个
  mpu_init();
  mpu_set_sensors(INV_XYZ_GYRO | INV_XYZ_ACCEL);
  mpu_configure_fifo(INV_XYZ_GYRO |        INV_XYZ_ACCEL);mpu_set_sample_rate(DEFAULT_MPU_HZ);
  dmp_load_motion_driver_firmware();
dmp_set_orientation(inv_orientation_matrix_to_scalar(gyro_orientation));
dmp_enable_feature(hal.dmp_features);
dmp_set_fifo_rate(DEFAULT_MPU_HZ);                        
run_self_test();
mpu_set_dmp_state(1);

其中dmp_load_motion_driver_firmware()这个很重要,失败的话就没法开启DMP
run_self_test();是自检,用来消除漂移的

初始化完成后在死循环里调用dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more);来读取FIFO
(sensors & INV_WXYZ_QUAT)为真就说明读到四元数,默认是long,得转换成float后除以 1073741824.0f,然后就能使用了,顺序是wxyz


回复

使用道具 举报

ID:221145 发表于 2017-10-15 22:30 | 显示全部楼层
感谢提醒 ,一直在想为什么要加这个初始化的程序,原来如此。规格书里并没有说明。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表