示例#1
0
int8_t MPU6050_Init( MPU_InitTypeDef *MPUx )
{
    uint8_t status = ERROR;
    uint8_t MPU6050_InitData[MPU6050_InitRegNum][2] = {
        {0x01, MPU6050_PWR_MGMT_1},   // Reset device
        {0x03, MPU6050_CONFIG},       //
        {0x18, MPU6050_GYRO_CONFIG},  // +-2000dps
        {0x08, MPU6050_ACCEL_CONFIG}, // +-4G
        {0x32, MPU6050_INT_PIN_CFG},  //
        {0x00, MPU6050_USER_CTRL}     //
    };

//  MPU6050_InitData[6][0] = MPUx->MPU_Gyr_FullScale;       // MPU6500_GYRO_CONFIG
//  MPU6050_InitData[8][0] = MPUx->MPU_Gyr_LowPassFilter;   // MPU6500_CONFIG
//  MPU6050_InitData[7][0] = MPUx->MPU_Acc_FullScale;       // MPU6500_ACCEL_CONFIG
//  MPU6050_InitData[9][0] = MPUx->MPU_Acc_LowPassFilter;   // MPU6500_ACCEL_CONFIG_2

    for(uint8_t i = 0; i < MPU6050_InitRegNum; i++) {
        Delay_1ms(2);
        MPU6050_WriteReg(MPU6050_InitData[i][1], MPU6050_InitData[i][0]);
    }

    /* Check Device ID */
    status = MPU6050_Check();
    if(status != SUCCESS)
        return ERROR;

    return SUCCESS;
}
示例#2
0
/*
 *   MPU6050_Init
 *   初始化MPU6050,包括初始化MPU6050所需的I2C接口以及MPU6050的寄存器
 *
 *   参数:
 *    无
 *
 *   返回值
 *    无
 */
void MPU6050_Init()
{
  //初始化MPU6050
  MPU6050_init_struct.I2C_I2Cx = MPU6050_I2CX;          //在MPU6050.h中修改该值
  MPU6050_init_struct.I2C_IntEnable = FALSE;
  MPU6050_init_struct.I2C_ICR = MPU6050_SCL_400KHZ;     //可根据实际电路更改SCL频率
  MPU6050_init_struct.I2C_SclPin = MPU6050_SCLPIN;      //在MPU6050.h中修改该值
  MPU6050_init_struct.I2C_SdaPin = MPU6050_SDAPIN;      //在MPU6050.h中修改该值
  MPU6050_init_struct.I2C_Isr = NULL;
  LPLD_I2C_Init(MPU6050_init_struct);
  
  LPLD_SYSTICK_DelayMs(1);
  
  MPU6050_WriteReg(PWR_MGMT_1,0x00);    //解除休眠状态
  MPU6050_WriteReg(SMPLRT_DIV,0x07);    //陀螺仪采样率,典型值:0x07(125Hz)
  MPU6050_WriteReg(CONFIG,0x06);        //低通滤波频率,典型值:0x06(5Hz)
  MPU6050_WriteReg(GYRO_CONFIG,0x18);   //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
  MPU6050_WriteReg(ACCEL_CONFIG,0x01);  //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)
  
  LPLD_SYSTICK_DelayMs(1);
}