I'm using an ADXL362 accelerometer connected to an STM32L0 microcontroller to detect motion. The accelerometer is powered by a pin of the STM32L0 at 1.8V.
I'm able to configure the accelerometer in wakeup mode and 4g range and I read acceleration values for x, y, and z every second in the three 16-bit data registers. The values do change for every read however there are times (quite rare) when the accelerometer keeps returning the same (x,y,z) sample over and over as if it is stuck. I checked with a logic analyzer and verified that the ADXL362 actually sends data and that I'm not reading stale values in the MCU. When I read the POWER_CTL register I get 0xA, so the accelerometer is in measurement mode.
Has anyone seen this problem before?
I'm trying to recover from that situation by resetting the accelerometer. As specified in the datasheet I turn off the power to the ADXL and discharge the supplies completely before reapplying power. I then check I can communicate with the accelerometer by reading the DEVID_AD register and reconfigure the accelerometer with the same initial parameters.
I'm then able to read acceleration samples, the values change every second but they are wrong. With 4g range and the ADXL static on the table I'm normally reading -500 on the z axis, but I now read -950. I read back the registers to check the configuration, and I get POWER_CTL = 0xA and FILTER_CTL= 0x40, which is what I configured.
Am I missing something in the reset sequence? What else could I try to recover?