/* * 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; }
/* * 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; }
/* * 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); }