G-sensor FXLS8471Q

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

G-sensor FXLS8471Q

2,658 Views
monstor
Contributor II

I follow the AN4692 to configure my G-sensor. The output seems is normal. When we roll over the G-sensor, there is a normal output. However, after that the G-sensor output would become zero again immediately. We already disable the Auto-wake/sleep mode and low power mode. Please help.

Labels (1)
0 Kudos
2 Replies

2,289 Views
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi Henry,

It is hard to say where the problem might be. If you posted here your source code and ideally also timing diagrams from a logic analyzer, I might be able to help you in your investigation.

Meanwhile, you may find useful my simple FXLS8471Q bare-metal example code or another example code illustrating the use of the vector-magnitude function.

Regards,

Tomas

PS: If my answer helps to solve your question, please mark it as "Correct" or “Helpful”. Thank you.

0 Kudos

2,289 Views
monstor
Contributor II

Dear Tomas,

Below is my source code.

void Initial_GSensor(void)
{
     CS_B_PutVal(1);//int the CS to High 

      GSensor_Write_Addr_Cmd(XYZ_DATA_CFG, 0x12); // +/-8g range with ~0.976mg/LSB
//     Set_Roll_Over();
//     Set_Transient_Detection();  
       GSensor_Write_Addr_Cmd(CTRL_REG1, 0x39);    // ODR = 1.56Hz, Normal mode, Active mode
       GSensor_Write_Addr_Cmd(CTRL_REG2, 0x02);    // Reset, High Resolution mode
//     Get_GSensor_Calibration();
}


void Get_GSensor_XYZ(void)
{
   
    GSensor_Read_Addr_Cmd(OUT_X_MSB, 7);
    X_MSB = GSensor_Data[1];
    X_LSB = GSensor_Data[2];
    Y_MSB = GSensor_Data[3];
    Y_LSB = GSensor_Data[4];
    Z_MSB = GSensor_Data[5];
    Z_LSB = GSensor_Data[6];
   
    G_Sensor.Xout_14bit = ((X_MSB << 8) | (X_LSB))>>2; 
    G_Sensor.Yout_14bit = ((Y_MSB << 8) | (Y_LSB))>>2; 
    G_Sensor.Zout_14bit = ((Z_MSB << 8) | (Z_LSB))>>2;        
   
    if(G_Sensor.Xout_14bit >= TWO_COMPLEMENT){
      X = ((X_MSB << 8) | (X_LSB))>>2;                      //  flip all the 14 bits
      X = (X ^ 0x3FFF) + 1;     
      G_Sensor.Xout_g = X * SENSITIVITY * (-1);             // Compute X-axis output value in g's 
    }else{
      G_Sensor.Xout_g = G_Sensor.Xout_14bit*SENSITIVITY;    // Compute X-axis output value in g's     
    }   
   
    if(G_Sensor.Yout_14bit >= TWO_COMPLEMENT){
      Y = ((Y_MSB << 8) | (Y_LSB))>>2;                      //  flip all the 14 bits 
      Y = (Y ^ 0x3FFF) + 1;  
      G_Sensor.Yout_g = Y * SENSITIVITY * (-1);             // Compute Y-axis output value in g's 
    }else{
      G_Sensor.Yout_g = G_Sensor.Yout_14bit*SENSITIVITY;    // Compute Y-axis output value in g's     
    }
   
    if(G_Sensor.Zout_14bit >= TWO_COMPLEMENT){
      Z = ((Z_MSB << 8) | (Z_LSB))>>2;                      //  flip all the 14 bits
      Z = (Z ^ 0x3FFF) + 1;     
      G_Sensor.Zout_g = Z * SENSITIVITY * (-1);             // Compute Z-axis output value in g's     
    }else{
      G_Sensor.Zout_g = G_Sensor.Zout_14bit*SENSITIVITY;    // Compute Z-axis output value in g's     
    }
}

void Get_GSensor_Calibration(void)
{
  
    GSensor_Write_Addr_Cmd(CTRL_REG1, 0x18);   //Set device in 100 Hz ODR, Standby
   
    GSensor_Read_Addr_Cmd(OUT_X_MSB, 7);
    X_MSB = GSensor_Data[1];
    X_LSB = GSensor_Data[2];
    Y_MSB = GSensor_Data[3];
    Y_LSB = GSensor_Data[4];
    Z_MSB = GSensor_Data[5];
    Z_LSB = GSensor_Data[6];
   
    G_Sensor.Xout_14bit = ((X_MSB << 8) | (X_LSB))>>2; 
    G_Sensor.Yout_14bit = ((Y_MSB << 8) | (Y_LSB))>>2; 
    G_Sensor.Zout_14bit = ((Z_MSB << 8) | (Z_LSB))>>2;        
   
    X_offset = G_Sensor.Xout_14bit / 8 * (-1);
    Y_offset = G_Sensor.Yout_14bit / 8 * (-1);
    Z_offset = (G_Sensor.Zout_14bit - SENSITIVITY) / 8 * (-1);   
   
    GSensor_Write_Addr_Cmd(CTRL_REG1, 0x39);    // ODR = 1.56Hz, Reduced noise, Active mode
       

void GSensor_Read_Addr_Cmd(char Addr,word len)

  isoSPI1_TComData temp_char;   
  word i;

  Delay_ms_GSensor(1);

  CS_B_PutVal(0);//CS low
  
  Delay_ms_GSensor(1);
 
  Check_Value = 1;
  TimeOut_CNT = 0;
  while( (Check_Value != 0) && (TimeOut_CNT < 3000)){
    Check_Value = isoSPI1_SendChar( ((~0x80) & Addr) );   //  R/W, ADDR[6], ADDR[5], ADDR[4], ADDR[3], ADDR[2], ADDR[1], ADDR[0]
    TimeOut_CNT++;
  }   
 
  Check_Value = 1;
  TimeOut_CNT = 0;
  while( (Check_Value != 0) && (TimeOut_CNT < 3000)){
    Check_Value = isoSPI1_SendChar(Addr);                 //  ADDR[7], X, X, X, X, X, X, X
    TimeOut_CNT++;                               
  } 
 
  Delay_ms_GSensor(1);
 
  for(i=0;i<len;i++)
  {    
    isoSPI1_SendChar(0);                  //  dummy
   
    Check_Value = 1;
    TimeOut_CNT = 0;
    while( (Check_Value != 0) && (TimeOut_CNT < 3000)){
      Check_Value = isoSPI1_RecvChar(&temp_char);         //  DATA[7], DATA[6], DATA[5], DATA[4], DATA[3], DATA[2], DATA[1], DATA[0]
      TimeOut_CNT++;                               
    }   
    GSensor_Data[i] = temp_char;
  }
 
  Delay_ms_GSensor(1);
 
  CS_B_PutVal(1);//CS High
 
  Delay_ms_GSensor(1);
  
}

void GSensor_Write_Addr_Cmd(char Addr,char data)
{   

  Delay_ms_GSensor(1);

  CS_B_PutVal(0);//CS low
  
  Delay_ms_GSensor(1);
   
  Check_Value = 1;
  TimeOut_CNT = 0;
  while( (Check_Value != 0) && (TimeOut_CNT < 3000)){   
    Check_Value = isoSPI1_SendChar( ((0x80) | Addr) );   //  R/W, ADDR[6], ADDR[5], ADDR[4], ADDR[3], ADDR[2], ADDR[1], ADDR[0]
    TimeOut_CNT++;
  }
 
  Check_Value = 1;
  TimeOut_CNT = 0;
  while( (Check_Value != 0) && (TimeOut_CNT < 3000)){
    Check_Value = isoSPI1_SendChar(Addr);                //  ADDR[7], X, X, X, X, X, X, X
    TimeOut_CNT++;
  }
 
  Check_Value = 1;
  TimeOut_CNT = 0;
  while( (Check_Value != 0) && (TimeOut_CNT < 3000)){   
    Check_Value = isoSPI1_SendChar(data);                //  DATA[7], DATA[6], DATA[5], DATA[4], DATA[3], DATA[2], DATA[1], DATA[0]
    TimeOut_CNT++; 
  }
     
  Delay_ms_GSensor(1);
 
  CS_B_PutVal(1);//CS High

  Delay_ms_GSensor(1);
  
}

0 Kudos
%3CLINGO-SUB%20id%3D%22lingo-sub-416657%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EG-sensor%20FXLS8471Q%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-416657%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20follow%20the%20AN4692%20to%20configure%20my%20G-sensor.%20The%20output%20seems%20is%20normal.%20When%20we%20roll%20over%20the%20G-sensor%2C%20there%20is%20a%20normal%20output.%20However%2C%20after%20that%20the%20G-sensor%20output%20would%20become%20zero%20again%20immediately.%20We%20already%20disable%20the%20Auto-wake%2Fsleep%20mode%20and%20low%20power%20mode.%20Please%20help.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-416657%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3EAccelerometers%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-416659%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20G-sensor%20FXLS8471Q%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-416659%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EDear%20Tomas%2C%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EBelow%20is%20my%20source%20code.%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3Evoid%20Initial_GSensor(void)%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20CS_B_PutVal(1)%3B%2F%2Fint%20the%20CS%20to%20High%26nbsp%3B%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20GSensor_Write_Addr_Cmd(XYZ_DATA_CFG%2C%200x12)%3B%20%2F%2F%20%2B%2F-8g%20range%20with%20~0.976mg%2FLSB%20%3CBR%20%2F%3E%2F%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Set_Roll_Over()%3B%3CBR%20%2F%3E%2F%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Set_Transient_Detection()%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20GSensor_Write_Addr_Cmd(CTRL_REG1%2C%200x39)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%20ODR%20%3D%201.56Hz%2C%20Normal%20mode%2C%20Active%20mode%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20GSensor_Write_Addr_Cmd(CTRL_REG2%2C%200x02)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%20Reset%2C%20High%20Resolution%20mode%3CBR%20%2F%3E%2F%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Get_GSensor_Calibration()%3B%20%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3E%20%3CBR%20%2F%3Evoid%20Get_GSensor_XYZ(void)%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20GSensor_Read_Addr_Cmd(OUT_X_MSB%2C%207)%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20X_MSB%20%3D%20GSensor_Data%5B1%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20X_LSB%20%3D%20GSensor_Data%5B2%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Y_MSB%20%3D%20GSensor_Data%5B3%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Y_LSB%20%3D%20GSensor_Data%5B4%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Z_MSB%20%3D%20GSensor_Data%5B5%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Z_LSB%20%3D%20GSensor_Data%5B6%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Xout_14bit%20%3D%20((X_MSB%20%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%7C%20(X_LSB))%26gt%3B%26gt%3B2%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Yout_14bit%20%3D%20((Y_MSB%20%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%7C%20(Y_LSB))%26gt%3B%26gt%3B2%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Zout_14bit%20%3D%20((Z_MSB%20%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%7C%20(Z_LSB))%26gt%3B%26gt%3B2%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20if(G_Sensor.Xout_14bit%20%26gt%3B%3D%20TWO_COMPLEMENT)%7B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20X%20%3D%20((X_MSB%20%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%7C%20(X_LSB))%26gt%3B%26gt%3B2%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%26nbsp%3B%20flip%20all%20the%2014%20bits%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20X%20%3D%20(X%20%5E%200x3FFF)%20%2B%201%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Xout_g%20%3D%20X%20*%20SENSITIVITY%20*%20(-1)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%20Compute%20X-axis%20output%20value%20in%20g's%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7Delse%7B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Xout_g%20%3D%20G_Sensor.Xout_14bit*SENSITIVITY%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%20Compute%20X-axis%20output%20value%20in%20g's%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20if(G_Sensor.Yout_14bit%20%26gt%3B%3D%20TWO_COMPLEMENT)%7B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Y%20%3D%20((Y_MSB%20%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%7C%20(Y_LSB))%26gt%3B%26gt%3B2%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%26nbsp%3B%20flip%20all%20the%2014%20bits%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Y%20%3D%20(Y%20%5E%200x3FFF)%20%2B%201%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Yout_g%20%3D%20Y%20*%20SENSITIVITY%20*%20(-1)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%20Compute%20Y-axis%20output%20value%20in%20g's%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7Delse%7B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Yout_g%20%3D%20G_Sensor.Yout_14bit*SENSITIVITY%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%20Compute%20Y-axis%20output%20value%20in%20g's%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20if(G_Sensor.Zout_14bit%20%26gt%3B%3D%20TWO_COMPLEMENT)%7B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Z%20%3D%20((Z_MSB%20%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%7C%20(Z_LSB))%26gt%3B%26gt%3B2%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%26nbsp%3B%20flip%20all%20the%2014%20bits%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Z%20%3D%20(Z%20%5E%200x3FFF)%20%2B%201%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Zout_g%20%3D%20Z%20*%20SENSITIVITY%20*%20(-1)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%20Compute%20Z-axis%20output%20value%20in%20g's%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7Delse%7B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Zout_g%20%3D%20G_Sensor.Zout_14bit*SENSITIVITY%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%20Compute%20Z-axis%20output%20value%20in%20g's%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3Evoid%20Get_GSensor_Calibration(void)%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20GSensor_Write_Addr_Cmd(CTRL_REG1%2C%200x18)%3B%26nbsp%3B%26nbsp%3B%20%2F%2FSet%20device%20in%20100%20Hz%20ODR%2C%20Standby%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20GSensor_Read_Addr_Cmd(OUT_X_MSB%2C%207)%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20X_MSB%20%3D%20GSensor_Data%5B1%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20X_LSB%20%3D%20GSensor_Data%5B2%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Y_MSB%20%3D%20GSensor_Data%5B3%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Y_LSB%20%3D%20GSensor_Data%5B4%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Z_MSB%20%3D%20GSensor_Data%5B5%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Z_LSB%20%3D%20GSensor_Data%5B6%5D%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Xout_14bit%20%3D%20((X_MSB%20%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%7C%20(X_LSB))%26gt%3B%26gt%3B2%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Yout_14bit%20%3D%20((Y_MSB%20%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%7C%20(Y_LSB))%26gt%3B%26gt%3B2%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20G_Sensor.Zout_14bit%20%3D%20((Z_MSB%20%26lt%3B%26lt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%7C%20(Z_LSB))%26gt%3B%26gt%3B2%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20X_offset%20%3D%20G_Sensor.Xout_14bit%20%2F%208%20*%20(-1)%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Y_offset%20%3D%20G_Sensor.Yout_14bit%20%2F%208%20*%20(-1)%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Z_offset%20%3D%20(G_Sensor.Zout_14bit%20-%20SENSITIVITY)%20%2F%208%20*%20(-1)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20GSensor_Write_Addr_Cmd(CTRL_REG1%2C%200x39)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%20ODR%20%3D%201.56Hz%2C%20Reduced%20noise%2C%20Active%20mode%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%7D%26nbsp%3B%20%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3Evoid%20GSensor_Read_Addr_Cmd(char%20Addr%2Cword%20len)%3CBR%20%2F%3E%7B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20isoSPI1_TComData%20temp_char%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20word%20i%3B%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%26nbsp%3B%20Delay_ms_GSensor(1)%3B%3CBR%20%2F%3E%20%3CBR%20%2F%3E%26nbsp%3B%20CS_B_PutVal(0)%3B%2F%2FCS%20low%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20Delay_ms_GSensor(1)%3B%3CBR%20%2F%3E%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20Check_Value%20%3D%201%3B%3CBR%20%2F%3E%26nbsp%3B%20TimeOut_CNT%20%3D%200%3B%3CBR%20%2F%3E%26nbsp%3B%20while(%20(Check_Value%20!%3D%200)%20%26amp%3B%26amp%3B%20(TimeOut_CNT%20%26lt%3B%203000))%7B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Check_Value%20%3D%20isoSPI1_SendChar(%20((~0x80)%20%26amp%3B%20Addr)%20)%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%26nbsp%3B%20R%2FW%2C%20ADDR%5B6%5D%2C%20ADDR%5B5%5D%2C%20ADDR%5B4%5D%2C%20ADDR%5B3%5D%2C%20ADDR%5B2%5D%2C%20ADDR%5B1%5D%2C%20ADDR%5B0%5D%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20TimeOut_CNT%2B%2B%3B%3CBR%20%2F%3E%26nbsp%3B%20%7D%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20Check_Value%20%3D%201%3B%3CBR%20%2F%3E%26nbsp%3B%20TimeOut_CNT%20%3D%200%3B%3CBR%20%2F%3E%26nbsp%3B%20while(%20(Check_Value%20!%3D%200)%20%26amp%3B%26amp%3B%20(TimeOut_CNT%20%26lt%3B%203000))%7B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Check_Value%20%3D%20isoSPI1_SendChar(Addr)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%26nbsp%3B%20ADDR%5B7%5D%2C%20X%2C%20X%2C%20X%2C%20X%2C%20X%2C%20X%2C%20X%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20TimeOut_CNT%2B%2B%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20%7D%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20Delay_ms_GSensor(1)%3B%3CBR%20%2F%3E%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20for(i%3D0%3Bi%3CLEN%3E%3C%2FLEN%3E%26nbsp%3B%20%7B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20isoSPI1_SendChar(0)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%26nbsp%3B%20dummy%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Check_Value%20%3D%201%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20TimeOut_CNT%20%3D%200%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20while(%20(Check_Value%20!%3D%200)%20%26amp%3B%26amp%3B%20(TimeOut_CNT%20%26lt%3B%203000))%7B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Check_Value%20%3D%20isoSPI1_RecvChar(%26amp%3Btemp_char)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%26nbsp%3B%20DATA%5B7%5D%2C%20DATA%5B6%5D%2C%20DATA%5B5%5D%2C%20DATA%5B4%5D%2C%20DATA%5B3%5D%2C%20DATA%5B2%5D%2C%20DATA%5B1%5D%2C%20DATA%5B0%5D%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20TimeOut_CNT%2B%2B%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20GSensor_Data%5Bi%5D%20%3D%20temp_char%3B%3CBR%20%2F%3E%26nbsp%3B%20%7D%3CBR%20%2F%3E%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20Delay_ms_GSensor(1)%3B%3CBR%20%2F%3E%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20CS_B_PutVal(1)%3B%2F%2FCS%20High%3CBR%20%2F%3E%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20Delay_ms_GSensor(1)%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3Evoid%20GSensor_Write_Addr_Cmd(char%20Addr%2Cchar%20data)%3CBR%20%2F%3E%7B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%26nbsp%3B%20Delay_ms_GSensor(1)%3B%3CBR%20%2F%3E%20%3CBR%20%2F%3E%26nbsp%3B%20CS_B_PutVal(0)%3B%2F%2FCS%20low%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20Delay_ms_GSensor(1)%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20Check_Value%20%3D%201%3B%3CBR%20%2F%3E%26nbsp%3B%20TimeOut_CNT%20%3D%200%3B%3CBR%20%2F%3E%26nbsp%3B%20while(%20(Check_Value%20!%3D%200)%20%26amp%3B%26amp%3B%20(TimeOut_CNT%20%26lt%3B%203000))%7B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Check_Value%20%3D%20isoSPI1_SendChar(%20((0x80)%20%7C%20Addr)%20)%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%26nbsp%3B%20R%2FW%2C%20ADDR%5B6%5D%2C%20ADDR%5B5%5D%2C%20ADDR%5B4%5D%2C%20ADDR%5B3%5D%2C%20ADDR%5B2%5D%2C%20ADDR%5B1%5D%2C%20ADDR%5B0%5D%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20TimeOut_CNT%2B%2B%3B%3CBR%20%2F%3E%26nbsp%3B%20%7D%3CBR%20%2F%3E%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20Check_Value%20%3D%201%3B%3CBR%20%2F%3E%26nbsp%3B%20TimeOut_CNT%20%3D%200%3B%3CBR%20%2F%3E%26nbsp%3B%20while(%20(Check_Value%20!%3D%200)%20%26amp%3B%26amp%3B%20(TimeOut_CNT%20%26lt%3B%203000))%7B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Check_Value%20%3D%20isoSPI1_SendChar(Addr)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%26nbsp%3B%20ADDR%5B7%5D%2C%20X%2C%20X%2C%20X%2C%20X%2C%20X%2C%20X%2C%20X%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20TimeOut_CNT%2B%2B%3B%20%3CBR%20%2F%3E%26nbsp%3B%20%7D%3CBR%20%2F%3E%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20Check_Value%20%3D%201%3B%3CBR%20%2F%3E%26nbsp%3B%20TimeOut_CNT%20%3D%200%3B%3CBR%20%2F%3E%26nbsp%3B%20while(%20(Check_Value%20!%3D%200)%20%26amp%3B%26amp%3B%20(TimeOut_CNT%20%26lt%3B%203000))%7B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Check_Value%20%3D%20isoSPI1_SendChar(data)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%26nbsp%3B%20DATA%5B7%5D%2C%20DATA%5B6%5D%2C%20DATA%5B5%5D%2C%20DATA%5B4%5D%2C%20DATA%5B3%5D%2C%20DATA%5B2%5D%2C%20DATA%5B1%5D%2C%20DATA%5B0%5D%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20TimeOut_CNT%2B%2B%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20%7D%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20Delay_ms_GSensor(1)%3B%3CBR%20%2F%3E%26nbsp%3B%20%3CBR%20%2F%3E%26nbsp%3B%20CS_B_PutVal(1)%3B%2F%2FCS%20High%3C%2FP%3E%3CP%3E%26nbsp%3B%20Delay_ms_GSensor(1)%3B%3CBR%20%2F%3E%26nbsp%3B%26nbsp%3B%20%3CBR%20%2F%3E%7D%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-416658%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20G-sensor%20FXLS8471Q%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-416658%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%20Henry%2C%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EIt%20is%20hard%20to%20say%20where%20the%20problem%20might%20be.%20If%20you%20posted%20here%20your%20source%20code%20and%20ideally%20also%20timing%20diagrams%20from%20a%20logic%20analyzer%2C%20I%20might%20be%20able%20to%20help%20you%20in%20your%20investigation.%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EMeanwhile%2C%20you%20may%20find%20useful%20my%20simple%20%3CA%20_jive_internal%3D%22true%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fdocs%2FDOC-99917%22%20target%3D%22_blank%22%3EFXLS8471Q%20bare-metal%20example%20code%3C%2FA%3E%20or%20another%20example%20code%20illustrating%20the%20use%20of%20the%20%3CA%20_jive_internal%3D%22true%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fdocs%2FDOC-106050%22%20target%3D%22_blank%22%3Evector-magnitude%20function%3C%2FA%3E.%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3ERegards%2C%3C%2FP%3E%3CP%3ETomas%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-weight%3A%20inherit%3B%20font-style%3A%20italic%3B%20font-size%3A%2010.6667px%3B%20font-family%3A%20inherit%3B%20color%3A%20%2351626f%3B%20text-align%3A%20left%3B%20text-indent%3A%200px%3B%22%3E%3CEM%20style%3D%22font-weight%3A%20inherit%3B%20font-style%3A%20italic%3B%20font-size%3A%2010.6667px%3B%20font-family%3A%20inherit%3B%22%3EPS%3A%3CSPAN%20class%3D%22Apple-converted-space%22%20style%3D%22font-weight%3A%20inherit%3B%20font-style%3A%20inherit%3B%20font-size%3A%2010.6667px%3B%20font-family%3A%20inherit%3B%22%3E%3CSPAN%20class%3D%22Apple-converted-space%22%3E%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FEM%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-weight%3A%20inherit%3B%20font-style%3A%20italic%3B%20font-size%3A%2010.6667px%3B%20font-family%3A%20inherit%3B%20color%3A%20%2351626f%3B%20text-align%3A%20left%3B%20text-indent%3A%200px%3B%22%3E%3CEM%20style%3D%22font-weight%3A%20inherit%3B%20font-style%3A%20italic%3B%20font-size%3A%2010.6667px%3B%20font-family%3A%20inherit%3B%22%3EIf%20my%20answer%20helps%20to%20solve%20your%20question%2C%20please%20mark%20it%20as%20%22Correct%22%20or%20%E2%80%9CHelpful%E2%80%9D.%20Thank%20you.%3C%2FEM%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E