赤色强袭 发表于 2014-2-17 00:33:08

菜鸟想啃DMP,求大神助攻!!!

本帖最后由 赤色强袭 于 2014-2-17 14:07 编辑

在论坛里翻了几天帖子,无奈才疏学浅,实在是没有一点头绪,有几个问题困扰很久,请各位大神帮帮忙啊!

1.因为原来一直用的是51+Keil,Arduino的程序读起来也不是很懂,库函数调用也不熟悉,想用51实现DMP是不是有点天方夜谭    了?我想把DMP移植到51上,可行吗?

2.现在手里面有这么几个文件:
helper_3dmath.h;
I2Cdev.h;
I2Cdev.cpp;
MPU6050.cpp;
MPU6050.h;
MPU6050_6AXIS_MOTIONApps20.h;
MPU6050_6AXIS_MOTIONApps20.h;
MPU6050_DMP6.ino。
我只知道cpp是c++的源文件,想知道这里面同名的cpp和h文件之间是什么关系,各个文件之间又是怎么个调用关系?

3.我看到有人说要想移植DMP,只要把I2C改了就可以了?这种说法对吗?我看到上面几个文件里面有调用Arduino的文件,只改I2Cdev可以吗?

4.开启DMP的原理具体是什么,是不是给6050的特定寄存器写特定值就可以了?如果是,我用I2C给每个要用到的寄存器写值的方法能不能开启DMP?

5.如果我按照MPU6050.cpp的意思,用C写一遍,那么是不是就可以在51上跑DMP了呢?

本人菜鸟一只,但是在想弄懂DMP到底怎么搞得,还望各位大神不吝赐教。水平有限,还望拍砖。

大神们别让我的帖子零回复啊!!!@Randy@弘毅

Lance 发表于 2014-2-17 20:05:55

先不说51的性能, 光是移植来说, 工作量很大.
那些.h文件都是类似C++的语法, 相当于需要重写.

赤色强袭 发表于 2014-2-17 20:36:26

Lance 发表于 2014-2-17 20:05 static/image/common/back.gif
先不说51的性能, 光是移植来说, 工作量很大.
那些.h文件都是类似C++的语法, 相当于需要重写.

那有没有什么办法直接摸透开启DMP的原理,绕过这些库文件,不用他们。直接操作其内部的寄存器来开启DMP呢?

Lance 发表于 2014-2-18 18:33:02

赤色强袭 发表于 2014-2-17 20:36 static/image/common/back.gif
那有没有什么办法直接摸透开启DMP的原理,绕过这些库文件,不用他们。直接操作其内部的寄存器来开启DMP呢 ...

这要看你打算利用DMP来实现什么.
目前的资料对MPU的寄存器描述是不完整的. 还是得通过程序来了解这些配置过程.
芯片中的DMP能计算出加速度, 角速度, 四元数, 但是这些值是相对于哪个坐标系的, 这个你得考虑一下。
jrowberg写的库实现的功能是比较完整的. 能计算出pitch, yaw, roll角度, 并且对数据提供矢量形式的保存, 更方便了后续的处理, 如卡尔曼滤波.

赤色强袭 发表于 2014-2-19 20:53:02

Lance 发表于 2014-2-18 18:33 static/image/common/back.gif
这要看你打算利用DMP来实现什么.
目前的资料对MPU的寄存器描述是不完整的. 还是得通过程序来了解这些配置 ...

厄,其实就是想得出一个载体坐标系相对于地理坐标系的yaw,pitch,roll角度……
页: [1]
查看完整版本: 菜鸟想啃DMP,求大神助攻!!!