Hi,
Thanks for your inquiry.
The issue comes from offset compensation and cross-axis sensitivity. If BMA253 Y axis is pointing to the sky or ground, then Y axis should be +1g or -1g respectively. You can run fast offset compensation and then store the offsets back to NVM. Then when you tilt BMA253 X axis or Z axis more than 45 degrees or +/-0.707g, the high-g interrupt should trigger. This process is so called inline calibration. Please see the attached PDF file for more information where you should set Y=+1g or -1g and X=Z=0g for fast offset compensation.
In addition, when you tilt your device's x or z axis, BMA253 X or Z axis may not be aligned with your device's x and z axis. This is so called cross-axis sensitivity or misalignment. The best way is to do 6-position BMA253 calibration and store total 12 parameters (3x3 sensitivity and cross-axis sensitivity matrix and 3 offsets) into your MCU's flash memory. Then you always need to read BMA253 raw data and apply the 12 calibration parameters to get final x/y/z values. Then you can calculate the tilt angle all the time to see if your device is really tilted more than 45 degrees on x and z axis.
The last reason is due to the BMA253 noise. you will not get the exact 45 degrees high-g interrupt. Instead, you will see a lot of interrupts at 45 degree tilt angle on and off. To avoid this situation, you should enable high-g hysteresis so that you won't get too many interrupts.
Thanks.
... View more