void ANO_AK8975_Read_Mag_Data(void) { int16_t mag_temp[3]; u8 ak8975_buffer[6]; //接收数据缓存 I2C_FastMode = 0; IIC_Read_1Byte(AK8975_ADDRESS,AK8975_HXL,&ak8975_buffer[0]); IIC_Read_1Byte(AK8975_ADDRESS,AK8975_HXH,&ak8975_buffer[1]); mag_temp[1] = ((((int16_t)ak8975_buffer[1]) << 8) | ak8975_buffer[0]) ; //磁力计X轴 IIC_Read_1Byte(AK8975_ADDRESS,AK8975_HYL,&ak8975_buffer[2]); IIC_Read_1Byte(AK8975_ADDRESS,AK8975_HYH,&ak8975_buffer[3]); mag_temp[0] = ((((int16_t)ak8975_buffer[3]) << 8) | ak8975_buffer[2]) ; //磁力计Y轴 IIC_Read_1Byte(AK8975_ADDRESS,AK8975_HZL,&ak8975_buffer[4]); IIC_Read_1Byte(AK8975_ADDRESS,AK8975_HZH,&ak8975_buffer[5]); mag_temp[2] = -((((int16_t)ak8975_buffer[5]) << 8) | ak8975_buffer[4]) ; //磁力计Z轴 ak8975.Mag_Adc.x = mag_temp[0]; ak8975.Mag_Adc.y = mag_temp[1]; ak8975.Mag_Adc.z = mag_temp[2]; ak8975.Mag_Val.x = (ak8975.Mag_Adc.x - ak8975.Mag_Offset.x) ; ak8975.Mag_Val.y = (ak8975.Mag_Adc.y - ak8975.Mag_Offset.y) ; ak8975.Mag_Val.z = (ak8975.Mag_Adc.z - ak8975.Mag_Offset.z) ; //磁力计中点矫正 ANO_AK8975_CalOffset_Mag(); //AK8975采样触发 ANO_AK8975_Run(); }
void DST_MPU6050::Read_GYRO_Data(void) { IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_GYRO_XOUT_L,&mpu6050_buffer[6]); IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_GYRO_XOUT_H,&mpu6050_buffer[7]); gyro_temp[1] = -((((int16_t)mpu6050_buffer[7]) << 8) | mpu6050_buffer[6])- GYRO_Offset.y;//; //陀螺仪X轴 IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_GYRO_YOUT_L,&mpu6050_buffer[8]); IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_GYRO_YOUT_H,&mpu6050_buffer[9]); gyro_temp[0] = ((((int16_t)mpu6050_buffer[9]) << 8) | mpu6050_buffer[8])- GYRO_Offset.x;//; //陀螺仪Y轴 IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_GYRO_ZOUT_L,&mpu6050_buffer[10]); IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_GYRO_ZOUT_H,&mpu6050_buffer[11]); gyro_temp[2] = ((((int16_t)mpu6050_buffer[11]) << 8) | mpu6050_buffer[10])- GYRO_Offset.z;//; //陀螺仪Z轴 GYRO_ADC((float)gyro_temp[0], (float)gyro_temp[1], (float)gyro_temp[2]); Calibration_GYRO(); }
void DST_MPU6050::Read_ACC_Data(void) { IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_ACCEL_XOUT_L,&mpu6050_buffer[0]); IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_ACCEL_XOUT_H,&mpu6050_buffer[1]); acc_temp[1] = -((((int16_t)mpu6050_buffer[1]) << 8) | mpu6050_buffer[0])- ACC_Offset.y;//; //加速度X轴 IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_ACCEL_YOUT_L,&mpu6050_buffer[2]); IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_ACCEL_YOUT_H,&mpu6050_buffer[3]); acc_temp[0] = ((((int16_t)mpu6050_buffer[3]) << 8) | mpu6050_buffer[2])- ACC_Offset.x;//; //加速度Y轴 IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_ACCEL_ZOUT_L,&mpu6050_buffer[4]); IIC_Read_1Byte(MPU6050_ADDRESS,MPU_RA_ACCEL_ZOUT_H,&mpu6050_buffer[5]); acc_temp[2] = ((((int16_t)mpu6050_buffer[5]) << 8) | mpu6050_buffer[4])- ACC_Offset.z;//; //加速度Z轴 ACC_ADC((float)acc_temp[0],(float)acc_temp[1],(float)acc_temp[2]); Calibration_ACC(); }