示例#1
0
/*
 *   LPLD_MMA8451_Init
 *   初始化MMA8451,包括初始化8451所需的I2C接口以及8451的寄存器
 *
 *   参数:
 *    无
 *
 *   返回值
 *      设备ID
 */
uint8 LPLD_MMA8451_Init(void)
{
  I2C_InitTypeDef i2c_init_param;
  uint8 device_id;
    
  //初始化MMA8451_I2CX
  i2c_init_param.I2C_I2Cx = MMA8451_I2CX;       //在DEV_MMA8451.h中修改该值
  i2c_init_param.I2C_IntEnable = FALSE;
  i2c_init_param.I2C_ICR = MMA8451_SCL_200KHZ;  //可根据实际电路更改SCL频率
  i2c_init_param.I2C_SclPin = MMA8451_SCLPIN;   //在DEV_MMA8451.h中修改该值
  i2c_init_param.I2C_SdaPin = MMA8451_SDAPIN;   //在DEV_MMA8451.h中修改该值
  i2c_init_param.I2C_Isr = NULL;
  
  LPLD_I2C_Init(i2c_init_param);
  
  //读取设备ID
  device_id = LPLD_MMA8451_ReadReg(MMA8451_REG_WHOAMI);

  //进行寄存器配置
  LPLD_MMA8451_WriteReg(MMA8451_REG_SYSMOD, 0x00);       //默认模式Standby Mode
  LPLD_MMA8451_WriteReg(MMA8451_REG_CTRL_REG2, 0x02);    //High Resolution
  LPLD_MMA8451_WriteReg(MMA8451_REG_CTRL_REG1, 0x01);    //主动模式,800HZ
  
  return device_id;
}
示例#2
0
/*
 *   LPLD_MAG3110_Init
 *   初始化MAG3110,包括初始化3110所需的I2C接口以及3110的寄存器
 *
 *   参数:
 *    无
 */
uint8 LPLD_MAG3110_Init(void)
{
  uint8 device_id;
  I2C_InitTypeDef i2c_init_param;
    
  //初始化MAG3110_I2CX
  i2c_init_param.I2C_I2Cx = MAG3110_I2CX;       //在DEV_MAG3110.h中修改该值
  i2c_init_param.I2C_ICR = MAG3110_SCL_200KHZ;  //可根据实际电路更改SCL频率
  i2c_init_param.I2C_SclPin = MAG3110_SCLPIN;   //在DEV_MAG3110.h中修改该值
  i2c_init_param.I2C_SdaPin = MAG3110_SDAPIN;   //在DEV_MAG3110.h中修改该值
  i2c_init_param.I2C_IntEnable = FALSE;
  i2c_init_param.I2C_Isr = NULL;
  i2c_init_param.I2C_OpenDrainEnable = FALSE;
  
  LPLD_I2C_Init(i2c_init_param);
  
  //读取设备ID
  device_id = LPLD_MAG3110_ReadReg(MAG3110_WHO_AM_I);
      
  //配置CTRL_REG2
  //自动复位模式
  LPLD_MAG3110_WriteReg(MAG3110_CTRL_REG2, CTRL_REG2_AUTO_MRST_EN_MARK); 
  //配置CTRL_REG1 
  LPLD_MAG3110_WriteReg(MAG3110_CTRL_REG1, CTRL_REG1_OS(0)|CTRL_REG1_AC_MARK);
  
  return device_id;
}
示例#3
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);
}