搜索
bottom↓
回复: 51

战舰stm32板子mpu6050官方DMP移植成功,源码分享...

  [复制链接]

出0入0汤圆

发表于 2015-1-25 22:41:17 | 显示全部楼层 |阅读模式
根据坛子里其他大侠的讲解和源代码,自己在战舰STM32开发板上移植成功,可以在匿名上位机中看到姿态变化,另外这个代码中USRAT部分还有完整的DMA收发功能,可以接收和发送不定长度的字符串,希望可以帮到有需要的人

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-1-25 23:46:17 | 显示全部楼层
不错 ,有时间在自己的板子上搞起来 !

出0入0汤圆

发表于 2015-1-26 09:00:53 | 显示全部楼层
顶起来。

出0入0汤圆

发表于 2015-1-26 09:09:01 | 显示全部楼层
        MARK!

出0入0汤圆

发表于 2015-1-26 09:29:05 | 显示全部楼层
谢谢分享,请问lz这是6.1的DMP库吗,想请教一下初始化的流程官方哪里有介绍还是看例程和API?

出0入0汤圆

发表于 2015-1-26 09:56:38 | 显示全部楼层
这个很酷啊

出0入0汤圆

发表于 2015-1-26 11:20:19 | 显示全部楼层
已测试。可用。
能给个讲解的链接吗?

出0入0汤圆

 楼主| 发表于 2015-1-26 19:06:47 | 显示全部楼层
xiaojianren210 发表于 2015-1-26 09:29
谢谢分享,请问lz这是6.1的DMP库吗,想请教一下初始化的流程官方哪里有介绍还是看例程和API? ...

5.1的库,就是看库里边的函数,大概看看明白是什么意思就行了,初始化就是用inv_mpu.c里边的那个初始化,就是对照着代码一步一步查看阅读,MDK编译器的GO TO功能挺好用
int mpu_init(void)
{
    unsigned char data[6], rev;

    /* Reset device. */
    data[0] = 0x80;//BIT_RESET;     // 这里写0x80就是复位MPU,可以直接查MPU_PWR_MGMT1_REG寄存器的设置,电源管理1
    if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 1, &(data[0])))
        return -1;
    delay_ms(100);

    /* Wake up chip. */
    data[0] = 0x00; // 这里写0x00就是唤醒MPU,可以直接查MPU_PWR_MGMT1_REG寄存器的设置,电源管理1
    if (i2c_write(st.hw->addr, st.reg->pwr_mgmt_1, 1, &(data[0])))
        return -1;

#if defined MPU6050
    /* Check product revision. */
    if (i2c_read(st.hw->addr, st.reg->accel_offs, 6, data))
        return -1;
    rev = ((data[5] & 0x01) << 2) | ((data[3] & 0x01) << 1) |
        (data[1] & 0x01);

    if (rev) {
        /* Congrats, these parts are better. */
        if (rev == 1)
            st.chip_cfg.accel_half = 1;
        else if (rev == 2)
            st.chip_cfg.accel_half = 0;
        else {
            log_e("Unsupported software product rev %d.\n");
            return -1;
        }
    } else {
        if (i2c_read(st.hw->addr, st.reg->prod_id, 1, &(data[0])))
            return -1;
        rev = data[0] & 0x0F;
        if (!rev) {
            log_e("Product ID read as 0 indicates device is either "
                "incompatible or an MPU3050.\n");
            return -1;
        } else if (rev == 4) {
            log_i("Half sensitivity part found.\n");
            st.chip_cfg.accel_half = 1;
        } else
            st.chip_cfg.accel_half = 0;
    }
#elif defined MPU6500
#define MPU6500_MEM_REV_ADDR    (0x17)
    if (mpu_read_mem(MPU6500_MEM_REV_ADDR, 1, &rev))
        return -1;
    if (rev == 0x1)
        st.chip_cfg.accel_half = 0;
    else {
        log_e("Unsupported software product rev %d.\n", rev);
        return -1;
    }

    /* MPU6500 shares 4kB of memory between the DMP and the FIFO. Since the
     * first 3kB are needed by the DMP, we'll use the last 1kB for the FIFO.
     */
    data[0] = BIT_FIFO_SIZE_1024 | 0x8;//设置FIFO
    if (i2c_write(st.hw->addr, st.reg->accel_cfg2, 1, data))
        return -1;
#endif

    /* Set to invalid values to ensure no I2C writes are skipped. */
    st.chip_cfg.sensors = 0xFF;
    st.chip_cfg.gyro_fsr = 0xFF;
    st.chip_cfg.accel_fsr = 0xFF;
    st.chip_cfg.lpf = 0xFF;
    st.chip_cfg.sample_rate = 0xFFFF;
    st.chip_cfg.fifo_enable = 0xFF;
    st.chip_cfg.bypass_mode = 0xFF;
#ifdef AK89xx_SECONDARY
    st.chip_cfg.compass_sample_rate = 0xFFFF;
#endif
    /* mpu_set_sensors always preserves this setting. */
    st.chip_cfg.clk_src = INV_CLK_PLL;
    /* Handled in next call to mpu_set_bypass. */
    st.chip_cfg.active_low_int = 1;
    st.chip_cfg.latched_int = 0;
    st.chip_cfg.int_motion_only = 0;
    st.chip_cfg.lp_accel_mode = 0;
    memset(&st.chip_cfg.cache, 0, sizeof(st.chip_cfg.cache));
    st.chip_cfg.dmp_on = 0;
    st.chip_cfg.dmp_loaded = 0;
    st.chip_cfg.dmp_sample_rate = 0;

    if (mpu_set_gyro_fsr(2000))//设置陀螺仪量程2000dps
        return -1;
    if (mpu_set_accel_fsr(2))//设置加速度量程2g
        return -1;
    if (mpu_set_lpf(42))//设置滤波器
        return -1;
    if (mpu_set_sample_rate(50))//设置采样频率
        return -1;
    if (mpu_configure_fifo(0))//设置FIFO
        return -1;

    /*if (int_param)
        reg_int_cb(int_param);*/

#ifdef AK89xx_SECONDARY
    setup_compass();
    if (mpu_set_compass_sample_rate(10))
        return -1;
#else
    /* Already disabled by setup_compass. */
    if (mpu_set_bypass(0))
        return -1;
#endif

    mpu_set_sensors(0);
    return 0;
}

出0入0汤圆

 楼主| 发表于 2015-1-26 19:07:56 | 显示全部楼层
Shampoo 发表于 2015-1-26 11:20
已测试。可用。
能给个讲解的链接吗?

哪有什么讲解啊,都是自己慢慢看,论坛上边有很多关于MPU的帖子,综合起来看

出0入0汤圆

 楼主| 发表于 2015-1-26 19:10:36 | 显示全部楼层
官方的DMP库已经上传了,坛子其他帖子也有,这里上传方便大家下载,免得找

出0入0汤圆

发表于 2015-1-27 08:41:07 | 显示全部楼层
mandzy 发表于 2015-1-26 19:06
5.1的库,就是看库里边的函数,大概看看明白是什么意思就行了,初始化就是用inv_mpu.c里边的那个初始化, ...

谢谢 我再研究一下

出0入0汤圆

发表于 2015-1-28 12:45:22 | 显示全部楼层
相当强大的帖子

出0入0汤圆

发表于 2015-2-4 21:50:44 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2015-3-27 16:30:38 | 显示全部楼层
楼主可以加QQ吗,就一个问题,947894709

出0入0汤圆

发表于 2015-3-28 15:05:23 | 显示全部楼层
感谢分享,请问 lz  对xyz轴 inv_orientation_matrix_to_scalar这个函数怎么理解的,我一直想不通

出0入0汤圆

发表于 2015-3-28 15:19:46 | 显示全部楼层
感谢楼主分享,最近也在弄这个

出0入0汤圆

发表于 2015-3-28 15:53:53 | 显示全部楼层
谢谢分享,学习一下。

出0入0汤圆

发表于 2015-4-24 16:11:38 | 显示全部楼层
谢楼主! 最近打算玩玩这个~

出0入0汤圆

发表于 2015-4-28 16:17:11 | 显示全部楼层
另外这个代码中USRAT部分还有完整的DMA收发功能,可以接收和发送不定长度的字符串,这玩意有么?楼主只是配置了DMA,却没有使用吧   

出0入0汤圆

 楼主| 发表于 2015-4-28 22:42:04 | 显示全部楼层
睿翼1992 发表于 2015-4-28 16:17
另外这个代码中USRAT部分还有完整的DMA收发功能,可以接收和发送不定长度的字符串,这玩意有么?楼主只是配 ...

对,只是配置好了,这个代码里边没有用到

出0入0汤圆

发表于 2015-4-28 22:51:07 | 显示全部楼层
谢谢分享。。。。

出0入0汤圆

发表于 2015-4-29 08:48:18 | 显示全部楼层
mark  大力支持楼主继续更好的作品

出0入0汤圆

发表于 2015-4-29 09:11:39 | 显示全部楼层
这个怎么玩啊,有大神能科普一下吗

出0入0汤圆

发表于 2015-5-27 16:19:15 | 显示全部楼层
必须赞一个               

出0入0汤圆

发表于 2015-5-28 11:56:16 | 显示全部楼层
楼主你用的是软写IIC么。。

出0入0汤圆

发表于 2015-6-2 19:39:52 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2015-6-2 20:41:57 | 显示全部楼层
多谢分享~

出0入0汤圆

发表于 2015-6-13 15:32:27 | 显示全部楼层
谢谢分享,楼主厉害                 

出0入0汤圆

发表于 2015-7-7 10:21:41 | 显示全部楼层
移植到了LPC1114上,但发现,刚上点的时候yaw航向角一直在变,灯过一段时间才稳定,不知道楼主有没有这问题

出0入0汤圆

发表于 2015-7-12 21:26:05 | 显示全部楼层
楼主好,我把源码下进去之后,发现上位机能收到数据,但是通过手摇动6050,姿态没有变化呀,这应该是什么原因呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-7-12 22:28:09 | 显示全部楼层
王晨 发表于 2015-7-12 21:26
楼主好,我把源码下进去之后,发现上位机能收到数据,但是通过手摇动6050,姿态没有变化呀,这应该是什么原 ...

先查一下硬件连接,这个程序在战舰板子上运行正常

出0入0汤圆

发表于 2015-7-12 22:57:44 | 显示全部楼层
mandzy 发表于 2015-7-12 22:28
先查一下硬件连接,这个程序在战舰板子上运行正常

MPU6050接到STM32上面去四根线呀,分别是SCL,SDA,VCC,GND,I2C接B10,B11   再不用接别的线到STM32上面去了吧  硬件应该没有连错呀

出0入0汤圆

发表于 2015-7-22 20:17:24 | 显示全部楼层
如果想加入hmc5883l该怎么修改呢

出0入0汤圆

 楼主| 发表于 2015-7-22 22:21:20 | 显示全部楼层
AbnerSmith 发表于 2015-7-22 20:17
如果想加入hmc5883l该怎么修改呢

这个没研究过,不好意思

出0入0汤圆

发表于 2015-7-27 09:27:31 | 显示全部楼层
点赞点赞点赞点赞点赞

出0入0汤圆

发表于 2015-7-27 09:33:37 | 显示全部楼层
pid可以读写吗

出0入0汤圆

发表于 2015-7-27 10:12:35 | 显示全部楼层
王晨 发表于 2015-7-12 21:26
楼主好,我把源码下进去之后,发现上位机能收到数据,但是通过手摇动6050,姿态没有变化呀,这应该是什么原 ...

你解决了没,我也是这样啊

出0入0汤圆

发表于 2015-7-27 12:29:05 | 显示全部楼层
dianzixiehui 发表于 2015-7-27 10:12
你解决了没,我也是这样啊

我之前接的单片机的5V电源输出,5V上没有电压,然后接的3.3V,就可以正常工作了   
有时候上位机有点问题,关了,再开就行

出0入0汤圆

发表于 2015-7-27 19:54:28 | 显示全部楼层
dianzixiehui 发表于 2015-7-27 10:12
你解决了没,我也是这样啊

你解决了没?我的也全是0 。

出0入0汤圆

发表于 2015-8-2 07:59:53 | 显示全部楼层
顶,赞谢谢分享

出0入0汤圆

发表于 2015-8-3 16:29:38 | 显示全部楼层
谢谢!感谢分享!!!

出0入0汤圆

发表于 2015-8-3 19:15:17 | 显示全部楼层
谢谢分享啦

出0入0汤圆

发表于 2015-8-3 19:22:49 | 显示全部楼层
很漂亮 谢谢分享

出0入0汤圆

发表于 2015-8-3 23:15:26 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2016-11-14 15:48:22 | 显示全部楼层
很好的分享,但是上位机好像下载不了了,请帮忙看看

出0入0汤圆

发表于 2016-11-14 15:56:15 | 显示全部楼层
很好的分享,上位机好像下载不了,请帮忙看看。

出0入0汤圆

发表于 2021-10-27 15:08:37 | 显示全部楼层
这个上位机下载不了,只有1k多大小,还能再上传下吗?

出16170入6148汤圆

发表于 2021-12-4 11:30:57 来自手机 | 显示全部楼层
sanwa 发表于 2021-10-27 15:08
这个上位机下载不了,只有1k多大小,还能再上传下吗?

谁有这个文件能帮忙重新上传?

出0入0汤圆

发表于 2021-12-4 13:48:33 | 显示全部楼层
ghdnui 发表于 2015-3-28 15:05
感谢分享,请问 lz  对xyz轴 inv_orientation_matrix_to_scalar这个函数怎么理解的,我一直想不通 ...

这个帖子的资料还有吗?能否方便上传下

出16170入6148汤圆

发表于 2021-12-5 10:54:53 来自手机 | 显示全部楼层
根据坛友提供的资料,上位机可以在下面的帖子可以找到,我已经上传到楼主位。大家可以到上面楼主位下载。



匿名上位机

https://www.amobbs.com/forum.php ... A%E4%BD%8D%E6%9C%BA

https://www.amobbs.com/forum.php ... A%E4%BD%8D%E6%9C%BA
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-18 14:43

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

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