cancel
Showing results for 
Search instead for 
Did you mean: 

LIS2DH12 High Power consumption in normal power mode

Bilal Ahmad
Associate II
Posted on April 18, 2018 at 15:42

Hello,

Currently,  am working with  lis2dh12 mem sensor for my ble application. I am using accelerometer to detect movement and then reading data from accelerometer using bypass mode. During no movement, the power consumption reading of my device is 20 uA  with advertisement interval 4 sec while during movement it is 500 uA with advertisement interval 100 msec. 

I also did some measurement without accelerometer. So my current consumption for advertisement interval 4 sec is around 14 uA while at 100 msec it is around 180 uA.

I need to optimize my current consumption so I would like to enable fifo after movement is detected and hence reduce the usage of SPI.

My questions regarding this effort are

1) Can I have FIFO WTM interrupt on pin 2 and movement threshold on pin 1? If there is any online example of such scenario, kindly refer it to me.

2)  500 uA  is justifiable in bypass mode or there is some other problem?

Notes:

I have already changed my SPI MISO pin to NO PULL and hence that can not be the reason of high power consumption?

I have enabled high pass filter, sampling rate is 100 Hz, high resolution mode while movement and power mode is normal in movement.

4 REPLIES 4
Miroslav BATEK
ST Employee
Posted on April 19, 2018 at 09:33

1) It is not possible, but you can do it vice versa, INT1 for FIFO WTM and INT2 for threshold interrupt.

2) 500uA is too much. From you description it is not clear that 500uA is drawn only by the accelerometer. There could be additional current if SA0 pin is connected to GND caused by internal pull-up resistor. In this case you should disconnect the internal pull-up using CTRL_REG0 (1Eh) register.

Bilal Ahmad
Associate II
Posted on April 19, 2018 at 10:57

Thank You Miroslav B for your reply,

At  100 ms advertisement interval, my device consumes 170 uA with accelerometer disbaled and 500 uA with accelerometer enabled.

I am using SPI peripheral and therefore i2c is not enabled at all. Although, to be on the safe side I have disabled it and still same current consumption. 

Currently my register settings are as follows

 lis2dh12_set_mode(LIS2DH12_HIGH_RESOLUTION_MODE)  

lis2dh12_enable_axis(LIS2DH12_Z_EN_MASK | LIS2DH12_Y_EN_MASK | LIS2DH12_X_EN_MASK)

lis2dh12_set_data_rate(LIS2DH12_ODR_MASK_100HZ)

lis2dh12_write_reg2(0x09) // for High pass filter (I need to calculate speed)

lis2dh12_write_reg0(0x90) // to disconnect SDO pullup

lis2dh12_set_interrupts(LIS2DH12_I1_AOI)

lis2dh12_set_scale(LIS2DH12_SCALE2G)

lis2dh12_set_endian()

lis2dh12_set_latch()

lis2dh12_set_hlactive()

lis2dh12_set_int1_ths(configuration.interrupt1Threshold)

lis2dh12_set_int1_duration(0x00)

lis2dh12_set_int1_cfg(LIS2DH12_ZHIE_MASK | LIS2DH12_YHIE_MASK | LIS2DH12_XHIE_MASK)

lis2dh12_read_int1_src(ctrl1, 1)

Note:

Some steps already taken by me are as follows

1) Pullup is diconnected for interrupt pin using GPIOTE driver.

2) Pullup for MISO pin is disconnected.

My understanding is that the high current consumption during movement or high power mode is because of the spi peripherals. The reason why I am thinking this way is that SPI peripheral is running on high frequency clock. Can you tell me whether my observation is correct or not. How can I reduce this current consumption. One idea in my mind is enabling fifo after movement is detected and hence spi will be used less?

Bilal Ahmad
Associate II
Posted on April 19, 2018 at 12:39

Yes, I am using SPI mode 3 and SDO pullup disabled (can be seen in my register setting as well). I am polling the status register for new data as well.

I just wanted to know that how much should i expect my current consumption when my sensors are operating in high mode with 100 Hz sampling rate? 

Posted on April 19, 2018 at 11:41

Sure using FIFO will reduce number of SPI transaction and this current consumption, it is recommended for sure.

I suppose you are now polling the status register for new data, right? Are you using SPI MODE 3 ?

Please be aware that the SDO is driven by internal pull-up resistors when no communication is ongoing.