cancel
Showing results for 
Search instead for 
Did you mean: 

chip LIS2DS12 fatal defect!

Pxiao.2
Associate II

Dear sir,

We are using your company's three-dimensional acceleration chip LIS2DS12. Now we have found a fatal defect. When the ambient temperature value detected by the temperature sensor inside the chip changes from 24 ℃ to 25℃, the acceleration output value will jump without control. The jump amplitude is about 100 LSB when the range is 2g.

When the range is set to 16g, the jump amplitude will be less than ten LSBs, and the duration jump duration is exactly an integral multiple of the temperature sampling period. Since our application needs to integrate acceleration into velocity, this jump signal will cause serious data distortion.

We sincerely hope that your company can provide solutions. We think the possible solutions are as follows:

  1. See if there is an unpublished register setting that can prohibit the on-chip temperature sensor from working.

2. Find out the cause of temperature and acceleration correlation, whether it is a chip design defect or an internal setting problem           

3. If there is no way to solve the problem, whether there is an alternative model with the same specification.

1 ACCEPTED SOLUTION

Accepted Solutions
Eleon BORLINI
ST Employee

Hi @Pxiao.2​ ,

thank you for reporting the issue. May I ask you some further question to narrow down the problem, since it is not a know issue so far.

  • Are you facing the problem on more than 1 sensor, and on all 3 axis?
  • Are you testing the part in an oven, or with any tool that may vibrate, thus inducing a spurious vibration in the acquisition?
  • Are you compensating the sensitivity in temperature with a software algorithm? If so, please consider that the temperature conversion coming from embedded sensor has to be converted in physical units as shown below (source lis2ds12_reg.c:(
float_t lis2ds12_from_lsb_to_celsius(int16_t lsb)
{
  return (((float_t)lsb / 256.0f) + 25.0f);
}
  • If you did everything well, you could try to set these reserved register to 00h
register 1Ch, bits <4:0> = xxx00000 bin
register 1Dh, bits <4:0> = xxx00000 bin
register 1Eh, bits <4:0> = xxx00000 bin
  • Can you please share the graphical behavior of the acceleration output of your device?

-Eleon

View solution in original post

6 REPLIES 6
Eleon BORLINI
ST Employee

Hi @Pxiao.2​ ,

thank you for reporting the issue. May I ask you some further question to narrow down the problem, since it is not a know issue so far.

  • Are you facing the problem on more than 1 sensor, and on all 3 axis?
  • Are you testing the part in an oven, or with any tool that may vibrate, thus inducing a spurious vibration in the acquisition?
  • Are you compensating the sensitivity in temperature with a software algorithm? If so, please consider that the temperature conversion coming from embedded sensor has to be converted in physical units as shown below (source lis2ds12_reg.c:(
float_t lis2ds12_from_lsb_to_celsius(int16_t lsb)
{
  return (((float_t)lsb / 256.0f) + 25.0f);
}
  • If you did everything well, you could try to set these reserved register to 00h
register 1Ch, bits <4:0> = xxx00000 bin
register 1Dh, bits <4:0> = xxx00000 bin
register 1Eh, bits <4:0> = xxx00000 bin
  • Can you please share the graphical behavior of the acceleration output of your device?

-Eleon

Pxiao.2
Associate II

Dear sir,

       

      Thanks for your reply! Good news is that I've just solved the problem. Whereas, this three-dimensional acceleration chip LIS2DS12 indeed exists fatal defects, and this will affect all the sensors and all the 3 axis. The acceleration value will be affected when the value of the internal register 0x26 changes from 0x00 to 0xff.

Through the enumeration test of all registers, it is found that the data acquisition will be affected by the register 0x01. When the register is set to 0x01, the temperature will not be collected and the data will return to normal. Thank you again for your timely reply!

Hi @Pxiao.2​ ,

please note that the "0x00" level for the 0x26 register is 25°C, and that for lower temperature (such as 24°C) you have to convert in two's complement the register content (which will be something like 0xFx).

I confirm you that the reserved register 0x01 bit <0> has the following significance: ‘0’- logic, default; ‘1’-logic turn off temperature sensor.

-Eleon

Pxiao.2
Associate II

​Dear Sir,

    

        I've just tried your suggestion, and it indeed works very well. Could you please tell me your temperature compensating algorithm? Thank you very much!

The algorithm in production line is a linear compensation that minimize the offset at 25°C and the gain at two temperatures.

But the soldering process could cause some misalignment so there is the possibility to compensate temperature at application level according to the datasheet values:

0693W000003RwpcQAC.png

-Eleon

Pxiao.2
Associate II

I'm appreciate for your help! Thank you so much!