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

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

[复制链接]
watershade 发布时间:2015-8-8 14:46
阅读主题, 点击返回1楼
1 收藏 12 评论118 发布时间:2015-8-8 14:46
118个回答
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
大师你好,请问有没有用SPI方式读过9250呢,IIC不是很难,关键是SPI,网上基本80%以上的人都没法用SPI读取 ...

如果是spi方式推荐你看看这里:http://hom.hackpad.com/SmartIMU-E9zzbSI7QyK。文件可以在这里下载:http://github.com/Hom-Wang/SmartIMU 我暂时没有试过它的算法。但是我看过他的调试记录,个人觉得,这朋友还是挺严谨的,应该可以读取。我可能忙完算法和测试之后,试试添加SPI。
但问题是I2C融合之后的更新的速率能够达到200hz这还不够吗?当然有时候有利用使用SPI的。
个人之见:SPI读取并不难,对于姿态传感器最难的是算法.


还有朋友,我才不是什么大师,我其实也只能算是beginner。我的帖子有问题你直接指正,谢谢、
Inc_brza 回答时间:2015-8-22 18:58:41
watershade 发表于 2015-8-22 17:37
如果是spi方式推荐你看看这里:http://hom.hackpad.com/SmartIMU-E9zzbSI7QyK。文件可以在这里下载:http ...

你好,这个我已经参考过了,同样没法读取磁力计的数据!
虽然I2C可以完成,但是如果有SPI的方式,我觉得是SPI更好,毕竟读取
速度比I2C要快。
200hz是可以,不过如果通过SPI来加快单次的通信速率就更好了!
motianlun1111 回答时间:2015-8-22 22:19:33
不知道这里有没有仔细看过代码的人, 捕获.JPG ,这里写的要是把偏移值写到off set寄存器里面去的话,要转化成+-1000dps的格式,


但是在代码里面看,也确实是转成了这种模式,
捕获2.JPG
这个是写入到off set 寄存器里面去,但是如果是把这个偏移值带入到dmp中去,也就是
dmp_set_gyro_bias(gyro_bias);dmp_set_accel_bias(accel_bias); 的时候,我看到的一个
别的代码是
int result;
        long gyro_bias[3], accel_bias[3];
        result = mpu_run_self_test(gyro_bias, accel_bias);
        if (result == 0x07)
        {
                /* Test passed. We can trust the gyro data here, so let's push it down to the DMP.*/         
                float gyro_sens;
                unsigned short accel_sens;
                mpu_get_gyro_sens(&gyro_sens);   
                                                   
                gyro_bias[0] = (long)(gyro_bias[0] * gyro_sens);
                gyro_bias[1] = (long)(gyro_bias[1] * gyro_sens);
                gyro_bias[2] = (long)(gyro_bias[2] * gyro_sens);
                dmp_set_gyro_bias(gyro_bias);   
                mpu_get_accel_sens(&accel_sens);
                accel_bias[0] *= accel_sens;
                accel_bias[1] *= accel_sens;
                accel_bias[2] *= accel_sens;
                dmp_set_accel_bias(accel_bias);

                return 0;
        }
        else
                return 1;

我比较愚笨,我反复比较了这个函数,在mpu_run_self_test(gyro_bias, accel_bias); 中获得的gyro_bias, accel_bias是q16格式的,然后那个
dmp_set_gyro_bias(gyro_bias);dmp_set_accel_bias(accel_bias); 要求输入的参数也是q16,而且我实在想不明白那里获得偏移的时候,获得的q16格式的数,乘以一个范围值做什么用,费解这里,,还是说人家这里就是错的,,上面的代码是原子的开发板里面的一段截取的代码,我没用,给注释掉了,换成把偏移存进去off set寄存器里面了,
motianlun1111 回答时间:2015-8-22 23:22:40
刚刚试着如果用上面的代码,不乘以那个范围值,会发现z轴飘的很厉害,漂移了24度之多才会稳定住,这个又是为啥,但是上面的代码实在感觉不到理由来着,,,
watershade 回答时间:2015-8-23 01:41:07
Inc_brza 发表于 2015-8-22 18:58
你好,这个我已经参考过了,同样没法读取磁力计的数据!
虽然I2C可以完成,但是如果有SPI的方式,我觉得 ...

我没有测试过hom的方案,但是我记忆中他的硬件连接的的确是SPI。我又看了一般片子的PS,MPU9250内部集成的是AK8963。AK8963是I2C的,但是不知道Invensense在封装的时候是怎么处理的。
但是请看下面的图,它让我似乎明白了些东西。但还需要实验验证。 MPU9250结构.PNG

注意看图中ACC和Gyro与compass的区别。Got it?
实际上访问Acc和Gyro读取的直接是内部寄存器,用SPI和I2C都行。但是Compass却不是。它使用的I2C的辅助接口来连接的。在SPI当作通讯接口时,MPU内部实际上是通过I2C来和Compass通讯的。但是是否是自动的呐?读取的数据写到了哪里呐?必须再深入了解。今天有些累了,先这样。回头在看文档做实验。
priestyoyo 回答时间:2015-8-24 11:39:04
楼主您好,我想问一下 使用matster i2c模式读取地磁数据 你有尝试过吗
priestyoyo 回答时间:2015-8-24 12:10:40
Inc_brza 发表于 2015-8-22 18:58
你好,这个我已经参考过了,同样没法读取磁力计的数据!
虽然I2C可以完成,但是如果有SPI的方式,我觉得 ...

我也看过,官方库i2c是读取了地磁数据的,地磁数据是通过bypass模式,把ak8xxx磁力计直接当作另一个器件,通过它的地址来读取的,而使用spi模式 只能通过内部i2c matster模块来读取,我试过无数方法,从来没有读过正常值,唯一有一次只能读到了ID号,其他数据都不行
watershade 回答时间:2015-8-24 13:49:22
priestyoyo 发表于 2015-8-24 12:10
我也看过,官方库i2c是读取了地磁数据的,地磁数据是通过bypass模式,把ak8xxx磁力计直接当作另一个器件 ...

那我回头试试,按道理SPI比I2C更容易读取。先读一下生数据试试。hom wang的就是通过SPI读取的。
priestyoyo 回答时间:2015-8-24 15:13:23
watershade 发表于 2015-8-24 13:49
那我回头试试,按道理SPI比I2C更容易读取。先读一下生数据试试。hom wang的就是通过SPI读取的。 ...

我参考过他的做过一版PCB,因为这个问题没解决,我换用了MPU6500+HMC5983,后来陀螺仪和加表我改用了MAX21105,正在打样

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

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