2024-11-27 12:18 PM
Hello,
We have implemented the LIS3DH with a nRF52832 in I2C mode on our board, and are using the accelerometer to detect motion and vibration events. The LIS3DH internal high-pass filter and threshold detection are used to generate the INT1 interrupt.
Our issue is as follows. We are observing an excess current draw of ~40uA in this state. Our evaluation has found the excess current to be associated with setting the INT1_CFG register value for interrupt generation. Attached are two charts showing 10 minute periods of idle current measurements of the whole PCBA, one with firmware built to set INT1_CFG=0x2A, the other with firmware built to set INT1_CFG=0x00, and otherwise the exact same code. The spikes in current can be ignored, those are BLE advertisement bursts. In neither case was the interrupt actually triggered.
LIS3DH registers are set as below, other than the changes noted above. Register writes occur in the order indicated. I have also attached a screenshot of the circuit.
CTRL0 = 0x90 // Ensure the SA0 PU is disabled. Would have been done at startup
FIFO_CTRL = 0x1F // Set FIFO to bypass to ensure a clean start
INT1_CFG = 0x2A
INT1_THS = 0x10
CTRL1 = 0x2F
CTRL2 = 0x81
CTRL3 = 0x40
CTRL4 = 0x00
CTRL5 = 0x48
CTRL6 = 0x00
FIFO_CTRL = 0x9F // Enable FIFO in stream mode
Can you identify anything we have implemented incorrectly, or help explain the current draw we are observing?
Thank you.