Problems interfacing with LIS2DE12 Accelerometer over I2C

Hi All,
I am currently working on a project where I want to interface with the LIS2DE12 accelerometer and an Arduino Mini Pro (16MHz) w/ ATmega 328 over I2C. I am using the STEVAL-MKI175V1 as an LIS2DE12 adapter board. The following pins are connected:

SCL to A5
SDA to A4
SDO to VCC (This sets the device address 0x19. Connecting it to GND would change the address)
CS to VCC (This enables I2C)
GND to GND
VDD_IO to VCC (I have also tried VD_IO to RAW)

I am not using pull resistors as the ATmega 328 has internal pull resistors. Is this setup correct? The board also has VDD is there any difference between VDD_IO in this context.

If wiring is not an issue, I have also included the code.

#include <Wire.h>
//Addresses for reading
#define LIS2DE12Address 0x19 //Device Address 
#define reader 0x33
#define writer 0x32
#define OUT_X_H 0x29 // X acceleration register
#define OUT_Y_H 0x2B
#define OUT_Z_H 0x2D
#define WHO_AM_I 0x0F

void setup() 
{    
  Wire.begin();   
  Serial.begin (115200);   
}

void getData(byte *a)
{
  Wire.beginTransmission(LIS2DE12Address); // Calling the sensor
  Wire.write(OUT_X_H);  // Moving Register pointer to OUT_X_H
  Wire.endTransmission(); // End
  Wire.requestFrom(LIS2DE12Address,1); //Request information I asked
  *a = Wire.read(); // Read and store data
}

void showData()
{
  byte aa;
  int b1 = 0;
  Serial.print(b1);
  getData(&aa);
  b1 = aa;
  Serial.println(b1);
  delay(500);
}

void loop() 
{
  showData();
}

The way I understand I2C works is as follows

  • Begin the I2C bus
  • Establish a connection between sensor an Arduino
  • Set the specific register where you want read data from
  • End transmission
  • Read the data

Is this correct?

Under this current configuration, I am reading “255” in the serial monitor which suggest that the SDA is set to high. However, I don’t think the “255” I am reading is coming from the sensor. In summary, I haven’t established communications between the accelerometer and the Arduino. How can I change my code and/or wiring to set communication?

If needed, this is the link to the accelerometer documentation.

Information on I2C is on page 25.

Cheers.

What voltage are you powering the chip?

Supply voltage on any pin should never exceed 4.8 V.

I have the Mini plugged to USB. VCC is supplying the input voltage. VCC is at about 5Vs. Does this mean I fried the board.

Did you have a interface board on it or did you just solder wires to the chip.
The datasheet says it's VCC should be 2.5V and a max of 3.6 (see page 11).
Read carefully page 14!

I used this board. Is it safe to say the accelerometer is permanently damaged?

That board can be used in the STEVAL-MKI109V3 and this has all the vcc rails @ 3.6 from the data sheet of the board which is in spec.
If your chip is damage, well it may be but it is not possible to me to say 100% sure it is.
See this it may give you a help

I have reduced the voltage to 2.5. What I find odd is that if the SCL and SDA are not plugged to the accelerometer, I see 255 in the serial monitor. Does this mean I have an issue with the code?