示例#1
0
/*
*********************************************************************************************************
*	函 数 名: bsp_InitMPU6050
*	功能说明: 初始化MPU-6050
*	形    参:  无
*	返 回 值: 1 表示正常, 0 表示不正常
*********************************************************************************************************
*/
void bsp_InitMPU6050(void)
{
	MPU6050_WriteByte(PWR_MGMT_1, 0x00);	//解除休眠状态
	MPU6050_WriteByte(SMPLRT_DIV, 0x07);
	MPU6050_WriteByte(CONFIG, 0x06);
	MPU6050_WriteByte(GYRO_CONFIG, 0xE8);
	MPU6050_WriteByte(ACCEL_CONFIG, 0x01);
}
示例#2
0
/**************************实现函数********************************************
*函数原型:		void MPU6050_setI2CBypassEnabled(uint8_t enabled)
*功  能:	    设置 MPU6050 是否为AUX I2C线的主机
*******************************************************************************/
void MPU6050_setI2CBypassEnabled(void)
{
	uint8_t data = 0;	
	data = MPU6050_ReadByte(MPU6050_Addr,MPU6050_RA_INT_PIN_CFG);
	data = data | 0X02;
	MPU6050_WriteByte(MPU6050_Addr,MPU6050_RA_USER_CTRL,data);
}
示例#3
0
/**************************实现函数********************************************
*函数原型:		void MPU6050_setI2CMasterModeEnabled(uint8_t enabled)
*功  能:	    设置 MPU6050 是否为AUX I2C线的主机
*******************************************************************************/
void MPU6050_setI2CMasterModeEnabled(void) 
{
	uint8_t data = 0;	
	data = MPU6050_ReadByte(MPU6050_Addr,MPU6050_RA_USER_CTRL);
	data = data & 0XDF;
	MPU6050_WriteByte(MPU6050_Addr,MPU6050_RA_USER_CTRL,data);	
}
示例#4
0
/****SCL PC12 SDA PC11*****/
void MPU6050_Init(void)
{
	 GPIO_InitTypeDef  GPIO_InitStructure;
	/**************大尺寸开发板姿态传感器代码****************/		
	 #ifdef USE_BIG_SIZE_BOARD	
	 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);	 
	 //PC12 SCL
	 GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_12;				 
	 GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP; 		 
	 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	 GPIO_Init(GPIOC, &GPIO_InitStructure);
	 GPIO_SetBits(GPIOC,GPIO_Pin_12);						
		//PC11 SDA
	 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;	    		
	 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; 		
	 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
	 GPIO_Init(GPIOC, &GPIO_InitStructure);	
	 GPIO_SetBits(GPIOC,GPIO_Pin_11);	
	 #endif
	/**************小尺寸开发板姿态传感器代码****************/
	 #ifdef USE_LITTLE_SIZE_BOARD
	 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 
	 //PB15 SCL
	 GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_15;				 
	 GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP; 		 
	 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	 GPIO_Init(GPIOB, &GPIO_InitStructure);
	 GPIO_SetBits(GPIOB,GPIO_Pin_15);						
		//PB13 SDA
	 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;	    		
	 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; 		
	 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
	 GPIO_Init(GPIOB, &GPIO_InitStructure);	
	 GPIO_SetBits(GPIOB,GPIO_Pin_13);
	 #endif	 
	/*************姿态模块初始化*************/       //加速度计和陀螺仪都是使用1000Hz采样
	MPU6050_WriteByte(MPU6050_Addr, PWR_MGMT_1, 0x00);	 //解除休眠状态
	MPU6050_WriteByte(MPU6050_Addr, SMPLRT_DIV, 0x00);    //SMPLRT_DIV    -- SMPLRT_DIV = 3,  Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV)
	MPU6050_WriteByte(MPU6050_Addr, MPU_CONFIG, 0x03);    //片内寄存器设置的低通滤波,使用带宽42Hz
	MPU6050_WriteByte(MPU6050_Addr, GYRO_CONFIG, 0x18);  // 量程2000/s
	MPU6050_WriteByte(MPU6050_Addr, ACCEL_CONFIG, 0x00); // 量程2g,0x08对应4g
	MPU6050_setI2CMasterModeEnabled();
	MPU6050_setI2CBypassEnabled();
	MPU6050_WriteByte(MPU6050_Addr,INT_PIN_CFG, 0x42);   //使能旁路I2C
	MPU6050_WriteByte(MPU6050_Addr,USER_CTRL, 0x40);     //使能旁路I2C
}