zouyf12 发表于 2016-3-14 22:48:49

[问题已解决]请教MPU6050读寄存器正常但是角速度和加速度...

本帖最后由 zouyf12 于 2016-3-15 23:24 编辑

      今天焊的一块板子,MPU6050读寄存器正常,但是读角速度和加速度都是0, 不知道是不是芯片坏了。程序什么的没有问题,因为同样的板子都OK。



[问题已解决]
      以上是昨天问的问题, 老天开眼,自己正好碰中地方解决了。
写出了方便以后倒霉的同学也遇到同样的问题。 补充说明板子是参考MWC飞控做的。
      
      是这样的,板子的程序用的是MWC的, 而MWC在初始化MPU6050前会先软复位一下,而小弟实验表明,MPU6050上电后的一段时间内,要么就不要去软件复位, 要软件复位,复位后也必须再等一段时间后,才能开始正常配置寄存器, 要不然MPU6050就会全0罢工。 如下MWC MPU6050初始化程序, 无论是删掉标红第一句还是加长第二句的延迟,均可解决问题。

void Gyro_init() {
TWBR = ((F_CPU / 400000L) - 16) / 2; // change the I2C clock rate to 400kHz
i2c_writeReg(MPU6050_ADDRESS, 0x6B, 0x80);             //PWR_MGMT_1    -- DEVICE_RESET 1
delay(5);
i2c_writeReg(MPU6050_ADDRESS, 0x6B, 0x03);    //0x03         //PWR_MGMT_1    -- SLEEP 0; CYCLE 0; TEMP_DIS 0; CLKSEL 3 (PLL with Z Gyro reference)
i2c_writeReg(MPU6050_ADDRESS, 0x1A, MPU6050_DLPF_CFG); //CONFIG      -- EXT_SYNC_SET 0 (disable input pin for data sync) ; default DLPF_CFG = 0 => ACC bandwidth = 260HzGYRO bandwidth = 256Hz)
i2c_writeReg(MPU6050_ADDRESS, 0x1B, 0x18);             //GYRO_CONFIG   -- FS_SEL = 3: Full scale set to 2000 deg/sec
// enable I2C bypass for AUX I2C
#if defined(MAG)
    i2c_writeReg(MPU6050_ADDRESS, 0x37, 0x02);         //INT_PIN_CFG   -- INT_LEVEL=0 ; INT_OPEN=0 ; LATCH_INT_EN=0 ; INT_RD_CLEAR=0 ; FSYNC_INT_LEVEL=0 ; FSYNC_INT_EN=0 ; I2C_BYPASS_EN=1 ; CLKOUT_EN=0
#endif
}



不过,另一个问题来了,MWC这么多人用,为什么偏偏我这里会出现这样的问题, 目前实在想不通。。。。。






页: [1]
查看完整版本: [问题已解决]请教MPU6050读寄存器正常但是角速度和加速度...