OpenEdv-开源电子网

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

小白请教下给位大神关于mpu6050的问题

[复制链接]

8

主题

32

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-12-29
在线时间
19 小时
发表于 2017-2-11 20:06:08 | 显示全部楼层 |阅读模式
1金钱
今天小白将原子哥的mpu6,mpu6050的zet6代码移植到了c8t6上,但是遇到个非常奇怪的问题,程序会一直卡在mpu-init()这个函数里面,如果我把这个函数注释掉,mpu6050也能返回欧拉角,但稳定的特变慢,这是因为什么原因呢?还有个问题就是初始化代码中关于PA15的部分,我没有太懂关于PA15的初始化是个什么作用呢?PA15口不使用的话貌似也没有什么关系。

下面是mpu—init()的代码,求给位大佬帮忙解答
u8 MPU_Init(void)
{
        u8 res;
  GPIO_InitTypeDef  GPIO_InitStructure;
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//ê1ÄüAFIOê±Öó
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//Ïèê1ÄüíaéèIO PORTAê±Öó
        
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;         // ¶Ë¿úÅäÖÃ
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //íÆíìêä3ö
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO¿úËù¶èÎa50MHz
//  GPIO_Init(GPIOA, &GPIO_InitStructure);                                         //¸ù¾Yé趨2Îêy3õê¼»ˉGPIOA

//        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//½ûÖ1JTAG,′ó¶&#248A15¿éòÔ×öÆÕí¨IOê1óÃ,·ñÔòPA152»Äü×öÆÕí¨IO!!!
//        
//        MPU_AD0_CTRL=0;                        //¿ØÖÆMPU6050μÄAD0½ÅÎaμíμçÆ½,′ó»úμØÖ·Îa:0X68
        
        MPU_IIC_Init();//3õê¼»ˉIIC×üÏß
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);        //¸′λMPU6050
  delay_ms(100);
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);        //»½DÑMPU6050
        MPU_Set_Gyro_Fsr(3);                                        //íóÂYòÇ′«¸DÆ÷,¡à2000dps
        MPU_Set_Accel_Fsr(0);                                        //¼óËù¶è′«¸DÆ÷,¡à2g
        MPU_Set_Rate(50);                                                //éèÖÃ2éÑùÂê50Hz
        MPU_Write_Byte(MPU_INT_EN_REG,0X00);        //1رÕËùóDÖD¶Ï
        MPU_Write_Byte(MPU_USER_CTRL_REG,0X00);        //I2CÖ÷Ä£ê½1رÕ
        MPU_Write_Byte(MPU_FIFO_EN_REG,0X00);        //1رÕFIFO
        MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80);        //INTòy½ÅμíμçÆ½óDD§
        res=MPU_Read_Byte(MPU_DEVICE_ID_REG);
        if(res==MPU_ADDR)//Æ÷¼tIDÕyè·
        {
                MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01);        //éèÖÃCLKSEL,PLL XÖáÎa2ο¼
                MPU_Write_Byte(MPU_PWR_MGMT2_REG,0X00);        //¼óËù¶èóëíóÂYòǶ¼1¤×÷
                MPU_Set_Rate(50);                                                //éèÖÃ2éÑùÂêÎa50Hz
         }else return 1;
        return 0;
}

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165558
金钱
165558
注册时间
2010-12-1
在线时间
2118 小时
发表于 2017-2-12 18:33:53 | 显示全部楼层
PA15控制MPU6050的地址的。你注释掉还能返回欧拉角???
回复

使用道具 举报

3

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2016-11-13
在线时间
21 小时
发表于 2017-2-12 22:05:25 | 显示全部楼层
这个有点奇怪了。。。你先看下数据对不对吧,都没初始化怎么返回啊,还有就是具体要看卡在哪啊
回复

使用道具 举报

8

主题

32

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-12-29
在线时间
19 小时
 楼主| 发表于 2017-2-21 18:16:46 | 显示全部楼层
正点原子 发表于 2017-2-12 18:33
PA15控制MPU6050的地址的。你注释掉还能返回欧拉角???

我已经改过地址了
回复

使用道具 举报

8

主题

32

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-12-29
在线时间
19 小时
 楼主| 发表于 2017-2-21 18:17:13 | 显示全部楼层
忆声 发表于 2017-2-12 22:05
这个有点奇怪了。。。你先看下数据对不对吧,都没初始化怎么返回啊,还有就是具体要看卡在哪啊

卡在iic的延时函数那里的
回复

使用道具 举报

8

主题

32

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2016-12-29
在线时间
19 小时
 楼主| 发表于 2017-2-21 18:18:37 | 显示全部楼层
本帖最后由 素月墨羽 于 2017-2-21 18:29 编辑
正点原子 发表于 2017-2-12 18:33
PA15控制MPU6050的地址的。你注释掉还能返回欧拉角???

但是原子哥,我没改地址之前还能返回数据,地址改之后反倒不能了,然后我就干脆把AD口接地,地址就和原来一样0x68,但是就卡在icc延时函数里面,这是什么原因啊原子哥
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-24 03:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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