Example #1
0
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);		
}
Example #2
0
bool ANO_AK8975_Run(void)
{
	return IIC_Write_1Byte(AK8975_ADDRESS,AK8975_CNTL,0x01);	
}