void DST_MPU6050::MPU6050_Init(uint16_t lpf) { uint8_t default_filter; MPU6050_Pin_Config(); switch (lpf) { case 5: default_filter = MPU6050_LPF_5HZ; break; case 10: default_filter = MPU6050_LPF_10HZ; break; case 20: default_filter = MPU6050_LPF_20HZ; break; case 42: default_filter = MPU6050_LPF_42HZ; break; case 98: default_filter = MPU6050_LPF_98HZ; break; case 188: default_filter = MPU6050_LPF_188HZ; break; case 256: default_filter = MPU6050_LPF_256HZ; break; default: default_filter = MPU6050_LPF_98HZ; break; } //设备复位 IIC_Write_1Byte(MPU6050_ADDRESS,MPU_RA_PWR_MGMT_1, 0x80); systime.Delay_ms(5); //陀螺仪采样率,0x00(1000Hz) 采样率 = 陀螺仪的输出率 / (1 + SMPLRT_DIV) IIC_Write_1Byte(MPU6050_ADDRESS,MPU_RA_SMPLRT_DIV, (1000/1000 - 1)); //设置设备时钟源,陀螺仪Z轴 IIC_Write_1Byte(MPU6050_ADDRESS, MPU_RA_PWR_MGMT_1, 0x03); //i2c旁路模式:CPU直接连接6050的附加IIC,用于连接磁力计HMC5883 IIC_Write_1Byte(MPU6050_ADDRESS, MPU_RA_INT_PIN_CFG, 0x02); // INT_PIN_CFG -- INT_LEVEL_HIGH, INT_OPEN_DIS, LATCH_INT_DIS, INT_RD_CLEAR_DIS, FSYNC_INT_LEVEL_HIGH, FSYNC_INT_DIS, I2C_BYPASS_EN, CLOCK_DIS //低通滤波频率,0x03(42Hz) IIC_Write_1Byte(MPU6050_ADDRESS,MPU_RA_CONFIG, default_filter); //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s) IIC_Write_1Byte(MPU6050_ADDRESS, MPU_RA_GYRO_CONFIG, 0x18); //加速计自检、测量范围(不自检,+-8G) IIC_Write_1Byte(MPU6050_ADDRESS,MPU_RA_ACCEL_CONFIG, 2 << 3); }
bool ANO_AK8975_Run(void) { return IIC_Write_1Byte(AK8975_ADDRESS,AK8975_CNTL,0x01); }