예제 #1
0
파일: hmc5883l.c 프로젝트: ronicsu/fly
/******************************************************************************
/ 函数功能:读取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]);
    }
} 
예제 #2
0
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]) );
    }
}