OpenEdv-开源电子网

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

大佬们,为什么我用stm32读取多个6050数据会出现数据完全一样的情况啊

[复制链接]

3

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2019-6-29
在线时间
16 小时
发表于 2019-7-26 00:23:26 | 显示全部楼层 |阅读模式
我用模拟I2C来读取多个6050的数据,第一张图片是读取4个6050数据,还是准确的,但是挂载了5个以后数据就完全一样了,我换了好多个GPIO口,都是这种情况,不知道有没有大佬做过类似的东西,能不能给点提示啊?真的感激不尽。下面是我的代码,用的是官方的DMP库
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "mpu9250.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
#include "mpuiic.h"

int main(void)
{
        float pitch,roll,yaw;                 //欧拉角
        short aacx,aacy,aacz;                //加速度计原始数据
        short gyrox,gyroy,gyroz;        //陀螺仪原始数据
       
        IIC_Init();
        delay_init();                 
        uart_init(115200);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);        //使能GPIOF时钟
  GPIO_InitTypeDef GPIO_InitStructure;
       
        //配置GPIOF0
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //PF.0
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIOF.0
       
        //配置GPIOA1
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //PA.1
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.1
       
        //配置GPIOF2
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PF.2
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIOF.2
       
        //配置GPIOF3
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //PF.3
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIOF.3
       
        //配置GPIOF4
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //PF.4
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIOF.4
       
  //配置GPIOF5
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PF.5
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIOF.5
       
  //配置GPIOA5
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PA.5
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.5
       
        //配置GPIOA6
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //PA.6
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.6
       
        //配置GPIOA7
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //PA.7
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.7
       
  //配置GPIOA8
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //PA.8
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //推挽输出
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.8
       
        LED_Init();
       
        //GPIOF0初始化
        GPIO_ResetBits(GPIOF,GPIO_Pin_0);
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_6);
        GPIO_SetBits(GPIOA,GPIO_Pin_7);
        GPIO_SetBits(GPIOA,GPIO_Pin_8);
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
        GPIO_SetBits(GPIOF,GPIO_Pin_2);
        GPIO_SetBits(GPIOF,GPIO_Pin_3);
        GPIO_SetBits(GPIOF,GPIO_Pin_4);
        GPIO_SetBits(GPIOF,GPIO_Pin_5);
        delay_ms(5);
        while(mpu_dmp_init())
        {   
                delay_ms(30);
                LED=1;
        }
       
        //GPIOA1初始化
        GPIO_ResetBits(GPIOA,GPIO_Pin_1);
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_6);
        GPIO_SetBits(GPIOA,GPIO_Pin_7);
        GPIO_SetBits(GPIOA,GPIO_Pin_8);
        GPIO_SetBits(GPIOF,GPIO_Pin_0);
        GPIO_SetBits(GPIOF,GPIO_Pin_2);
        GPIO_SetBits(GPIOF,GPIO_Pin_3);
        GPIO_SetBits(GPIOF,GPIO_Pin_4);
        GPIO_SetBits(GPIOF,GPIO_Pin_5);
        delay_ms(5);
        mpu_dmp_init();
        delay_ms(30);
       
        //GPIOF2初始化
        GPIO_ResetBits(GPIOF,GPIO_Pin_2);
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_6);
        GPIO_SetBits(GPIOA,GPIO_Pin_7);
        GPIO_SetBits(GPIOA,GPIO_Pin_8);
        GPIO_SetBits(GPIOF,GPIO_Pin_0);
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
        GPIO_SetBits(GPIOF,GPIO_Pin_3);
        GPIO_SetBits(GPIOF,GPIO_Pin_4);
        GPIO_SetBits(GPIOF,GPIO_Pin_5);
        delay_ms(5);
  mpu_dmp_init();
        delay_ms(30);
       
        //GPIOF3初始化
        GPIO_ResetBits(GPIOF,GPIO_Pin_3);
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_6);
        GPIO_SetBits(GPIOA,GPIO_Pin_7);
        GPIO_SetBits(GPIOA,GPIO_Pin_8);
        GPIO_SetBits(GPIOF,GPIO_Pin_0);
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
        GPIO_SetBits(GPIOF,GPIO_Pin_2);
        GPIO_SetBits(GPIOF,GPIO_Pin_4);
        GPIO_SetBits(GPIOF,GPIO_Pin_5);
        delay_ms(5);
  mpu_dmp_init();
        delay_ms(30);
       
        //GPIOF4初始化
        GPIO_ResetBits(GPIOF,GPIO_Pin_4);
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_6);
        GPIO_SetBits(GPIOA,GPIO_Pin_7);
        GPIO_SetBits(GPIOA,GPIO_Pin_8);
        GPIO_SetBits(GPIOF,GPIO_Pin_0);
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
        GPIO_SetBits(GPIOF,GPIO_Pin_2);
        GPIO_SetBits(GPIOF,GPIO_Pin_3);
        GPIO_SetBits(GPIOF,GPIO_Pin_5);
        delay_ms(5);
  mpu_dmp_init();
        delay_ms(30);
       
        //GPIOF5初始化
        GPIO_ResetBits(GPIOF,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_6);
        GPIO_SetBits(GPIOA,GPIO_Pin_7);
        GPIO_SetBits(GPIOA,GPIO_Pin_8);
        GPIO_SetBits(GPIOF,GPIO_Pin_0);
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
        GPIO_SetBits(GPIOF,GPIO_Pin_2);
        GPIO_SetBits(GPIOF,GPIO_Pin_3);
        GPIO_SetBits(GPIOF,GPIO_Pin_4);
        delay_ms(5);
  mpu_dmp_init();
        delay_ms(30);
       
        //GPIOA5初始化
        GPIO_ResetBits(GPIOA,GPIO_Pin_5);
        GPIO_SetBits(GPIOF,GPIO_Pin_0);
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
        GPIO_SetBits(GPIOF,GPIO_Pin_2);
        GPIO_SetBits(GPIOF,GPIO_Pin_3);
        GPIO_SetBits(GPIOF,GPIO_Pin_4);
        GPIO_SetBits(GPIOF,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_6);
        GPIO_SetBits(GPIOA,GPIO_Pin_7);
        GPIO_SetBits(GPIOA,GPIO_Pin_8);
        delay_ms(5);
  mpu_dmp_init();
        delay_ms(30);
       
        //GPIOA6初始化
        GPIO_ResetBits(GPIOA,GPIO_Pin_6);
        GPIO_SetBits(GPIOF,GPIO_Pin_0);
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
        GPIO_SetBits(GPIOF,GPIO_Pin_2);
        GPIO_SetBits(GPIOF,GPIO_Pin_3);
        GPIO_SetBits(GPIOF,GPIO_Pin_4);
        GPIO_SetBits(GPIOF,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_7);
        GPIO_SetBits(GPIOA,GPIO_Pin_8);
        delay_ms(5);
  mpu_dmp_init();
        delay_ms(30);
       
        //GPIOA8初始化
        GPIO_ResetBits(GPIOA,GPIO_Pin_8);
        GPIO_SetBits(GPIOF,GPIO_Pin_0);
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
        GPIO_SetBits(GPIOF,GPIO_Pin_2);
        GPIO_SetBits(GPIOF,GPIO_Pin_3);
        GPIO_SetBits(GPIOF,GPIO_Pin_4);
        GPIO_SetBits(GPIOF,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_6);
        GPIO_SetBits(GPIOA,GPIO_Pin_7);
        delay_ms(5);
  mpu_dmp_init();
        delay_ms(30);
       
        //GPIOA7初始化
        GPIO_ResetBits(GPIOA,GPIO_Pin_7);
        GPIO_SetBits(GPIOF,GPIO_Pin_0);
        GPIO_SetBits(GPIOA,GPIO_Pin_1);
        GPIO_SetBits(GPIOF,GPIO_Pin_2);
        GPIO_SetBits(GPIOF,GPIO_Pin_3);
        GPIO_SetBits(GPIOF,GPIO_Pin_4);
        GPIO_SetBits(GPIOF,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_6);
        GPIO_SetBits(GPIOA,GPIO_Pin_5);
        GPIO_SetBits(GPIOA,GPIO_Pin_8);
        delay_ms(5);
        while(mpu_dmp_init())
        {   
                delay_ms(30);
                LED=1;
        }
       
    while(1)
    {
                       
                GPIO_ResetBits(GPIOA,GPIO_Pin_5);
          GPIO_SetBits(GPIOA,GPIO_Pin_6);
                GPIO_SetBits(GPIOA,GPIO_Pin_7);
                GPIO_SetBits(GPIOA,GPIO_Pin_8);
                GPIO_SetBits(GPIOF,GPIO_Pin_0);
                GPIO_SetBits(GPIOA,GPIO_Pin_1);
                GPIO_SetBits(GPIOF,GPIO_Pin_2);
                GPIO_SetBits(GPIOF,GPIO_Pin_3);
                GPIO_SetBits(GPIOF,GPIO_Pin_4);
                GPIO_SetBits(GPIOF,GPIO_Pin_5);
                delay_ms(3);
                mpu_dmp_get_data(&pitch,&roll,&yaw);
                printf("a:%.2f,%.2f,%.2f  ",pitch,roll,yaw);
                mpu_reset_fifo();
               
                GPIO_ResetBits(GPIOA,GPIO_Pin_6);
          GPIO_SetBits(GPIOA,GPIO_Pin_5);
                GPIO_SetBits(GPIOA,GPIO_Pin_7);
          GPIO_SetBits(GPIOA,GPIO_Pin_8);
                GPIO_SetBits(GPIOF,GPIO_Pin_0);
                GPIO_SetBits(GPIOA,GPIO_Pin_1);
                GPIO_SetBits(GPIOF,GPIO_Pin_2);
                GPIO_SetBits(GPIOF,GPIO_Pin_3);
                GPIO_SetBits(GPIOF,GPIO_Pin_4);
                GPIO_SetBits(GPIOF,GPIO_Pin_5);
                delay_ms(3);
                mpu_dmp_get_data(&pitch,&roll,&yaw);
                printf("b:%.2f,%.2f,%.2f  ",pitch,roll,yaw);
                mpu_reset_fifo();
               
                GPIO_ResetBits(GPIOA,GPIO_Pin_7);
          GPIO_SetBits(GPIOA,GPIO_Pin_5);
                GPIO_SetBits(GPIOA,GPIO_Pin_6);
                GPIO_SetBits(GPIOA,GPIO_Pin_8);
                GPIO_SetBits(GPIOF,GPIO_Pin_0);
                GPIO_SetBits(GPIOA,GPIO_Pin_1);
                GPIO_SetBits(GPIOF,GPIO_Pin_2);
                GPIO_SetBits(GPIOF,GPIO_Pin_3);
                GPIO_SetBits(GPIOF,GPIO_Pin_4);
                GPIO_SetBits(GPIOF,GPIO_Pin_5);
                delay_ms(5);
                mpu_dmp_get_data(&pitch,&roll,&yaw);
                printf("c:%.2f,%.2f,%.2f  ",pitch,roll,yaw);
                mpu_reset_fifo();
               
                GPIO_ResetBits(GPIOA,GPIO_Pin_8);
          GPIO_SetBits(GPIOA,GPIO_Pin_5);
                GPIO_SetBits(GPIOA,GPIO_Pin_6);
                GPIO_SetBits(GPIOA,GPIO_Pin_7);
                GPIO_SetBits(GPIOF,GPIO_Pin_0);
                GPIO_SetBits(GPIOA,GPIO_Pin_1);
                GPIO_SetBits(GPIOF,GPIO_Pin_2);
                GPIO_SetBits(GPIOF,GPIO_Pin_3);
                GPIO_SetBits(GPIOF,GPIO_Pin_4);
                GPIO_SetBits(GPIOF,GPIO_Pin_5);
                delay_ms(5);
                mpu_dmp_get_data(&pitch,&roll,&yaw);
                printf("d:%.2f,%.2f,%.2f  ",pitch,roll,yaw);
                mpu_reset_fifo();
               
//                GPIO_ResetBits(GPIOF,GPIO_Pin_0);
//          GPIO_SetBits(GPIOA,GPIO_Pin_5);
//                GPIO_SetBits(GPIOA,GPIO_Pin_6);
//                GPIO_SetBits(GPIOA,GPIO_Pin_7);
//                GPIO_SetBits(GPIOF,GPIO_Pin_1);
//                GPIO_SetBits(GPIOF,GPIO_Pin_2);
//                GPIO_SetBits(GPIOF,GPIO_Pin_3);
//                GPIO_SetBits(GPIOF,GPIO_Pin_4);
//                GPIO_SetBits(GPIOF,GPIO_Pin_5);
//                mpu_dmp_get_data(&pitch,&roll,&yaw);
//                printf("d:%.2f,%.2f,%.2f  ",pitch,roll,yaw);
               
                GPIO_ResetBits(GPIOA,GPIO_Pin_1);
          GPIO_SetBits(GPIOA,GPIO_Pin_5);
                GPIO_SetBits(GPIOA,GPIO_Pin_6);
                GPIO_SetBits(GPIOA,GPIO_Pin_7);
                GPIO_SetBits(GPIOA,GPIO_Pin_8);
                GPIO_SetBits(GPIOF,GPIO_Pin_0);
                GPIO_SetBits(GPIOF,GPIO_Pin_2);
                GPIO_SetBits(GPIOF,GPIO_Pin_3);
                GPIO_SetBits(GPIOF,GPIO_Pin_4);
                GPIO_SetBits(GPIOF,GPIO_Pin_5);
                mpu_dmp_get_data(&pitch,&roll,&yaw);
                printf("e:%.2f,%.2f,%.2f  \r\n",pitch,roll,yaw);
                mpu_reset_fifo();
//               
//                GPIO_ResetBits(GPIOF,GPIO_Pin_2);
//          GPIO_SetBits(GPIOA,GPIO_Pin_5);
//                GPIO_SetBits(GPIOA,GPIO_Pin_6);
//                GPIO_SetBits(GPIOA,GPIO_Pin_7);
//                GPIO_SetBits(GPIOF,GPIO_Pin_0);
//                GPIO_SetBits(GPIOF,GPIO_Pin_1);
//                GPIO_SetBits(GPIOF,GPIO_Pin_3);
//                GPIO_SetBits(GPIOF,GPIO_Pin_4);
//                GPIO_SetBits(GPIOF,GPIO_Pin_5);
//                mpu_dmp_get_data(&pitch,&roll,&yaw);
//                printf("f:%.2f,%.2f,%.2f\r\n",pitch,roll,yaw);
//               
//                GPIO_ResetBits(GPIOF,GPIO_Pin_3);
//          GPIO_SetBits(GPIOA,GPIO_Pin_5);
//                GPIO_SetBits(GPIOA,GPIO_Pin_6);
//                GPIO_SetBits(GPIOA,GPIO_Pin_7);
//                GPIO_SetBits(GPIOF,GPIO_Pin_0);
//                GPIO_SetBits(GPIOF,GPIO_Pin_1);
//                GPIO_SetBits(GPIOF,GPIO_Pin_2);
//                GPIO_SetBits(GPIOF,GPIO_Pin_4);
//                GPIO_SetBits(GPIOF,GPIO_Pin_5);
//                mpu_dmp_get_data(&pitch,&roll,&yaw);
//                printf("g:%.2f,%.2f,%.2f  ",pitch,roll,yaw);
//               
//                GPIO_ResetBits(GPIOF,GPIO_Pin_4);
//          GPIO_SetBits(GPIOA,GPIO_Pin_5);
//                GPIO_SetBits(GPIOA,GPIO_Pin_6);
//                GPIO_SetBits(GPIOA,GPIO_Pin_7);
//                GPIO_SetBits(GPIOF,GPIO_Pin_0);
//                GPIO_SetBits(GPIOF,GPIO_Pin_1);
//                GPIO_SetBits(GPIOF,GPIO_Pin_2);
//                GPIO_SetBits(GPIOF,GPIO_Pin_3);
//                GPIO_SetBits(GPIOF,GPIO_Pin_5);
//                mpu_dmp_get_data(&pitch,&roll,&yaw);
//                printf("h:%.2f,%.2f,%.2f  ",pitch,roll,yaw);
//               
//                GPIO_ResetBits(GPIOF,GPIO_Pin_5);
//          GPIO_SetBits(GPIOA,GPIO_Pin_5);
//                GPIO_SetBits(GPIOA,GPIO_Pin_6);
//                GPIO_SetBits(GPIOA,GPIO_Pin_7);
//                GPIO_SetBits(GPIOF,GPIO_Pin_0);
//                GPIO_SetBits(GPIOF,GPIO_Pin_1);
//                GPIO_SetBits(GPIOF,GPIO_Pin_2);
//                GPIO_SetBits(GPIOF,GPIO_Pin_3);
//                GPIO_SetBits(GPIOF,GPIO_Pin_4);
//                mpu_dmp_get_data(&pitch,&roll,&yaw);
//                printf("i:%.2f,%.2f,%.2f\r\n",pitch,roll,yaw);

                       
                       
                }
               
}

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-25 19:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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