Datasheet
Preliminary Data Sheet
BMA400
Page 54 /
Confidential
BST-BMA400-DS000-00 | Version 0.1 | November 2017 Bosch Sensortec
© Bosch Sensortec GmbH reserves all rights even in the event of industrial property rights. We reserve all rights of disposal such as copying and passing on to third parties.
BOSCH and the symbol are registered trademarks of Robert Bosch GmbH, Germany.
Note: Specifications within this document are subject to change without notice.
4.7. Sensor Self-Test
The BMA400 has a comprehensive self test function for the MEMS element by applying electrostatic
forces to the sensor core instead of external accelerations. By actually deflecting the seismic mass,
the entire signal path of the sensor can be tested. Activating the self-test results in a static offset of
the acceleration data; any external acceleration or gravitational force applied to the sensor during
active self-test will be observed in the output as a superposition of both acceleration and self-
test signal.
Before the self-test is enabled the g-range should be set to 4g.
In order to ensure a proper interpretation of the self-test signal it is recommended to perform the self-
test for both (positive and negative) excitations: SELF_TEST.self_test_sign= b0, b1 and then to
calculate the difference of the resulting acceleration values. The table below shows the minimum
differences for each axis in order for the self test to pass. The actually measured signal differences
can be significantly larger.
Self-test: Resulting minimum difference signal for BMA400.
x-axis signal
y-axis signal
z-axis signal
BMA400
2000 mg
1800 mg
800 mg
It is recommended to perform a reset of the device after a self-test has been performed. If the reset
cannot be performed, the following sequence must be kept to prevent unwanted interrupt generation:
disable interrupts, change parameters of interrupts, wait for at least 50ms, and enable desired
interrupts.
The recommended self test procedure is as follows:
1. Disable all interrupts which could be triggered by self-test activity, this is no hard requirement
2. Enable accelerometer with OSR=3, normal mode.
3. Set ±4g range
4. Set ODR=100Hz, use acc_filt1 output
5. Wait for > 2 ms
6. Enable self-test for all axes and set positive self-test excitation (SELF_TEST.self_test_sign=
1b0, SELF_TEST.self_test_en_x/y/z = b1)
7. Wait for > 50ms
8. Read and store acceleration+ positive excitation values of each axis of interest
9. Change to negative excitation by setting negative self-test exciation
SELF_TEST.self_test_sign= b1
10. Wait for > 50ms
11. Read and store acceleration+negative excitation value of each axis of interest
12. Calculate difference of measured acceleration values from steps 8 and 11
13. Disable self-test for all axes: SELF_TEST.self_test_en_x/y/z = b0,
SELF_TEST.self_test_sign= 1b0
14. Wait 50ms before re-enabling interrupts
By subtracting values with both contain the acceleration part (gravity), what remains is the pseudo-
acceleration value caused by the self-test excitations.
Confidential and under NDA
Seeed Studio
Confidential and under NDA
Seeed Studio
Confidential and under NDA










