/****************************************************************************** / 函数功能:读取HMC5883的数据(适用于启动-中断-读取数据的程序) / 修改日期:none / 输入参数:none / 输出参数:none / 使用说明:启动-中断-查询 (查询) ******************************************************************************/ void HMC5883L_MultRead(tg_HMC5883L_TYPE * ptResult) { uint8_t tmp[6]; int32_t s32Val; if(true == Mult_Read(HMC5883L_Addr,HMC5883L_HX_H,tmp,6)) //多读读出传感器数据 { //修正数据(根据x轴修正y轴输出) // ptResult->hx = (int16_t)((tmp[0] << 8) | tmp[1])+HMC5883L_OFFSET_X; // s32Val = (int16_t)((tmp[4] << 8) | tmp[5])+HMC5883L_OFFSET_Y; // s32Val = (s32Val*HMC5883L_GAIN_Y)/10000; // ptResult->hy = (int16_t)s32Val; ptResult->hx = (int16_t)((tmp[0] << 8) | tmp[1]); ptResult->hy = (int16_t)((tmp[4] << 8) | tmp[5]); ptResult->hz = (int16_t)((tmp[2] << 8) | tmp[3]); } }
void Read_L3G4200D(S_INT16_XYZ*ptResult) { /*BUF[0]=Single_Read(L3G4200_OUT_X_L,L3G4200_I2C_ADDR); BUF[1]=Single_Read(L3G4200_OUT_X_H,L3G4200_I2C_ADDR); L3G4200_GYRO_LAST.X =(BUF[1]<<8)|BUF[0]; BUF[2]=Single_Read(L3G4200_OUT_Y_L,L3G4200_I2C_ADDR); BUF[3]=Single_Read(L3G4200_OUT_Y_H,L3G4200_I2C_ADDR); L3G4200_GYRO_LAST.Y= (BUF[3]<<8)|BUF[2]; BUF[4]=Single_Read(L3G4200_OUT_Z_L,L3G4200_I2C_ADDR); BUF[5]=Single_Read(L3G4200_OUT_Z_H,L3G4200_I2C_ADDR); L3G4200_GYRO_LAST.Z= (BUF[5]<<8)|BUF[4];*/ uint8_t tmp[6]; if(true == Mult_Read(L3G4200_I2C_ADDR,(L3G4200_OUT_X_L|0x80),tmp,6)) { //ptResult->gx = (int16_t)((tmp[1]<<8)|tmp[0]); //ptResult->gy = (int16_t)((tmp[3]<<8)|tmp[2]); //ptResult->gz = (int16_t)((tmp[5]<<8)|tmp[4]); ptResult->X = *( (int16_t *)(&tmp[0]) ); //优化效果明显 ptResult->Y = *( (int16_t *)(&tmp[2]) ); ptResult->Z = *( (int16_t *)(&tmp[4]) ); } }