Reading I2C fails after some time


I am using pololu AltIMU v4 board connected to Telit module using I2C. The telit module reads the data of accelerometer through AT commands. I could read the data from I2C but after some time it stops. I started to read the FIFO status (2Fh). It is 00 all the time and suddenly changes to DF or FF and stops.

Here are the CTRL registers set.

CTRL0 (1Fh) – 40h
CTRL1 (20h) – 57h
CTRL2 (21h) – C0h
FIFO_CTRL(2Eh) – 5Fh



I am sorry you are getting that behavior. Can you tell me how are you supplying power to the AltIMU-10? What happens when you try to read some other registers (like the CTRL registers) after you stop getting data from the accelerometer?


Hi Jon,

We are powering up the board with a battery of 2.9V connected to the Vdd pin. All the three gnd are shorted (Telit, Pololu and the battery). We tried to read the CTRL1 register continuously once the data from accelerometer is stopped. But the values keep changing even though we set the CTRL1 register as 57h.

Let me explain you the accelerometer behaviour. We started printing all the 6 values of accelerometer. The data prints very fast for some time and then it slows down and then it either stops or gives values one after 3-4 attempts of reading. We even observed that the accelerometer values keep changing even if the position is unchanged.


What is the logic voltage of the Telit module, and how is it powered? The sensor should be provided with the controller’s logic voltage: on VIN if it is 5V, or on either VIN or VDD if it is 3.3V or below.

Separately, there will be some amount of noise on the raw outputs of the accelerometer. If you post a sample of the raw output you are getting, I can check to see if it is reasonable.


Hi Jon,

The logic voltage of Telit module is 3.6V and it is powered up with a 12V direct power. The board has some circuitry that takes care of voltage conversion. We now connected a battery of 2.9-3.2V to the Vdd pin of Pololu.

The control register values are
CTRL0 - 40h
CTRL1 - 57h
CTRL2 - C0h
I have attached the file of sample data of accelerometer. These are the values I obtained without changing the position of the board. Is there any calibration that need to be done and can we I have those details.

Accelerometer Sensor Values.txt (2.83 KB)

Those values seem reasonable to me. Do you have a particular reason to think there is a problem with them? We generally find that the accelerometer gives good results without calibration.

Also, if the Telit module makes a regulated 3.6V output available, it would be more appropriate to use that to power the AltIMU-10.

Hi Jon,

Sorry for the delay in the reply. With the configurations mentioned before what would be the expected data rate( how many bytes of data will accelerometer send). As we are reading the data after integrating with telit module we see very few data (12*6bytes) for a sec. (There is lot of process involved in reading one byte of data)


The read rate is entirely dependent on the controller (I2C master); without anything else indicating otherwise, it sounds like there might be a problem with the configuration or programming of your controller module. (If CTRL1 is 57h like you mentioned, the LSM303’s ODR should be 50Hz.)

If the problem is with the ODR of the LSM303D being too low, you would instead read repeated values (consecutive readings being the same because the sensor hasn’t taken a new measurement yet).