today I started a new project using the LIS2DH accelerometer (I2C mode). Previously I already used, very successfully, LIS3DH, always in I2C mode. Seeing the datasheets, in the basic functionatity, LIS2DH and LIS3DH are pratically the same object (the LIS3DH has just 3 extra ADC channels...): same registers, same setup and, theorically, same I2C Address, (0x18 when SA0 = 0, 0x19 when SA0 = 1). So, I was expect an easy porting of my code because, I repeat, theorically, LIS2DH and LIS3DH, are the same device. Theorically!
I don't know why, but using 0x18 (my SA0 is 0) the LIS2DH do not comunicates.
I was going crazy: I do three times a rework of the pcb (I was thinking that maybe the problem was the board): nothing, nothing and nothing.
So I had this idea: I checked all I2C's space address, from 0x00 to 0x7F. I got no response, as previously, at 0x18 but, incredible, I got a response at 0x29.
Mmmm...very strange but...Ok, I updated my .c library using this new address and...WOW, LIS2DH works!
But I still have a doubt: how is this possible??
The datasheet of LIS2DH no reports any errata about the I2C address...
NOTE: the I2C bus is shared whit a MS5803 barometric sensor, that correctly works with his address (0x77)