2022-11-23 11:32 PM
Hi,
I am working on the lis2dh12 interface to MCU and getting the data. The below observations I found in our device.
1. Getting x,y,z data
2. The current consumption is taking 120ua.
3. When I call the power down (Write LIS_CTRL_REG1, 0x00) it is carrying 10ua.
4. I am using an interrupt pin for fall alert purposes. When I use to declare an interrupt line and check the threshold impact current is too high. If I use power down (Write LIS_CTRL_REG1, 0x00) after reading and the next poll wakes up (Write LIS_CTRL_REG1, 0x47) then I lost my interrupt means didn't get interrupted yet at all. Without a power-down command (i.e Write LIS_CTRL_REG1, 0x47), a fall interrupt is coming.
How to handle and minimize my current. Please check my code flow defined all the registers and suggest me.
#define SLAVE_ADDRESS_I2C 0x19
fnAccel_Register_Write(LIS_CTRL_REG0, 0x10); // Disable the internal pull-up on the SDO/SA0 pin
fnAccel_Register_Write(LIS_CTRL_REG1, 0x47); // Enable X/Y/Z axes & ODR = 50Hz
fnAccel_Register_Write(LIS_CTRL_REG2, 0x00); // High-pass filter disabled
fnAccel_Register_Write(LIS_CTRL_REG3, 0x40); // Interrupt activity 1 driven to INT1 pad
fnAccel_Register_Write(LIS_CTRL_REG4, 0x10); //0x10=4g
fnAccel_Register_Write(LIS_CTRL_REG5, 0x08); // Interrupt 1 pin latched
fnAccel_Register_Write(LIS_INT1_THS, 0x15); // Threshold
fnAccel_Register_Write(LIS_INT1_DURATION, 0x10); // Duration time
fnAccel_Register_Write(LIS_INT1_CFG, 0x95); // Configure free-fall recognition
Our program sequence:
---------------------------------------------------------------------------------------------------------------------------------------
0. Write LIS_CTRL_REG0
1. Write LIS_CTRL_REG1
2. Write LIS_CTRL_REG2
3. Write LIS_CTRL_REG3
4. Write LIS_CTRL_REG4
5. Write LIS_CTRL_REG5
6. Write REFERENCE
7. Write LIS_INT1_THS
8. Write LIS_INT1_DURATION
9. Write LIS_INT1_CFG
10. Poll INT1 pad; if INT1 = 0 then go to fall detection code
11. Read INT1_SRC register
12. Go to 10
void fnLIS_PowerDown_Mode(void)
{
fnAccel_Register_Write(LIS_CTRL_REG1, 0x00);
}
void fnLIS_PowerOn_Mode(void)
{
fnAccel_Register_Write(LIS_CTRL_REG1, 0x47);
}
---------------------------------------------------------------------------------------------------------------------------------------
Please check the above flow and do the needful. What is the best power consumption using this sensor?
Regards,
Kumar
2022-11-28 08:27 AM
Hi ST Team,
No response from anyone. Why ST couldn't have responded to the questions immediately why this much delay?
Please go through my below concern and let us know your suggestions and support.
Regards,
Kumar