2021-07-22 02:36 AM
Hello, this project uses the LIS2DW12 to get interrupts from INT1 when activity is detected.
Vdd is 3.3V.
My goal is to minimize the power consumption when the accelerometer is idle. According to the datasheet.
The following commands are run at init.
if(lis2dw12_full_scale_set(&dev_ctx, LIS2DW12_2g))
return 1;
if(lis2dw12_power_mode_set(&dev_ctx, LIS2DW12_CONT_LOW_PWR_LOW_NOISE_12bit))
return 1;
if(lis2dw12_data_rate_set(&dev_ctx, LIS2DW12_XL_ODR_12Hz5))
return 1;
if(lis2dw12_filter_path_set(&dev_ctx, LIS2DW12_HIGH_PASS_ON_OUT))
return 1;
if(lis2dw12_wkup_dur_set(&dev_ctx, 0))
return 1;
After the application is done, the system is put to sleep along with the peripherals.
Without the LIS2DW12, the current is <10uA, however when the accelerometer is put to sleep, the current rises to 140uA. The code used to put the accelerometer to sleep is:
if(lis2dw12_data_rate_set(&dev_ctx, LIS2DW12_XL_ODR_OFF))
return 1;
This is quite high compared to the 2uA stated in the datasheet for the low power continuous mode, at 1.8V.
What am I required to do in order to reduce the current consumption to <10uA ?
2021-07-22 06:42 AM
Hi, this issue looks similar to this other question:
https://community.st.com/s/question/0D53W00000NUJcpSAH/lis2dw12-vddio-current-way-too-high
Maybe you can try to disconnect the SA0 pin, it looks there is an internal pullup and you tied it to GND.
Tom