搜索
bottom↓
回复: 13

DMP移植dmp_load_motion_driver_firmware错误大揭密!

[复制链接]

出0入0汤圆

发表于 2014-8-15 22:12:10 | 显示全部楼层 |阅读模式
     相信很多人在移植DMP时都卡在了dmp_load_motion_driver_firmware这个函数的for (ii = 0; ii < length; ii += this_write) {
        this_write = min(LOAD_CHUNK, length - ii);
        if (mpu_write_mem(ii, this_write, (unsigned char*)&firmware[ii]))
            return -1;
        if (mpu_read_mem(ii, this_write, cur))
            return -1;
        if (memcmp(firmware+ii, cur, this_write))
            return -2;
    }这个地方错误了。这个地方真的很坑!!!
论坛里面的大神们都说是IIC读写的问题,很多人都去测试自己的IIC读写,发现根本没有问题,放在这里就是不行,特别是那些不是用软件模拟的IIC更会出现这个问题,这里告诉你们你们IIC没有问题,这个DMP库也没有问题,问题是我们自己没有高清6050刷固件读写寄存器。


很明显上面的函数是先写再读再比较,但注意if (i2c_write(st.hw->addr, st.reg->mem_r_w, length, data))这个 st.reg->mem_r_w地址是固定的不管前面的ii(循环写的次数)是0还是16还是32,每次写的地址都是 st.reg->mem_r_w这个固定的值,就是说MPU6050刷固件的这个地址st.reg->mem_r_w寄存器斌不一定是起始地址,可能在只是个6050的IIC接收器,然后再转给别的地址,因为没有手册,也不确定,实验过每次只读这一个地址寄存器每次的值不一样。

这样问题就出来了,如果你的IIC写函数不能一次连续写16个数,而是采取分了几次写,然后把st.reg->mem_r_w当成起始地址在上面加上你分段的次数形成新的地址再写,这样你写到6050里面肯定不是应该写到的地址。所以你必须把 st.reg->mem_r_w这个地址当成一个6050的IIc接受寄存器来看待才行,但本人也试验过一直只向 st.reg->mem_r_w这个地址分几次写完16个数据,读出来还是不正确,猜测可能是接收器不只这一个地址可能还有 st.reg->mem_r_w+1或者更多,最后必须改成一次向里面写16个数据才行,而且你们看看那那个刷固件的大数组,看出应该是没16个数据一个bank什么的。

以上只是个人经历,没有很确定的结论,但希望能帮到大家!!(本人用的dsp,iic不需要用软件模拟,所以发现上面问题,现在已经完成DMP初始化,可读出正确数据)

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2014-8-15 22:13:01 | 显示全部楼层
如果大家觉得上面的信息有用,请顶贴让更多人看到!

出0入0汤圆

发表于 2014-8-16 00:12:37 | 显示全部楼层
楼主我想问一下怎么看懂DMP里面的函数?

出0入0汤圆

 楼主| 发表于 2014-8-16 09:26:19 | 显示全部楼层
backlaneboy 发表于 2014-8-16 00:12
楼主我想问一下怎么看懂DMP里面的函数?

要是说想完全看懂里面的函数,还没那个能力,只能根据他的英文注释和用法来估计一下。

出0入0汤圆

发表于 2014-8-16 11:16:14 | 显示全部楼层
楼主,能否贴上驱动例程(DSP的驱动),谢谢
最近驱动成功,但是卡在这个函数了

出0入0汤圆

发表于 2014-8-17 10:40:18 | 显示全部楼层

出0入0汤圆

发表于 2014-8-18 09:49:42 | 显示全部楼层
顶一下,同求。。。

出0入0汤圆

发表于 2014-8-18 11:19:03 | 显示全部楼层
楼主怎么用DMP读出三轴加速度?

出0入0汤圆

发表于 2014-8-18 14:42:19 | 显示全部楼层
帮顶一下

出0入0汤圆

发表于 2014-8-18 15:23:38 | 显示全部楼层
DMP库还是很好移的,自己的IIC代码跟DMP的read\write函数对上就好了。
但是四轴用DMP更新太慢,不推荐

出0入0汤圆

发表于 2014-8-19 10:55:23 | 显示全部楼层
楼上不用DMP,用的什么方法?

出5入10汤圆

发表于 2015-7-27 18:37:36 | 显示全部楼层
读了两遍没有看出楼主改的哪里,是我错过啥了吗?

出0入0汤圆

发表于 2016-6-18 15:08:51 | 显示全部楼层
请教一下楼主,如果不能一次写16字节这个问题该怎么解决呢,在线等 很急

出0入0汤圆

发表于 2016-6-22 20:56:53 | 显示全部楼层
我的103程序移植好了再移植到407上就gg了,后来发现无法写,只能读,最近还在调试中
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 17:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表