cancel
Showing results for 
Search instead for 
Did you mean: 

LIS3DSH Intermittent X,Y,Z Readings

Gacekky
Associate

I can write and read back all registers so everything seems to be fine with the SPI communications but I keep getting very odd readings on X, Y, and Z OUT registers. I'm following the simple setup in the application note, CTRL_REG4 = 0x67 and CTRL_REG3 = 0xC8.

I've tried polling status for a change in XYZDA (bit 3) and the stat register for the DRDY bit (bit 0). I've even tried using the DRDY pin with the same results.

When I leave any axis pointed down (or up) it will give me about 1g in all the directions but only for a short amount of time, then it randomly gives 0g for all axes. Sometimes I'll get 10 good readings and then some bad ones. Its like the reading cuts out and I get nothing.

Could this be a solder issue if I can read and write all other registers consistently? Or did I overheat the chip during soldering and break the MEMS portion? This has happened with 3 separate chips. All pins are connected as suggested in the datasheet.

2 REPLIES 2
Eleon BORLINI
ST Employee

Hi, you could check if it's a solder issue if you monitors with e.g. an oscilloscope or a pattern analyzer the data output. However, at which Vdd/VddIO and ODR are you working? And after the setup did you follow the instruction of the app note p12?

You could also try to set the BDU bit and check what happens (CTRL_REG4 = 0x6F). It is recommended in this case:

If the reading of the acceleration data is particularly slow and cannot be synchronized (or it is not required) with either the XYZDA bit in the STATUS register or with the DRDY signal, it is strongly recommended to set the BDU (block data update) bit to 1 in the CTRL_REG4 register. This feature avoids the reading of values (most significant and least significant parts of the acceleration data) related to different samples. In particular, when the BDU is activated, the data registers related to each channel always contain the most recent acceleration data produced by the device, but, if the reading of a given pair (i.e. OUT_X_H and OUT_X_L, OUT_Y_H and OUT_Y_L, OUT_Z_H and OUT_Z_L) is initiated, the refresh for that pair is blocked until both MSB and LSB parts of the data are read.

Regards

chaitanya chippada
Associate II

Hi,

This issue is solved, If it is solved, can you tell how it is solved,because I am also facing same issue.