找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6557|回復: 1
打印 上一主題 下一主題
收起左側(cè)

MPU6050直接內(nèi)置融合引擎

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51024 發(fā)表于 2014-7-9 23:03 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
官方的運動庫,必須通過這個才能啟用MPU6050的DMP引擎(數(shù)據(jù)手冊里完全不提這個東西,必須在官網(wǎng)注冊登錄后才有·····)
里面的代碼是基于msp430的,不過很容易就能移植到stm32上面。
編譯一下,把報錯的地方改掉就OK。

唯一需要的就是得提供i2c讀寫接口,然后在
#define i2c_write(a, b, c, d)   !I2C_BufferWrite(d, c, b, a)
這里替換

剩下的就是照著范例文件依次調(diào)用函數(shù)
主要是這幾個
  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();是自檢,用來消除漂移的

初始化完成后在死循環(huán)里調(diào)用dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more);來讀取FIFO
(sensors & INV_WXYZ_QUAT)為真就說明讀到四元數(shù),默認是long,得轉(zhuǎn)換成float后除以 1073741824.0f,然后就能使用了,順序是wxyz


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:221145 發(fā)表于 2017-10-15 22:30 | 只看該作者
感謝提醒 ,一直在想為什么要加這個初始化的程序,原來如此。規(guī)格書里并沒有說明。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表