我需要用stm32读取10个Mpu9250的数据,因为mpu9250中的磁力计的I2C地址无法改变,所以我用16路模拟开关CD74HC4067来轮询读取各个9250的数据,我是共用各个9250的SDA线,让HC4067分别控制10个9250的SCL线,通过分别置16路模拟开关的地址选择引脚的高低电平来轮流和每个9250通信,但是测试后发现,这10个9250的数据是串在一起的。也就是说无论我选择接通哪一路9250,但是动其他的9250这一路9250的数据也会有变化,不知道有没有大佬能指导我一下该怎么办?
GPIO_SetBits(GPIOA,GPIO_Pin_12);
GPIO_ResetBits(GPIOA,GPIO_Pin_13);
GPIO_ResetBits(GPIOA,GPIO_Pin_14);
GPIO_ResetBits(GPIOA,GPIO_Pin_15);
delay_ms(2);
MPU_Get_Gyroscope(&gx1,&gy1,&gz1);
printf("%7.2d%7.2d%7.2d ", gx1,gy1,gz1);
//
GPIO_ResetBits(GPIOA,GPIO_Pin_12);
GPIO_SetBits(GPIOA,GPIO_Pin_13);
GPIO_ResetBits(GPIOA,GPIO_Pin_14);
GPIO_ResetBits(GPIOA,GPIO_Pin_15);
delay_ms(2);
MPU_Get_Gyroscope(&gx2,&gy2,&gz2);
printf("%7.2d%7.2d%7.2d ", gx2,gy2,gz2);