/**************************实现函数********************************************
*函数原型:	   void HMC58X3_init(u8 setmode)
*功  能:	   设置 5883L的工作模式
输入参数:     模式
输出参数:     无
*******************************************************************************/
void HMC58X3_init(u8 setmode) {

  if (setmode) {
    HMC58X3_setMode(0);
  }
  HMC58X3_writeReg(HMC58X3_R_CONFA, 0x70); // 8 samples averaged, 75Hz frequency, no artificial bias.
  HMC58X3_writeReg(HMC58X3_R_CONFB, 0xA0);
  HMC58X3_writeReg(HMC58X3_R_MODE,  0x00);

}
/**************************实现函数********************************************
*函数原型:	   void HMC58X3_setMode(unsigned char mode)
*功  能:	   设置 5883L的工作模式
输入参数:     模式
输出参数:     无
*******************************************************************************/
void HMC58X3_setMode(unsigned char mode) {
  if (mode > 2) {
    return;
  }
  HMC58X3_writeReg(HMC58X3_R_MODE, mode);
  delay_us(100);
}
示例#3
0
void HMC58X3_setDOR(unsigned char DOR) {
  if (DOR>6)
  {
   return;
  } 
  HMC58X3_writeReg(HMC58X3_R_CONFA,DOR<<2);
}
示例#4
0
void HMC58X3_setMode(U8 mode) 
{
  if (mode > 2)
  {
    return;
  }
  HMC58X3_writeReg(HMC58X3_R_MODE, mode);
  
}
示例#5
0
U8 hmc5883_Init(U8 setmode)
{ 
	U8 ok1=0,ok2=0,ok3=0;
  if(setmode)
  {
     HMC58X3_setMode(0);  
  }
     
  ok1=HMC58X3_writeReg(HMC58X3_R_CONFA, 0x70); // 8 samples averaged, 75Hz frequency, no artificial bias.
  ok2=HMC58X3_writeReg(HMC58X3_R_CONFB, 0xA0);
  ok3=HMC58X3_writeReg(HMC58X3_R_MODE, 0x00);
  if(ok1&&ok2&&ok3)
  {
     return OK;	  
  }
  else 
     return ERROR;
}
/**************************实现函数********************************************
*函数原型:	  void HMC58X3_setGain(unsigned char gain)
*功  能:	   设置 5883L的增益
输入参数:     目标增益 0-7
输出参数:  无
*******************************************************************************/
void HMC58X3_setGain(unsigned char gain) { 
  // 0-7, 1 default
  if (gain > 7) return;
  HMC58X3_writeReg(HMC58X3_R_CONFB, gain << 5);
}