你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

F4-Discovery连接MPU9250【MD6.12 keil移植】 精华  

[复制链接]
watershade 发布时间:2015-8-8 14:46
阅读主题, 点击返回1楼
1 收藏 12 评论117 发布时间:2015-8-8 14:46
117个回答
motianlun1111 回答时间:2015-8-21 22:47:57
3.JPG 4.JPG 5.JPG 另外也注意到这个6.12的文件夹里面会多出第二幅图的这个压缩文件这个,是个二进制的库,我现在不知道这个库和那个6个文件有什么关系,我只是加那个6个文件到工程里面,我也可以使用,还是说那6个文件只能做6轴融合,不能9轴?,官方资料说的,二进制库里面有他们的专利算法,我不太明白,我们使用者要用到这个吗?这个二进制库做什么用处?
) W2 b7 c% h: w, q; z
& k1 o2 ]6 X9 P% i/ T- R, e# P
motianlun1111 回答时间:2015-8-22 02:04:16
又重新看了一晚上,才慢慢屡清楚思路了,这个mpl 原来是6.12新增的东西,它是用来做9轴融合的,然后它也能有3轴融合,6轴融合,当然3, 6轴的融合用dmp自己就能完成了,此外mpl提供了很多校准和补偿的应用函数api,这个是很生猛的,还有很关键的一点,提供了校准数据如何保持和重新下载的功能,这些都是很厉害的,望有意的朋友一起学习分享,,
anny 回答时间:2015-8-22 08:17:50
起初在的测试是在IAR上测试的,但是个人更喜欢keil上的全局搜索功能,就将工程一直到keil,以便后续工程的迁移4 G! ~% V( I- U' C8 @
这里有错字
watershade 回答时间:2015-8-22 12:38:21
anny 发表于 2015-8-22 08:17+ Q7 x& I0 i2 W
起初在的测试是在IAR上测试的,但是个人更喜欢keil上的全局搜索功能,就将工程一直到keil,以便后续工程的 ...
& @7 F3 H* {; ]: D3 l5 M
谢谢,我就是个白字布袋。
党国特派员 回答时间:2015-8-22 14:59:40
没有任何问题。。。 null - 副本 - 副本 - 副本.png null - 副本 - 副本.png null - 副本 (3).png null.png null - 副本 - 副本 (2).png
Inc_brza 回答时间:2015-8-22 15:55:53
大师你好,请问有没有用SPI方式读过9250呢,IIC不是很难,关键是SPI,网上基本80%以上的人都没法用SPI读取磁力计,理所当然也没能运行他的DMP!
watershade 回答时间:2015-8-22 17:37:20
Inc_brza 发表于 2015-8-22 15:55' e. S7 Z1 Z% @% X' |& x1 z3 i% O' }& B
大师你好,请问有没有用SPI方式读过9250呢,IIC不是很难,关键是SPI,网上基本80%以上的人都没法用SPI读取 ...

( Q( r6 E* v. X8 z, o如果是spi方式推荐你看看这里:http://hom.hackpad.com/SmartIMU-E9zzbSI7QyK。文件可以在这里下载:http://github.com/Hom-Wang/SmartIMU 我暂时没有试过它的算法。但是我看过他的调试记录,个人觉得,这朋友还是挺严谨的,应该可以读取。我可能忙完算法和测试之后,试试添加SPI。
6 C9 `- x0 e1 k7 z1 t但问题是I2C融合之后的更新的速率能够达到200hz这还不够吗?当然有时候有利用使用SPI的。
& R* B, s2 A7 F5 l个人之见:SPI读取并不难,对于姿态传感器最难的是算法.5 O- x+ I; r) i; ?5 }) a  V
; Y% e7 n$ v7 M' k0 J5 z6 E- b+ M

, k3 P+ h1 j* T2 W8 F/ m6 R! I还有朋友,我才不是什么大师,我其实也只能算是beginner。我的帖子有问题你直接指正,谢谢、
Inc_brza 回答时间:2015-8-22 18:58:41
watershade 发表于 2015-8-22 17:375 f4 y' s5 X/ y4 q' m6 u
如果是spi方式推荐你看看这里:http://hom.hackpad.com/SmartIMU-E9zzbSI7QyK。文件可以在这里下载:http ...
/ }6 t& T# p7 b$ D
你好,这个我已经参考过了,同样没法读取磁力计的数据!( \' b+ D2 U$ n% W$ V- P
虽然I2C可以完成,但是如果有SPI的方式,我觉得是SPI更好,毕竟读取
- o# g5 |; @$ ~1 m' _: T6 c% K2 H速度比I2C要快。9 Z3 M" x8 i6 X! k1 n% u4 a& K
200hz是可以,不过如果通过SPI来加快单次的通信速率就更好了!
motianlun1111 回答时间:2015-8-22 22:19:33
不知道这里有没有仔细看过代码的人, 捕获.JPG ,这里写的要是把偏移值写到off set寄存器里面去的话,要转化成+-1000dps的格式,
" z  u5 d: s/ O# |5 }5 ]& b, g) f" W; o( {

- ?4 ^8 D$ y' F但是在代码里面看,也确实是转成了这种模式,7 E' _: A. Q4 L8 [
捕获2.JPG 4 j5 N3 |0 c, a: V, k! |
这个是写入到off set 寄存器里面去,但是如果是把这个偏移值带入到dmp中去,也就是  n! a2 f8 u8 T  E) x! M
dmp_set_gyro_bias(gyro_bias);dmp_set_accel_bias(accel_bias); 的时候,我看到的一个' v. q. b# n. s6 Z
别的代码是
% j: ~  K7 ~4 g1 Qint result;
7 R3 A1 g' o! b; ~- Z9 Y: }8 t- u        long gyro_bias[3], accel_bias[3]; , q  C: v- f- q7 D& k
        result = mpu_run_self_test(gyro_bias, accel_bias); & U, n" O/ O: ?7 G/ q+ M. a
        if (result == 0x07)
1 G+ v* M4 O3 K6 T8 i        {2 y8 L% T9 n* Y# v$ T
                /* Test passed. We can trust the gyro data here, so let's push it down to the DMP.*/           Y4 Q; \/ j, o
                float gyro_sens;5 j* f( y- b' J! C' f: B2 F0 v6 L; t
                unsigned short accel_sens;
* h; C6 i1 q' f( d                mpu_get_gyro_sens(&gyro_sens);   
* P! k+ ?5 v1 p9 e  S# C# Z0 @                                                   + g; ^7 ?+ P( h- C$ A( Q
                gyro_bias[0] = (long)(gyro_bias[0] * gyro_sens);( o$ ?% ]* v# _
                gyro_bias[1] = (long)(gyro_bias[1] * gyro_sens);
; n; q0 N* _+ ]/ w: N9 P5 h: n                gyro_bias[2] = (long)(gyro_bias[2] * gyro_sens);" B5 b9 h. A' h& A- c
                dmp_set_gyro_bias(gyro_bias);   0 Y$ k7 ~  O  s
                mpu_get_accel_sens(&accel_sens);  @" T! o  N/ c+ I# n, O- Y
                accel_bias[0] *= accel_sens;
7 |% P" L1 V. {  v1 b$ v3 K* r                accel_bias[1] *= accel_sens;
& h: J8 j" A0 l                accel_bias[2] *= accel_sens;$ K8 \2 r3 |3 l8 \: b
                dmp_set_accel_bias(accel_bias);
* a) C2 t3 l1 z/ n. ^/ S( [2 w3 I& A3 ~* i" i! ^. I' R# w
                return 0;
- x8 E: F9 \1 F% v        }
, z6 V4 s% n( C% R+ A1 h8 p7 H        else) }4 R5 d' U3 z! l6 K7 B
                return 1;7 j4 r7 |2 i3 Y  ]- S
! H# c# x* h& [5 ?/ z& k3 q' N
我比较愚笨,我反复比较了这个函数,在mpu_run_self_test(gyro_bias, accel_bias); 中获得的gyro_bias, accel_bias是q16格式的,然后那个& y4 ], q: q. A' P4 G% W
dmp_set_gyro_bias(gyro_bias);dmp_set_accel_bias(accel_bias); 要求输入的参数也是q16,而且我实在想不明白那里获得偏移的时候,获得的q16格式的数,乘以一个范围值做什么用,费解这里,,还是说人家这里就是错的,,上面的代码是原子的开发板里面的一段截取的代码,我没用,给注释掉了,换成把偏移存进去off set寄存器里面了,
1 A( z. B1 g) w; b
motianlun1111 回答时间:2015-8-22 23:22:40
刚刚试着如果用上面的代码,不乘以那个范围值,会发现z轴飘的很厉害,漂移了24度之多才会稳定住,这个又是为啥,但是上面的代码实在感觉不到理由来着,,,/ f9 j2 g$ p, V( U% O0 ]  K5 \
watershade 回答时间:2015-8-23 01:41:07
Inc_brza 发表于 2015-8-22 18:58
* d- A5 B: |# E2 Y7 f9 Q& p2 C4 U你好,这个我已经参考过了,同样没法读取磁力计的数据!
8 f) M- R6 ^8 s1 I6 x) k虽然I2C可以完成,但是如果有SPI的方式,我觉得 ...

, M* N  ?8 I1 F/ T0 h% c) K我没有测试过hom的方案,但是我记忆中他的硬件连接的的确是SPI。我又看了一般片子的PS,MPU9250内部集成的是AK8963。AK8963是I2C的,但是不知道Invensense在封装的时候是怎么处理的。" ~8 C; l  f, y  M4 ^$ Q
但是请看下面的图,它让我似乎明白了些东西。但还需要实验验证。 MPU9250结构.PNG ) V2 f7 K+ Z9 {, f8 d. c

) R* q: J! I% J+ [$ b5 f; o4 X( V, ^注意看图中ACC和Gyro与compass的区别。Got it?
/ w! f1 v& O# M- _# I, y实际上访问Acc和Gyro读取的直接是内部寄存器,用SPI和I2C都行。但是Compass却不是。它使用的I2C的辅助接口来连接的。在SPI当作通讯接口时,MPU内部实际上是通过I2C来和Compass通讯的。但是是否是自动的呐?读取的数据写到了哪里呐?必须再深入了解。今天有些累了,先这样。回头在看文档做实验。
/ j2 ^( O3 y9 p: Y4 J$ k8 O
ppprrr 回答时间:2015-8-24 11:39:04
楼主您好,我想问一下 使用matster i2c模式读取地磁数据 你有尝试过吗
ppprrr 回答时间:2015-8-24 12:10:40
Inc_brza 发表于 2015-8-22 18:58. G3 \# l  T% F- x& ^
你好,这个我已经参考过了,同样没法读取磁力计的数据!8 f8 v' s# e+ b( ?
虽然I2C可以完成,但是如果有SPI的方式,我觉得 ...
2 T( r3 `! P3 u8 v
我也看过,官方库i2c是读取了地磁数据的,地磁数据是通过bypass模式,把ak8xxx磁力计直接当作另一个器件,通过它的地址来读取的,而使用spi模式 只能通过内部i2c matster模块来读取,我试过无数方法,从来没有读过正常值,唯一有一次只能读到了ID号,其他数据都不行
watershade 回答时间:2015-8-24 13:49:22
priestyoyo 发表于 2015-8-24 12:10
0 p' P" I. R9 Z1 @3 l我也看过,官方库i2c是读取了地磁数据的,地磁数据是通过bypass模式,把ak8xxx磁力计直接当作另一个器件 ...

% A* F# h( f3 ]1 j% m那我回头试试,按道理SPI比I2C更容易读取。先读一下生数据试试。hom wang的就是通过SPI读取的。
ppprrr 回答时间:2015-8-24 15:13:23
watershade 发表于 2015-8-24 13:49
) |/ {9 T5 ]8 `# e  ?% R2 i2 f' a那我回头试试,按道理SPI比I2C更容易读取。先读一下生数据试试。hom wang的就是通过SPI读取的。 ...
  T4 V+ G3 v# F$ S
我参考过他的做过一版PCB,因为这个问题没解决,我换用了MPU6500+HMC5983,后来陀螺仪和加表我改用了MAX21105,正在打样

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版