ICM20948的使用简述

题外话

老早就想写点东西和大家聊一聊,作为一个垃圾程序员,干啥啥不行,但是骚话一定第一名;这个片子很奇妙,因为自始至终都没想过用这个片子,你说9轴传感器辣么多,MPU9250都用烂了,而这个鬼东西,网上文档少的可怜,实际效果不明,看看,放着牛逼的老技师 。。是技术不用,搞着啥也不清楚的对象,就和网恋一样,我承认我有赌的成分,这不,我输了。。。。。。。。。。。。。。。。关键供应商说老板这个和9250妹妹是一样哒

手册

写程序尤其是写专门的驱动,就和耍朋友一样,你总得一步一步的了解,一点点的深入,这个是大家都知道的道理,片子手册很好到手,地址给出:

官方网站哒

有一说一,手册不赖,该有的它都有,我知道大家都百度了,肯定是不想看手册的,很正常,谁不想躺着自己动啊。

那么我来动啦,首先这个是9轴的,3轴惯导(GYRO),3轴加速度(ACCLE),3轴磁罗盘(COMPASS);很可惜,磁罗盘是胶水粘的,只有通过内部的IIC-MASTER来进行通信,其实也不可惜,MPU9250也是这样的,都差不多,只不过一个是AK8816,一个是AK09913。

这里一个题外话,很多看手册的很容易忽略硬件设计的一个坑,注意它的一个VDDIO管脚,这个是提供数字通信的参考电平用的,手册中有详细的说明,那么为啥我会在这里提一句呢,因为这个片子的第一个坑出现了,你以为它啥都和MPU9250以及其他ICM的片子一样就中奖啦!这个片子的VDDIO的范围在1.7-1.9V,是不是很惊喜;不过我这边也测试过直接给3.3V,没烧,问题不大好吧,不过建议还是按照手册的供给;最后有个奇怪的地方,我尝试用直流电源和LDO分压来给1.8V,这个管脚在SPI初始化之后升至2.5V左右,有意思。

接着来,这个片子其他的硬件设计基本可以参照ICM的其他片子MPU9250,但这里就有个分歧了,这个片子是支持IIC和SPI的,设计肯定不能什么成年人我都要,好吧,我也想全都要;跑题了,选这个协议可有门道了,这决定了你内部的磁罗盘咋个搞,有长者说过,我可是身经百战了,这有啥,对啊,不就是那点程序不一样嘛,不就是一个IIC可以通过bypass模式直接对内部的AK09913进行通信,一个SPI只能通过寄存器BANK3中的那几个来进行通信嘛,小事情对吧,但是如果用SPI通信的话,一定得等,这样你通信这部分就很蛋疼了,写成阻塞式的吧总觉得不对,写成异步的吧又多余了,所以还不如一开始就弄成IIC,大家都很持久 慢,毕竟快等于不爽。

使用

天尊曾经说过“实践才是硬道理”,这不最终还是得上板子测试才行。

确实作为替代MPU9250的片子,ACC和GYRO都不错,灵敏度和刷新率都能满足后续的滤波要求,不过可惜我的这个板子没上外部晶振,确实无法做后续的数据融合处理。

个人觉得在pitch和roll部分用ACC解算就可以了,当然我只是用于手持设备,没有大量的高频信号,但是有一点很奇怪,我的YAW使用的是内部磁力计进行解算的,但是我通过椭圆拟合进行校准的时候,野点是真的太多了,不和陀螺仪融合数据是真的没法用,不知道是不是硬件设计上的问题,可惜了这片子,虽然我MPU9250用过EKF融合出的YAW还是存在问题,当然手持设备使用倒是问题不大,但是遇到高频区间的时候,都一样的。总之这个内部磁力计用起来怪怪的,就是有种网聊奔现的感觉,是不是要我走???

个人建议对于这个片子如果使用环境不苛刻的话,校准部分磁罗盘要好好处理一下,姿态解算还是需要融合一下,我后面用互补滤波基本使用应该没什么问题了,就是用循环buffer来补偿相位滞后的问题。

其实这个一年前就写了,生娃搞忘了,里面还有一些坑我的忘了,扎心。。。。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值