OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8742|回复: 12

mpu6050 dmp初始化问题

[复制链接]

5

主题

28

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2019-5-4
在线时间
15 小时
发表于 2019-5-7 13:33:10 | 显示全部楼层 |阅读模式
1金钱
同样一块mpu6050,移植的是同样的mpu--dmp的库,在精英板子上执行dmp-init这个函数就没有问题,可以正常初始化,我将代码移植到stm32f103c8上面,在不使用dmp之前可以正常初始化mpu6050,正常数到三个轴上面的数据,但是执行dmp-init这个函数的时候,程序就会卡死在这个函数上面而不执行接下来的函数,现在想不明白是什么原因导致的,有没有做过移植的同学可以给出点意见呢???

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2019-5-4
在线时间
15 小时
 楼主| 发表于 2019-5-7 13:34:30 | 显示全部楼层
是因为stm32f103c8运算速度不够导致初始化dmp要很长很长时间吗?按理说dmp的库应该直接移植过来就是好用的啊,因为在dmp的库文件里面并没有修改一些宏定义啊
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10569
金钱
10569
注册时间
2017-2-18
在线时间
1913 小时
发表于 2019-5-7 20:11:57 | 显示全部楼层
没初始化这么慢的  ,原子这边MPU6050例程同样主频的RCT6 就没这么慢
回复

使用道具 举报

5

主题

28

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2019-5-4
在线时间
15 小时
 楼主| 发表于 2019-5-8 21:52:38 | 显示全部楼层
peng1554 发表于 2019-5-7 20:11
没初始化这么慢的  ,原子这边MPU6050例程同样主频的RCT6 就没这么慢

我最后成功实现了,把dmp init这个函数里面每次的dmp自检注释掉就好了 之前每次运行都会卡死在dmp自检哪里 就是不知道什么原因
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-5-8 21:57:52 | 显示全部楼层
初始化时候 mpu_run_self_test 有方向 两种方案要么初始化成功一次把数据存起来,那样肯定一次过

要么就按规定方向放置传感器,进行初始化  DMP默认程序写的是accel[2] 所以只能通过将芯片水平放置让z轴和G重合才能让mpu_run_self_test函数自检成功

要么修改accel[0]  0是x轴,1是y轴,2是z轴

你没改代码的话,上电前水平放置让z轴和G重合试试能初始化过不
回复

使用道具 举报

3

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-5-8
在线时间
27 小时
发表于 2019-5-15 20:28:56 | 显示全部楼层
nashui_sx 发表于 2019-5-8 21:57
初始化时候 mpu_run_self_test 有方向 两种方案要么初始化成功一次把数据存起来,那样肯定一次过

要么就 ...

我这边是mpu_run_self_test自检函数里
    accel_result = accel_self_test(accel, accel_st);
    gyro_result = gyro_self_test(gyro, gyro_st);
这两个返回值都是7,所以后面自检不成功,芯片平放也不行,实在是没辙了,兄弟有啥好建议没?
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-5-15 21:54:16 | 显示全部楼层
hope0116 发表于 2019-5-15 20:28
我这边是mpu_run_self_test自检函数里
    accel_result = accel_self_test(accel, accel_st);
    gyr ...

直接用我发过的吧
回复

使用道具 举报

3

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-5-8
在线时间
27 小时
发表于 2019-5-16 16:38:20 | 显示全部楼层
nashui_sx 发表于 2019-5-15 21:54
直接用我发过的吧

是系统延时的问题 现在初始化没问题了,延时函数有问题

STM32F1  外部晶振8M,倍频后系统时钟16M,延时初始化问题。参考原子哥的delay_init()函数

{

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);        //因为HCLK就是16M,所以没必要再8分频给systick吧?
        fac_us=SystemCoreClock/8000000;                                //为系统时钟的        这句8000000是怎么来的?

}

延时函数参数怎么设置?
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-5-16 18:02:13 | 显示全部楼层
hope0116 发表于 2019-5-16 16:38
是系统延时的问题 现在初始化没问题了,延时函数有问题

STM32F1  外部晶振8M,倍频后系统时钟16M,延 ...

HCLK 16M的话 计数一次1/16M秒=1/16us  fac_us=16就好了
回复

使用道具 举报

3

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-5-8
在线时间
27 小时
发表于 2019-5-16 20:07:31 | 显示全部楼层
nashui_sx 发表于 2019-5-16 18:02
HCLK 16M的话 计数一次1/16M秒=1/16us  fac_us=16就好了

        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);       
        fac_us=16;
MPU初始化没问题,运行到whle(1)里面,只有几秒钟能读到MPU6050的数据,后面就读不到了,数据不刷新了。
回复

使用道具 举报

3

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-5-8
在线时间
27 小时
发表于 2019-5-16 20:19:30 | 显示全部楼层
hope0116 发表于 2019-5-16 20:07
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);       
        fac_us=16;
MPU初始化没问题,运行到whle(1) ...

这是系统时钟的截图
1836CF43-C527-44e4-BC89-F0C1EC1A9593.png
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
发表于 2019-11-13 17:49:01 | 显示全部楼层
我也碰到这个问题了,如果把自检的函数屏蔽掉,可以把欧拉角算出来但是数据会波动很大。我用的兆易的片子,里面定时和st的不太一样。下午把定时函数改了发现自检也可以通过了。
回复

使用道具 举报

5

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
218
金钱
218
注册时间
2020-4-18
在线时间
59 小时
发表于 2021-5-17 19:09:41 | 显示全部楼层
czdspeed 发表于 2019-11-13 17:49
我也碰到这个问题了,如果把自检的函数屏蔽掉,可以把欧拉角算出来但是数据会波动很大。我用的兆易的片子, ...

您好,我也遇到6050初始化时间过长的问题  换成例程初始化很快  用我自家写的就很慢  请问您解决了嘛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 18:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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