Data sheet
BMX160
Small, low power 9-axis sensor
Bosch Sensortec
BMX160 – Data sheet
Document revision
1.2
Document release date
January 15th, 2019
Document number
BST-BMX160-DS000-11
Technical reference code(s)
0 273 141 190
Notes
Data and descriptions in this document are subject to change without notice.
Product photos and pictures are for illustration purposes only and may differ
from the real product appearance.
BMX160
Data sheet
Page 2
BMX160
Small, low power 9-axis sensor
The BMX160 is a highly integrated, low power 9-axis sensor that provides precise acceleration
and angular rate (gyroscopic) and geomagnetic measurement in each spatial direction.
The BMX160 integrates:
16 bit digital, triaxial accelerometer
16 bit digital, triaxial gyroscope
Geomagnetic sensor
Key features
High performance accelerometer and gyroscope, geomagnetic sensor
Very low power consumption: typ. 1585 µA in high performance mode
Android Marshmallow certified: significant motion, step detector / step counter (5 µA each)
Very small 2.5 x 3.0 mm2 footprint, height 0.95 mm
Built-in power management unit (PMU) for advanced power management
Power saving with fast start-up mode of gyroscope
Wide power supply range: 1.71 V … 3.6 V
Allocatable FIFO buffer of 1024 bytes
Hardware sensor time-stamps for accurate sensor data fusion
Integrated interrupts for enhanced autonomous motion detection
Flexible digital primary interface to connect to host over I2C or SPI
Extended I2C mode with clock frequencies up to 1 MHz
Typical applications
Virtual and augmented Reality
Indoor navigation
3D scanning / indoor mapping
Advanced gesture recognition
Immersive gaming
9-axis motion detection
Air mouse applications and pointers
Pedometer / step counting
Advanced system power management for mobile applications
Optical image stabilization of camera modules
Free-fall detection and warranty logging
Target Devices
Smart phones, tablet and transformer PCs
Game controllers, remote controls and pointing devices
Head tracking devices
Wearable devices, e.g. smart watches or augmented reality glasses
Sport and fitness devices
Cameras, camera modules
Toys, e.g. toy helicopters
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 3
General Description
The BMX160 is a 9-axis sensor consisting of a state-of-the-art 3-axis, low-g accelerometer, a low
power 3-axis gyroscope and a 3-axis geomagnetic sensor. It has been designed for low power,
high precision 9-axis applications in mobile phones, tablets, wearable devices, remote controls,
game controllers, head-mounted devices and toys. Due to the small form factor of the compact
14-pin 2.5 × 3.0 × 0.95 mm3 LGA package, BMX160 can be ideally integrated into wearables like
smart watches or glasses for augmented reality. When accelerometer and gyroscope are in full
operation mode and the geomagnetic sensor in normal mode, power consumption is typically
1465 µA, enabling always-on applications in battery driven devices. The BMX160 offers a wide
VDD voltage range from 1.71 V to 3.6 V and a VDDIO range from 1.2 V to 3.6 V, allowing the BMX160
to be powered at 1.8 V for both VDD and VDDIO.
Due to its built-in timing unit to synchronize the sensor data, BMX160 is ideally suited for
immersive gaming and navigation applications, which require highly accurate sensor data fusion.
The BMX160 provides high precision sensor data together with the accurate timing of the
corresponding data. The timestamps have a resolution of only 39 µs.
The integrated 1024 byte FIFO buffer supports low power applications and prevents data loss in
non-real-time systems. The intelligent FIFO architecture allows dynamic reallocation of FIFO
space for accelerometer, gyroscope and magnetometer, respectively. For typical 9-DoF
applications, this is sufficient for approx. 0.5 s of data capture.
Like its predecessors, the BMX160 features an on-chip interrupt engine enabling low-power
motion-based context awareness. Examples of interrupts that can be issued in a power efficient
manner are: any- or no-motion detection, tap or double tap sensing, orientation detection, freefall or shock events. The BMX160 is Android 6.0 (Marshmallow) certified, and in the
implementation of the Significant Motion and Step Detector interrupts, each consumes less than
30 µA.
The smart built-in power management unit (PMU) can be configured, for example, to further lower
the power consumption by automatically sending the gyroscope temporarily into fast start-up
mode and waking it up again by internally using the any-motion interrupt of the accelerometer. By
allowing longer sleep times of the host, the PMU contributes to significant further power saving
on system level.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 4
Index of Contents
1. SPECIFICATION ........................................................................................................................ 7
1.1 ELECTRICAL SPECIFICATION ................................................................................................ 7
1.2 ELECTRICAL AND PHYSICAL CHARACTERISTICS, MEASUREMENT PERFORMANCE .................... 8
1.3 ABSOLUTE MAXIMUM RATINGS .......................................................................................... 13
2. FUNCTIONAL DESCRIPTION ................................................................................................. 14
2.1 BLOCK DIAGRAM ............................................................................................................... 14
2.2 POWER MODES ................................................................................................................ 15
2.2.1 TRANSITIONS BETWEEN POWER MODES ........................................................................................ 16
2.2.2 PMU (POWER MANAGEMENT UNIT) .............................................................................................. 20
2.3 SENSOR TIMING AND DATA SYNCHRONIZATION ................................................................... 20
2.3.1 SENSOR TIME .............................................................................................................................. 20
2.3.2 DATA SYNCHRONIZATION ............................................................................................................. 21
2.4 DATA PROCESSING ........................................................................................................... 21
2.4.1 DATA PROCESSING ACCELEROMETER ........................................................................................... 22
2.4.2 DATA PROCESSING GYROSCOPE .................................................................................................. 23
2.4.3 DATA PROCESSING MAGNETOMETER ............................................................................................ 24
2.5 FIFO................................................................................................................................ 28
2.5.1 FIFO FRAMES ............................................................................................................................. 28
2.5.2 FIFO CONDITIONS AND DETAILS ................................................................................................... 32
2.6 INTERRUPT CONTROLLER .................................................................................................. 32
2.6.1 ANY-MOTION DETECTION (ACCEL) ................................................................................................ 33
2.6.2 SIGNIFICANT MOTION (ACCEL) ...................................................................................................... 34
2.6.3 STEP DETECTOR (ACCEL) ............................................................................................................ 35
2.6.4 TAP SENSING (ACCEL) ................................................................................................................. 36
2.6.5 ORIENTATION RECOGNITION (ACCEL) ........................................................................................... 37
2.6.6 FLAT DETECTION (ACCEL) ............................................................................................................ 43
2.6.7 LOW-G / FREE-FALL DETECTION (ACCEL)....................................................................................... 44
2.6.8 HIGH-G DETECTION (ACCEL) ........................................................................................................ 44
2.6.9 SLOW-MOTION ALERT / NO-MOTION INTERRUPT (ACCEL) .............................................................. 45
2.6.10 DATA READY DETECTION (ACCEL, GYRO AND MAG) .................................................................... 48
2.6.11 PMU TRIGGER (GYRO) .............................................................................................................. 48
2.6.12 FIFO INTERRUPTS (ACCEL, GYRO, AND MAG) ............................................................................. 48
2.7 STEP COUNTER ................................................................................................................ 49
2.8 DEVICE SELF-TEST ........................................................................................................... 49
2.8.1 SELF-TEST ACCELEROMETER ....................................................................................................... 49
2.8.2 SELF-TEST GYROSCOPE .............................................................................................................. 50
2.8.3 SELF-TEST MAGNETOMETER ........................................................................................................ 50
2.9 OFFSET COMPENSATION ................................................................................................... 52
2.9.1 FAST OFFSET COMPENSATION...................................................................................................... 52
2.9.2 MANUAL OFFSET COMPENSATION................................................................................................. 52
2.9.3 INLINE CALIBRATION ..................................................................................................................... 53
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 5
2.10 NON-VOLATILE MEMORY ................................................................................................. 53
2.11 REGISTER MAP ............................................................................................................... 54
2.11.1 REGISTER (0X00) CHIPID ......................................................................................................... 56
2.11.2 REGISTER (0X02) ERR_REG .................................................................................................... 56
2.11.3 REGISTER (0X03) PMU_STATUS ............................................................................................. 57
2.11.4 REGISTER (0X04-0X17) DATA ................................................................................................... 58
2.11.5 REGISTER (0X18-0X1A) SENSORTIME .................................................................................... 59
2.11.6 REGISTER (0X1B) STATUS ....................................................................................................... 60
2.11.7 REGISTER (0X1C-0X1F) INT_STATUS ..................................................................................... 60
2.11.8 REGISTER (0X20-0X21) TEMPERATURE ................................................................................. 62
2.11.9 REGISTER (0X22-0X23) FIFO_LENGTH ................................................................................... 63
2.11.10 REGISTER (0X24) FIFO_DATA ................................................................................................ 64
2.11.11 REGISTER (0X40) ACC_CONF ................................................................................................ 64
2.11.12 REGISTER (0X41) ACC_RANGE ............................................................................................. 65
2.11.13 REGISTER (0X42) GYR_CONF................................................................................................ 66
2.11.14 REGISTER (0X43) GYR_RANGE ............................................................................................. 67
2.11.15 REGISTER (0X44) MAG_CONF ............................................................................................... 67
2.11.16 REGISTER (0X45) FIFO_DOWNS ........................................................................................... 68
2.11.17 REGISTER (0X46-0X47) FIFO_CONFIG .................................................................................. 69
2.11.18 REGISTER (0X4C-0X4F) MAG_IF ............................................................................................ 70
2.11.19 REGISTER (0X50-0X52) INT_EN.............................................................................................. 71
2.11.20 REGISTER (0X53) INT_OUT_CTRL ......................................................................................... 72
2.11.21 REGISTER (0X54) INT_LATCH ................................................................................................ 73
2.11.22 REGISTER (0X55-0X57) INT_MAP ........................................................................................... 73
2.11.23 REGISTER (0X58-0X59) INT_DATA ......................................................................................... 75
2.11.24 REGISTER (0X5A-0X5E) INT_LOWHIGH ................................................................................ 76
2.11.25 REGISTER (0X5F-0X62) INT_MOTION .................................................................................... 78
2.11.26 REGISTER (0X63-0X64) INT_TAP............................................................................................ 80
2.11.27 REGISTER (0X65-0X66) INT_ORIENT ..................................................................................... 81
2.11.28 REGISTER (0X67-0X68) INT_FLAT .......................................................................................... 82
2.11.29 REGISTER (0X69) FOC_CONF ................................................................................................ 83
2.11.30 REGISTER (0X6A) CONF ......................................................................................................... 84
2.11.31 REGISTER (0X6B) IF_CONF .................................................................................................... 84
2.11.32 REGISTER (0X6C) PMU_TRIGGER ........................................................................................ 85
2.11.33 REGISTER (0X6D) SELF_TEST ............................................................................................... 86
2.11.34 REGISTER (0X70) NV_CONF .................................................................................................. 87
2.11.35 REGISTER (0X71-0X77) OFFSET ............................................................................................ 87
2.11.36 REGISTER (0X78-0X79) STEP_CNT........................................................................................ 88
2.11.37 REGISTER (0X7A-0X7B) STEP_CONF .................................................................................... 89
2.11.38 REGISTER (0X7E) CMD ........................................................................................................... 90
3. DIGITAL INTERFACES ............................................................................................................ 92
3.1 PROTOCOL SELECTION ..................................................................................................... 92
3.2 SPI INTERFACE................................................................................................................. 93
3.3 I2C INTERFACE ................................................................................................................. 96
3.4 SPI AND I²C ACCESS RESTRICTIONS................................................................................ 100
4. PIN-OUT AND CONNECTION DIAGRAMS .......................................................................... 101
4.1 PIN-OUT ......................................................................................................................... 101
4.2 CONNECTION DIAGRAMS ................................................................................................. 102
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 6
4.2.1 I2C ............................................................................................................................................ 102
4.2.2 SPI 3-WIRE................................................................................................................................ 103
4.2.3 SPI 4-WIRE................................................................................................................................ 104
5. PACKAGE .............................................................................................................................. 105
5.1 OUTLINE DIMENSIONS ..................................................................................................... 105
5.2 SENSING AXES ORIENTATION .......................................................................................... 105
5.3 LANDING PATTERN RECOMMENDATION ............................................................................ 106
5.4 MARKING........................................................................................................................ 108
5.4.1 MASS PRODUCTION MARKING .................................................................................................... 108
5.4.2 ENGINEERING SAMPLES ............................................................................................................. 108
5.5 SOLDERING GUIDELINES ................................................................................................. 109
5.6 HANDLING INSTRUCTIONS................................................................................................ 110
5.7 TAPE AND REEL SPECIFICATION....................................................................................... 110
5.7.1 ORIENTATION WITHIN THE REEL ................................................................................................. 111
5.8 ENVIRONMENTAL SAFETY ................................................................................................ 111
5.8.1 HALOGEN CONTENT ................................................................................................................... 111
5.8.2 MULTIPLE SOURCING ................................................................................................................. 111
6. LEGAL DISCLAIMER............................................................................................................. 112
6.1 ENGINEERING SAMPLES .................................................................................................. 112
6.2 PRODUCT USE ................................................................................................................ 112
6.3 APPLICATION EXAMPLES AND HINTS ................................................................................ 112
7. DOCUMENT HISTORY AND MODIFICATIONS ................................................................... 113
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 7
1. Specification
If not stated otherwise, the given values are over lifetime and full performance temperature and
voltage ranges, minimum/maximum values are ±3. The specifications are split into
accelerometer, gyroscope and geomagnetic sensor sections of the BMX160.
1.1 Electrical Specification
VDD and VDDIO can be ramped in arbitrary order without causing the device to consume
significant currents. The values of the voltage at VDD and the VDDIO pins can be chosen
arbitrarily within their respective limits. The device only operates within specifications if the both
voltages at VDD and VDDIO pins are within the specified range. The voltage levels at the digital
input pins must not fall below GNDIO-0.3V or go above VDDIO+0.3V to prevent excessive current
flowing into the respective input pin. BMX160 contains a brownout detector, which ensures
integrity of data in the non-volatile memory under all operating conditions.
Table 1: Electrical parameter specification
Parameter
Supply Voltage
Internal Domains
Supply Voltage
I/O Domain
Voltage Input
Low Level
Voltage Input
High Level
1
2
Max
Unit
1.71
3.0
3.6
V
VDDIO
1.2
2.4
3.6
V
0.3VDDIO
-
VIL,a
SPI
VIH,a
SPI
VOL,a
Voltage Output
High Level
VOH,a
Current
Consumption
at TA=25°C
Typ
VDD
Voltage Output
Low Level
Operating
Temperature
NVM Write-cycles
OPERATING CONDITIONS BMX160
Condition
Min
Symbol
IDD
-
VDDIO=1.62V, IOL=3mA, SPI
0.2VDDIO
-
VDDIO=1.2V, IOL=3mA, SPI
0.23VDDIO
-
VDDIO=1.62V, IOH=3mA, SPI
0.8VDDIO
-
VDDIO=1.2V, IOH=3mA, SPI
0.62VDDIO
-
TA
nNVM
0.7VDDIO
-40
Non-volatile memory
Gyro in fast start-up, accel
and mag in suspend mode,
TA=25°C
Gyro and accel and mag1
full operation mode
Gyro full operation mode,
accel and mag in suspend
Mag2 in regular preset,
ODR = 12.5Hz, gyro and
accel in suspend
+85
14
°C
Cycles
500
1585
µA
850
660
Geomagnetic in regular preset at ODR=12.5Hz, magnetometer interface in low power mode
Magnetometer interface in low power mode
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 8
Accel full operation mode,
gyro and mag in suspend
Gyro, accel and mag
in suspend mode, TA=25°C
Significant motion detector,
accel in low power mode
@50Hz, gyro and mag in
suspend
Step detector, accel in low
power mode @50Hz, gyro
and mag in suspend
180
4
30
30
1.2 Electrical and Physical Characteristics, Measurement Performance
Table 2: Electrical characteristics accelerometer
OPERATING CONDITIONS ACCELEROMETER
Parameter
Symbol
Condition
Min
gFS2g
Acceleration Range
gFS4g
gFS8g
Selectable
via serial digital
interface
gFS16g
Start-up Time
tA,su
Suspend/low power
mode to normal
mode, ODR=1.6kHz
Typ
Max
Units
±2
g
±4
g
±8
g
±16
g
3.2
ms
OUTPUT SIGNAL ACCELEROMETER
Parameter
Symbol
Condition
Min
Resolution
Sensitivity
Typ
Max
16
Units
bit
S2g
gFS2g, TA=25°C
15729
16384
17039
LSB/g
S4g
gFS4g, TA=25°C
7864
8192
8520
LSB/g
S8g
gFS8g, TA=25°C
3932
4096
4260
LSB/g
S16g
gFS16g, TA=25°C
1966
2048
2130
LSB/g
Sensitivity
Temperature Drift
TCSA
Sensitivity Change
over Supply
Voltage
SA,VDD
OffA, init
Zero-g Offset
OffA,board
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
gFS8g,
Nominal VDD supplies
best fit straight line
T =25°C,
A
VDD,min ≤ VDD ≤ VDD,max
best fit straight line
gFS8g, TA=25°C, nominal
VDD supplies, component
level
gFS8g, TA=25°C, nominal
VDD supplies, soldered,
board level
±0.03
%/K
0.01
%/V
±25
mg
±40
mg
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 preliminary and
subject to change without notice.
BMX160
Data sheet
OffA,MSL
OffA,life
Zero-g Offset
Temperature Drift
TCOA
Nonlinearity
NLA
Page 9
gFS8g, TA=25°C, nominal
VDD supplies, after MSL1prec. 3 / soldered
gFS8g, TA=25°C, nominal
VDD supplies, soldered,
over life time4
gFS8g,
Nominal VDD supplies
best fit straight line
±70
mg
±150
mg
±1.0
mg/K
Best fit straight line, gFS8g
±0.5
%FS
180
µg/Hz
1.8
mg-rms
gFS8g, TA=25°C, nominal
VDD, Normal mode
Filter setting 80 Hz, ODR
200 Hz
nA,nd
Output Noise
nA,rms
Cross Axis
Sensitivity
SA
Relative contribution
between any two of the
three axes
1
%
Alignment Error
EA
Relative to package
outline
±0.5
°
Output Data rate
(set of x,y,z rate)
Output Data rate
accuracy
(set of x,y,z rate)
ODRA
12.5
1600
Normal mode, over whole
operating temperature
range
AODRA
±1
Hz
%
Table 3: Electrical characteristics gyroscope
OPERATING CONDITIONS GYROSCOPE
Parameter
Symbol
Condition
Min
Typ
RFS125
Unit
125
°/s
250
°/s
500
°/s
RFS1000
1,000
°/s
RFS2000
2,000
°/s
RFS250
Range
Max
RFS500
Selectable
via serial digital interface
tG,su
Suspend to normal mode
ODRG=1600Hz
55
ms
tG,FS
Fast start-up to normal
mode
10
ms
Start-up Time
OUTPUT SIGNAL GYROSCOPE
Sensitivity
3
4
RFS2000
Ta=25°C
15.7
16.4
17.1
LSB/°/s
RFS1000
Ta=25°C
31.3
32.8
34.3
LSB/°/s
RFS500
Ta=25°C
62.6
65.6
68.6
LSB/°/s
RFS250
Ta=25°C
125.3
131.2
137.1
LSB/°/s
Values taken from qualification, according to JEDEC J-STD-020D.1
Values taken from qualification, according to JEDEC J-STD-020D.1
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
RFS125
Sensitivity Change
over Temperature
TCSG
Sensitivity Change
over Supply
Voltage
SG,VDD
Nonlinearity
Ta=25°C
A
VDD,min ≤ VDD ≤ VDD,max
best fit straight line
Off x
y and z
Zero-Rate Offset
Over Temperature
Off x, oT
y, oT and
z,oT
Zero-Rate Offset
Change over
Temperature
TCOG
Output Data Rate
(set of x,y,z rate)
Output Data rate
accuracy
(set of x,y,z rate)
Cross Axis
Sensitivity
262.4
274.2
LSB/°/s
±0.02
%/K
0.01
%/V
0.1
%FS
Best fit straight line
RFS1000, RFS2000
NLG
Zero-Rate Offset
Bias stability
250.6
RFS2000,
Nominal VDD supplies
best fit straight line
T =25°C,
Sensitivity to acceleration
stimuli in all three axis
(frequency 1.5V and
VDDIO>1.1V
from suspend to sleep
Typ
Max
Unit
±1150
µT
±2500
µT
1.0
ms
3.0
ms
Full linear measurement range considering sensor offsets
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 11
OUTPUT SIGNAL GEOMAGNETIC SENSOR
Parameter
Symbol
Condition
Device Resolution
Dres,m
TA=25°C
Gain Error6
Gerr,m
Sensitivity
Temperature Drift
TCSm
Zero-B Offset
OFFm
Zero-B Offset
Magnetometer
Heading
Accuracy8
ODR (Output
Data Rate),
Forced Mode9
Full-scale
Nonlinearity
Min
Typ
Max
Unit
0.3
µT
±2
%
±0.01
%/K
TA=25°C
±40
µT
OFFm,cal
After software calibration with
Bosch Sensortec eCompass
software7
-40°C ≤ TA ≤ +85°C
±2
µT
Acheading
30µT horizontal
geomagnetic field
component, TA=25°C
odrlp
Low power preset
odrrg
Regular preset
odreh
Enhanced regular preset
odrha
High accuracy preset
NLm, FS
best fit straight line
nrms,lp,m,xy
Low power preset
x, y-axis, TA=25°C
Nominal VDD supplies
1.0
µT
nrms,lp,m,z
Low power preset
z-axis, TA=25°C
Nominal VDD supplies
1.4
µT
nrms,rg,m
Regular preset
TA=25°C
Nominal VDD supplies
0.6
µT
nrms,eh,m
Enhanced regular preset
TA=25°C
Nominal VDD supplies
0.5
µT
After API compensation
TA=25°C
Nominal VDD supplies
After API compensation
-40°C ≤ TA ≤ +85°C
Nominal VDD supplies
Output Noise
±2.5
deg
Hz
Hz
12.5
Hz
Hz
1
%FS
6
Definition: gain error = ( (measured field after API compensation) / (applied field) ) - 1
Magnetic zero-B offset assuming calibration with Bosch Sensortec sensor fusion software.
Typical value after applying calibration movements containing various device orientations (typical
device usage)
8
The heading accuracy depends on hardware and software. A fully calibrated sensor and ideal
tilt compensation are assumed
9
The geomagnetic sensor is operated in the forced mode. The recommended ODR in this mode
for all presets is 12.5Hz. For more details on according current consumptions and noise figures.
Pls. refer to Table 11 in chapter 2.2.1.2.
7
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Power Supply
Rejection Rate
Page 12
nrms,ha,m
High accuracy preset
TA=25°C
Nominal VDD supplies
0.3
µT
PSRRm
TA=25°C
Nominal VDD supplies
±0.5
µT/V
Table 5: Electrical characteristics temperature sensor
OPERATING CONDITIONS AND OUTPUT SIGNAL OF TEMPERATURE SENSOR
Parameter
Symbol
Temperature Sensor
Measurement Range
TS
Condition
Min
Typ
-40
Max
Unit
85
°C
Temperature
Sensor Slope
dTS
0.002
K/LSB
Temperature
Sensor Offset
OTS
±2
K
Accelerometer on or gyro
in fast start-up
0.8
Hz
Gyro active
100
Hz
Accelerometer on or gyro
in fast start-up
8
bit
Gyro active
16
bit
Output Data Rate
Resolution
ODRT
nT
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 13
1.3 Absolute Maximum Ratings
Table 6: Absolute maximum ratings
Parameter
Condition
Min
Max
Units
VDD Pin
-0.3
4.0
V
VDDIO Pin
-0.3
4.0
V
Voltage at any Logic Pin
Non-Supply Pin
-0.3
VDDIO+0.3
V
Passive Storage Temp. Range
≤65% rel. H.
-50
+150
°C
None-Volatile Memory (NVM)
Data Retention
T = 85°C,
after 15 cycles
10
Voltage at Supply Pin
Mechanical Shock
ESD
Magnetic Field
years
Duration 200 µs, half
sine
10,000
g
Duration 1.0 ms, half
sine
2,000
g
Free fall
onto hard surfaces
1.8
m
HBM, at any Pin
2
kV
CDM
500
V
MM
200
V
Any direction
7
T
Note: Stresses above these listed maximum ratings may cause permanent damage to the device.
Exposure beyond specified electrical characteristics as specified in Table 1 may affect device
reliability or cause malfunction.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 14
2. Functional Description
2.1 Block Diagram
The figure below depicts the dataflow in BMX160 and the configuration parameters for data rates:
SENSORTIME
Accel
ADC
select
Gyro
SENSOR DATA
AND SENSORTIME
REGISTER
DIGITAL SIGNAL
CONDITIONING
ADC
FIFO ENGINE
INTERRUPT ENGI NE
Magnet
SPI / I2C
Magnet
Interface
INT1, INT2
PRIMARY
DIGITAL
INTERFACE
LEGACY INTERRUPTS
ADC
RAW DATA
ST EP DETECTOR
SIGNIFICANT MOTION
INTERRUPTS
Step Counter
Figure 1: Block diagram of data flow
The pre-filtered input data may be already temperature compensated or other low level correction
operations may be applied to them.
The data from the sensor are always sampled with a data rate of 6400 Hz for the gyroscope and
1600 Hz for the accelerometer. The data are filtered to an output data rate configured in the
Register (0x40) ACC_CONF and Register (0x42) GYR_CONF for accelerometer and gyroscope,
respectively. The data processing implements a low pass filter configured in the Register (0x40)
ACC_CONF and Register (0x42) GYR_CONF for accelerometer and gyroscope, respectively. In
addition further down sampling for the interrupt engines and the FIFO is possible and configured
in the Register (0x45) FIFO_DOWNS. This down sampling discards data frames.
The data from the magnetometer are handled in a different way with respect to the accelerometer
or gyroscope data. The magnetometer interface within BMX160 will periodically trigger
measurements (force mode) of the magnetometer to sample data. The output data rate is
configured in the Register (0x44) MAG_CONF. Balance between output noise and active time
(hence power consumption) can be adjusted by the repetition settings for x/y-axis and z-axis
through the magnetometer interface manual mode, see section 2.2.1.2.
The BMX160 allows the configuration of the magnetometer interface directly through the registers
in Register (0x4C-0x4F) MAG_IF. Further necessary configuration of the magnetometer itself
must be done through indirect access. The details are explained in section 2.4.3.1.
The sensor time is synchronized with the update of the data register.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 15
2.2 Power Modes
By default BMX160 accelerometer, gyroscope, magnetometer and magnetometer interface are
in suspend mode after powering up the device. As mentioned in section 2.1, the data from the
magnetometer are handled and configured in a different way compared to the accelerometer or
gyroscope data. As a result, magnetometer and magnetometer interface have separate power
modes.
The device is powering up in less than 10 ms. In the following sections, the power modes for
accelerometer, gyroscope, magnetometer and magnetometer interface are described.
Table 7: Power modes of accel, gyro, mag_if and mag in BMX160
full operation
mode
Sleep modes
Low power
modes
Accelerometer
Gyroscope
Magnetometer
Interface
Normal
mode
Fast Startup mode
Suspend
mode
Low power
mode
Magnetometer
Force mode
Suspend
Force mode
Suspend and fast start-up modes are sleep modes. Switching between normal and low power
mode will not impact the output data from the sensor. This allows the system to switch from low
power mode to normal mode to read out the sensor data in the FIFO with a data rate limited by
the serial interface.
When all sensors are in suspend or low power mode, burst writes are not supported, normal
writes need wait times after the write command is issued (~400 µs), and burst reads are not
supported on Register (0x24) FIFO_DATA. If all sensors (accelerometer, gyroscope or
magnetometer) are in either suspend or low power mode, the FIFO must not be read.
Accelerometer
Normal mode: Full chip operation
Low power mode: Duty-cycling between suspend and normal mode. FIFO data readout
are supported in lower power mode to a limited extent, see Register (0x03) PMU_STATUS
Suspend mode: No sampling takes place, all data is retained, and delays between
subsequent I2C operations are allowed. Sensors are powered off but the digital circuitry
is still active
Gyroscope
Normal mode: Same as accelerometer
Suspend mode: Same as accelerometer
Fast start-up mode: In fast start-up mode the sensing analog part is powered down,
while the drive and the digital part remain largely operational. No data acquisition is
performed. The latest data rate and the content of all configuration registers are kept.
The fast start-up mode allows a fast transition (≤10 ms) into normal mode (and low
power mode for magnetometer) while keeping power consumption significantly lower
than in normal and low power mode
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 16
Magnetometer Interface
Low power mode: 1) In setup mode*: It allows the user to configure the magnetometer
using indirect addressing; 2) In data mode*: It triggers the magnetometer force mode
periodically. FIFO data readout are supported in low power mode to a limited extent, see
Register (0x03) PMU_STATUS
Normal mode: Similar to low power mode but FIFO data readout are supported
Suspend mode: Neither magnetometer configuration nor triggering of magnetometer
force mode take place
* Note: Setup mode and data mode are two basic configurations of the magnetometer interface,
see section 2.4.3.1.
Magnetometer
Force mode: Selected magnetometer channels are measured according to data
acquisition presets described in section 2.2.1.2 and then the magnetometer goes to sleep
mode. This design assures an optimized power consumption
Sleep mode: Force mode can be triggered. All the magnetometer data acquisition presets
remain. Magnetometer can only be indirectly configured via magnetometer interface when
it is in sleep mode
Suspend mode: No force mode can be triggered. All the data acquisition presets will be
cleared and no magnetometer configuration can be done. From suspend mode,
magnetometer must be put into sleep mode first, and then the data acquisition presets
can be configured.
It is mandatory to put magnetometer into suspend mode before putting
magnetometer interface into suspend mode.
2.2.1 Transitions between Power Modes
Accelerometer and Gyroscope Power Modes
The table below for the power modes of gyroscope and accelerometer shows which power mode
combinations are supported by BMX160.
With regard to the below diagram, transitions between power modes are only allowed in horizontal
or vertical direction. Transitions in diagonal direction are not supported.
Table 8: Typical total current consumption in µA according to accel/gyro modes
Typical current consumption in µA 10
(geomagnetic sensor in suspend mode)
Gyroscope
Mode
10
Accelerometer Mode
Suspend
Normal
Low Power
Suspend
3
180
See Table 9
Fast Start-up
500
580
n.a.
Normal
850
925
n.a.
Preliminary values to be updated.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 17
The power mode setting can be configured independently from the output data rate set. The main
difference between normal and low power mode is the power consumption as shown in the figure
below. If the sleep time between two configured sampling intervals becomes too short to duty
cycle between suspend and normal mode, the accelerometer stays automatically in normal mode.
In order to make the transition between low power and normal mode as transparent as possible,
an undersampling mode is defined in such a way that it mimics the behavior of the lower data rate
in low power mode in normal mode. The low power mode then only switches clock sources.
Figure 2: Low power and normal mode operation
2.2.1.1.1 Low Power Mode of Accelerometer
In low power modes the accelerometer toggles between normal mode and suspend mode. The
power consumption is given by the power consumption in normal mode times the fraction of time
the sensor is in normal mode. The time in normal mode is defined by the startup time of the MEMS
element, plus the analogue settling time. This results in a minimum time in normal mode of the
settling time plus (averaged samples)/1600 Hz.
Regarding register read and write operations, the note in section 0 applies.
2.2.1.1.2 Power Consumption of Accelerometer in Low Power Mode
When accelerometer and gyroscope are operated in normal mode, there is no significant
dependence on the specific settings like ODR, undersampling and bandwidth. The same applies
to the fast power up mode of the gyroscope. If the accelerometer, however, is operated in low
power mode and undersampling is enabled, the power consumption of it depends on the two
parameters ODR and number of averaging cycles.
In low power mode (gyroscope in suspend), the actual power consumption depends on the
selected setting in Register (0x40) ACC_CONF.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 18
Table 9: Typical total current consumption in µA according to number of averaging cycles and
accelerometer ODR settings (gyroscope in suspend mode and accelerometer in low power
mode and undersampling)
Typical current consumption in µA 11
ODR
of accelerometer
in low power mode
[Hz]
(gyroscope,
magnetometer
and
magnetometer
interface are in suspend
mode)
0.7812
5
1.5625
AVG – number of averaging cycles
1
3
2
3
4
4
8
4
16
5
32
6
64
9
128
14
4
4
4
5
6
9
14
25
3.125
4
5
5
7
9
15
25
46
6.25
6
6
8
10
16
26
47
90
12.5
8
10
12
18
28
49
92
n. m.*
25
14
17
22
32
54
96
104
50
25
30
41
62
100
46
57
78
121
200
90
111
154
400
172
172
normal mode*
normal mode*
normal mode*
normal mode*
normal mode*
800
normal mode*
1600
normal mode*
* Note: Those combinations are not available in low-power mode. Switching to normal power
mode is required to for these combinations .
2.2.1.1.3 Noise of Accelerometer in Low Power Mode
When acc_us=1, accelerometer is in undersampling mode. The noise is only depending on the
number of averaging cycles.
Table 10: Accel noise in mg according to averaging with undersampling (range +/- 8g)
AVG – number of averaging cycles
1
2
4
8
16
32
64
128
RMS-noise (typ.) [mg]
4.3
3.5
3.0
2.0
1.5
1.1
0.7
0.5
Magnetometer Modes
When the force mode of magnetometer is triggered by magnetometer interface at a defined ODR,
desired balance between output noise and active time (hence power consumption) can be
adjusted. There are four recommended presets (High accuracy preset, Enhanced regular preset,
Regular preset, Low power preset) which reflect the most common usage scenarios, i.e. required
output accuracy at a given current consumption of the magnetometer.
The four presets are automatically set by the BMX160 API or driver provided by Bosch Sensortec
when a preset is selected. The following table shows the recommended presets, the resulting
magnetic field output noise and current consumption:
11
Values are to be updated
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 19
Table 11: Recommended presets for repetitions and output data rates
Preset
Low Power
Preset
Regular Preset
Enhanced
Regular Preset
High
AccuracyPreset
Recommended
ODR [Hz]
Max ODR
fmax,ODR
[Hz]
RMS noise
x/y/z [µT]
Average current consumption
at recommended ODR [mA]
(mag_if in low power mode)
12.5
200
1.0/1.0/1.4
0.28
12.5
100
0.6/0.6/0.6
0.66
12.5
50
0.5/0.5/0.5
1.06
12.5
12.5
0.3/0.3/0.3
3.00
2.2.2 PMU (Power Management Unit)
The integrated PMU (Power Management Unit) allows advanced power management features by
combining power management features of all built-in sensors and externally available wake-up
devices. See section 2.6.11, PMU Trigger (Gyro).
Automatic Gyroscope Power Mode Changes
To further lower the power consumption, the gyroscope may be configured to be temporarily put
into sleep mode, which is in BMX160 configurable as suspend or fast-start-up mode, when no
motion is detected by the accelerometer. This mode benefits from the accelerometer any-motion
and nomotion interrupt that is used to control the power state of the gyroscope. To configure this
feature Register (0x6C) PMU_TRIGGER is used.
Power Management of the Magnetometer
The PMU allows advanced power management with the magnetometer. To put the magnetometer
into suspend mode, magnetometer interface manual mode is required, see detail information in
section 2.4.3.1.1. Set the magnetometer interface after that to suspend mode using the
mag_set_pmu_mode command in the Register (0x7E) CMD. Changing the magnetometer
interface power mode to suspend does not imply any mode change in the magnetometer.
Configuration example can be found in section 2.4.3.1.3.
2.3 Sensor Timing and Data Synchronization
2.3.1 Sensor Time
The Register (0x18-0x1A) SENSORTIME is a free running counter, which increments with a
resolution of 39 µs. All sensor events e.g. updates of data registers are synchronous to this
register as defined in the table below. With every update of the data register or the FIFO, a bit m
in the Register (0x18-0x1A) SENSORTIME toggles where m depends on the output data rate for
the data register and the output data rate and the FIFO down sampling rate for the FIFO. The
table below shows which bit toggles for which update rate of data register and FIFO. The time
stamps in Register (0x18-0x1A) SENSORTIME are available independent of the power mode the
device is in.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 20
Table 12: Sensor time
Bit m in sensor_time
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Resolution [ms]
0.039
0.078
0.156
0.3125
0.625
1.25
2.5
5
10
20
40
80
160
320
640
1280
2560
5120
10240
20480
40960
81920
163840
327680
Update rate [Hz]
25641
12820
6400
3200
1600
800
400
200
100
50
25
12.5
6.25
3.125
1.56
0.78
0.39
0.20
0.10
0.049
0.024
0.012
0.0061
0.0031
2.3.2 Data Synchronization
The sensor data from accelerometer and gyroscope are strictly synchronized on hardware level,
i.e. they run on exactly the same sampling rate. The magnetometer is also synchronized with
accelerometer and gyroscope by taking acquisition time and the magnetometer interface into
account.
BMX160 supports various level of data synchronization:
Internal hardware synchronization of accelerometer, gyroscope and magnetometer data
High precision synchronization of sensor data through hardware timestamps. The
hardware timestamp resolution is 39 µs
Hardware synchronization of the data of accelerometer, gyroscope and magnetometer
through a unique DRDY interrupt signal
FIFO entries of the accelerometer, gyroscope and magnetometer are already
synchronized by hardware. The according time stamp can be provided with each full FIFO
read
2.4 Data Processing
The accelerometer digital filter can be configured through the parameters: acc_bwp, acc_odr and
acc_us. The gyroscope digital filter can be configured through the parameters: gyr_bwp and
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 21
gyr_odr. There is no undersampling parameter for the gyroscope. For the magnetometer, the
output data rate can be set in the 2.11.15Register (0x44) MAG_CONF through the parameter
mag_odr. For magnetometer preset configuration, indirect addressing is used (see details about
this addressing in Section 2.4.3.1).
Note:
Illegal settings in configuration registers will result in an error code in the Register (0x02)
ERR_REG. The content of the data register is undefined, and if the FIFO is used, it may contain
no value.
2.4.1 Data Processing Accelerometer
The accelerometer digital filter can be configured through the parameters: acc_bwp, acc_odr and
acc_us in Register (0x40) ACC_CONF for the accelerometer. The accelerometer data can only
be processed in normal power mode or in low power mode.
Accelerometer data processing for normal power mode
When normal power mode is used, the undersampling mode should be disabled (acc_us= 0b0).
In this configuration mode, the accelerometer data is sampled at equidistant points in the time,
defined by the accelerometer output data rate parameter (acc_odr). The output data rate can be
configured in one of eight different valid ODR configurations going from 12.5 Hz up to 1600 Hz.
Note: Lower ODR values than 12.5 Hz are not allowed when undersampling mode is not enabled.
If they are used they result in an error code in Register (0x02) ERR_REG.
When acc_us= 0b0, the acc_bwp parameter needs to be set to 0b010 (normal mode).
The filter bandwidth shows a 3 dB cutoff frequency shown in the following table:
Table 13: 3 dB cutoff frequency of the accelerometer according to ODR with normal filter mode
Accelerometer ODR [Hz]
3 dB Cutoff frequency [Hz]
12,5
25
50
100
200
5.06
10.12
20.25
40.5
80
400
162
800
324
1600
684
(155 for
Z axis)
(262 for
Z axis)
(353 for
Z axis)
The noise is also depending on the filter settings and ODR, see table below.
Table 14: Accelerometer noise in mg according to ODR with normal filter mode (range +/- 8g)
ODR in Hz
25
50
100
200
400
800
1600
RMS-Noise (typ.) [mg]
0.6
0.7
1.0
1.5
2.2
2.8
4.3
When the filter mode is set to OSR2 (acc_bwp= 0b001 and acc_us= 0b0), both stages of the
digital filter are used and the data is oversampled with an oversampling rate of 2. That means that
for a certain filter configuration, the ODR has to be 2 times higher than in the normal filter mode.
Conversely, for a certain filter configuration, the filter bandwidth will be the half of the bandwidth
achieved for the same ODR in the normal filter mode. For example, for ODR= 50 Hz the 3 dB
cutoff frequency is 10.12 Hz.
When the filter mode is set to OSR4 (acc_bwp= 0b000 and acc_us= 0b0), both stages of the
digital filter are used and the data is oversampled with an oversampling rate of 4. That means that
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 22
for a certain filter configuration, the ODR has to be 4 times higher than in the normal filter mode.
Conversely, for a certain filter configuration, the filter bandwidth will be 4 times smaller than the
bandwidth achieved for the same ODR in the normal filter mode. For example, for ODR= 50 Hz
the 3 dB cutoff frequency is 5.06 Hz.
Accelerometer data processing for low power mode
When low power mode is used, the undersampling mode must be enabled (acc_us= 0b1). In this
configuration mode, the accelerometer regularly changes between a suspend power mode phase
where no measurement is performed and a normal power mode phase, where data is acquired.
The period of the duty cycle for changing between suspend and normal mode will be determined
by the output data rate (acc_odr). The output data rate can be configured in one of 12 different
valid ODR configurations going from 0.78 Hz up to 1600 Hz.
The samples acquired during the normal mode phase will be averaged and the result will be the
output data. The number of averaged samples can be determined by the parameter acc_bwp
through the following formula:
averaged samples = 2(Val(acc_bwp))
skipped samples = (1600/ODR)-averaged samples
A higher number of averaged samples will result in a lower noise level of the signal, but since the
normal power mode phase is increased, the power consumption will also rise. This relationship
can be observed in section 2.2.1.1.2.
Note: When undersampling (acc_us=0b1 in Register (0x40) ACC_CONF) and the use of prefiltered data for interrupts or FIFO is configured an error code is flagged in Register (0x02)
ERR_REG. Pre-filtered data for interrupts are configured through int_motion_src= 0b1 or
int_tap_src= 0b1 in Register (0x58-0x59) INT_DATA. Pre-filtered data for the FIFO are configured
through acc_fifo_filt_data= 0b0 in Register (0x45) FIFO_DOWNS.
2.4.2 Data Processing Gyroscope
The gyroscope digital filter can be configured through the parameters: gyr_bwp and gyr_odr in
GYR_CONF for the gyroscope. There is no undersampling option for the gyroscope data
processing. The gyroscope data can only be processed in normal power mode.
There are three data processing modes defined by gyr_bwp. Normal mode, OSR2, OSR4. For
details see chapter 2.11.13.
Gyroscope data processing for normal power mode
When the filter mode is set to normal (gyr_bwp= 0b010), the gyroscope data is sampled at
equidistant points in the time, defined by the gyroscope output data rate parameter (gyr_odr). The
output data rate can be configured in one of eight different valid ODR configurations going from
25 Hz up to 3200 Hz.
Note: Lower ODR values than 25 Hz are not allowed. If they are used, they result in an error code
in Register (0x02) ERR_REG.
The filter bandwidth as configured by gyr_odr shows a 3 dB cutoff frequency shown in the
following table:
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 23
Table 15: 3 dB cutoff frequency of the gyroscope according to ODR with normal filter mode
Gyroscope ODR [Hz]
25
3 dB Cutoff frequency [Hz]
10.7
50
20.8
100
39.9
200
74.6
400
136.6
800
254.6
1600
523.9
3200
890
When the filter mode is set to OSR2 (gyr_bwp= 0b001), both stages of the digital filter are used
and the data is oversampled with an oversampling rate of 2. That means that for a certain filter
configuration, the ODR has to be 2 times higher than in the normal filter mode. Conversely, for a
certain filter configuration, the filter bandwidth will be the approximately half of the bandwidth
achieved for the same ODR in the normal filter mode. For example, for ODR= 50 Hz the 3 dB
cutoff frequency is 10.12 Hz.
When the filter mode is set to OSR4 (gyr_bwp= 0b000), both stages of the digital filter are used
and the data is oversampled with an oversampling rate of 4. That means that for a certain filter
configuration, the ODR has to be 4 times higher than in the normal filter mode. Conversely, for a
certain filter configuration, the filter bandwidth will be approximately 4 times smaller than the
bandwidth achieved for the same ODR in the normal filter mode. For example, for ODR= 50 Hz
the 3 dB cutoff frequency is 5.06 Hz.
Note: The gyroscope does not feature a low power mode. Therefore, there is also no
undersampling mode for the gyroscope data processing.
2.4.3 Data Processing Magnetometer
The sensor data from magnetometer of BMX160 is stored in the data registers (per default) or
can be made available in the FIFO (see Register (0x46-0x47) FIFO_CONFIG). In BMX160, the
initial setup of the magnetometer after power-on is done through indirect addressing. From a
system perspective the initialization for magnetometer should be possible within 100 ms.
The magnetometer interface of BMX160 is optimized to synchronize sensor data from the
magnetometer and the IMU. This improves the quality of sensor data fusion.
Magnetometer Interface
When the magnetometer interface is in low power mode or normal mode, two basis configurations
are provided by setting the Register (0x4C-0x4F) MAG_IF: Setup mode and Data mode. The
configuration examples of magnetometer and magnetometer interface is given in section
2.4.3.1.3.
2.4.3.1.1 Setup Mode
In setup mode (also manual mode), the application processor can access every register of the
magnetometer through indirect addressing. This mode is usually used to configure the
magnetometer and the way the magnetometer interface reads the data. The Setup mode has to
be executed after each POR (power on reset) previous to the first data acquisition in Data mode,
see section 2.5.2.
The setup mode is enabled by setting the MAG_IF[0] = 1. The magnetometer may be
accessed through the primary interface using indirect addressing. MAG_IF[1] defines the first
address of the register to read (MAG_IF[2] define the address for write access) in the
magnetometer register map and triggers the operation itself, when the magnetometer interface is
in low power mode or normal mode.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 24
For reads, the number of data bytes defined in mag_rd_burst in register MAG_IF[0] are read
from the magnetometer and written into the MAG_[X-Z] and RHALL fields of the register DATA.
For write accesses, no burst write is supported, independent of the settings in mag_rd_burst in
Register (0x4C-0x4F) MAG_IF.
When a read or write operation is triggered by writing to MAG_IF[1] or MAG_IF[2], a bit indicator
mag_man_op in
Register (0x1B) STATUS is set and when the operation is completed it is automatically reset.
The time delay between triggering a magnetometer measurement and reading the measured data
is specified in mag_offset in MAG_IF[0].
The data rate used for the autonomous reading of the magnetometer data in Data mode should
be first specified by configuring the mag_odr in Register (0x44) MAG_CONF.
For a read access:
Write magnetometer register address to read from into Register (0x4D) MAG_IF[1]
Read
Register (0x1B) STATUS until the bit mag_man_op is “0”
Read Register (0x04-0x0B) DATA_0 to DATA_7, get the data from magnetometer
For a write access:
Write the write data into Register (0x4F) MAG_IF[3]
Write magnetometer register address to write into Register (0x4E) MAG_IF[2]
Read
Register (0x1B) STATUS until the bit mag_man_op is “0” to confirm the write access
has been completed
Before changing from Setup mode to Data mode, set register MAG_IF[1-3] to the following values:
Register
MAG_IF[3]
MAG_IF[2]
MAG_IF[1]
Value
0x02
0x4C
0x42
2.4.3.1.2 Data Mode
The data mode is enabled by setting the MAG_IF_1= 0. When data mode is enabled and
magnetometer interface is in low power mode or normal mode, the force mode of the
magnetometer is autonomously triggered. Data ready status is set via drdy_mag in
Register (0x1B) STATUS, but this operation never clears drdy_mag, it is typically cleared through
reading the Register (0x04-0x17) DATA. If DRDY is not active the error bit mag_drdy_err in
Register (0x02) ERR_REG is set.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 25
2.4.3.1.3 Configuration Examples
Table 16: Process to initialize magnetometer to low power preset at 12.5 Hz and enable
magnetometer interface data mode
Operation
Register
Address
0x7E
Data
Comment
CMD
0x19
650µs
0x4C
MAG_IF[0]
0x80
Write
Write
Write
Write
0x4F
0x4E
0x4F
0x4E
MAG_IF[3]
MAG_IF[2]
MAG_IF[3]
MAG_IF[2]
0x01
0x4B
0x01
0x51
Write
Write
0x4F
0x4E
MAG_IF[3]
MAG_IF[2]
0x0E
0x52
Write
Write
Write
Write
0x4F
0x4E
0x4D
0x44
MAG_IF[3]
MAG_IF[2]
MAG_IF[1]
MAG_CONF
0x02
0x4C
0x42
0x05
put MAG_IF into normal mode
assuming all sensors are in suspend
mode
mag_manual_en= 0b1, mag_if setup
mode
mag_offset= 0b0000,
maximum offset, recommend for
BSX library
Indirect write 0x01 to MAG register
0x4B, put MAG into sleep mode
Indirect write REPXY=
0x01 for low power preset
0x04 for regular preset
0x07 for enhanced regular
preset
0x17 for high accuracy
preset
to MAG register 0x51
Indirect write REPZ=
0x02 for low power preset
0x0E for regular preset
0x1A for enhanced regular
preset
0x52 for high accuracy
preset
to MAG register 0x52
Prepare MAG_IF[1-3] for mag_if
data mode
Write
Write
0x4C
MAG_IF[0]
0x00
Write
0x7E
CMD
0x1A
Write
Wait
Register
Name
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
mag_odr= 0b0101, set ODR to
12.5Hz
mag_manual_en= 0b0, mag_if data
mode
mag_offset= 0b0000,
maximum offset, recommend for
BSX library
put MAG_IF into low power mode
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 26
Table 17: Process to put magnetometer and magnetometer interface into suspend mode
Operation
Write
Wait
Write
Write
Write
Write
Register
Address
0x7E
Register
Name
Data
CMD
0x4C
MAG_IF[0]
0x19
350µs
0x80
0x4F
0x4E
0x7E
MAG_IF[3]
MAG_IF[2]
CMD
0x00
0x4B
0x18
Comment
put MAG_IF into normal mode
mag_manual_en= 0b1, mag_if setup
mode
mag_offset= 0b0000, maximum
offset, recommend for BSX library
Indirect write 0x00 to MAG register
0x4B, put MAG into suspend mode
put MAG_IF into suspend mode
Magnetic field data temperature compensation
The raw register values DATAX, DATAY, DATAZ and RHALL are read out from the host
processor using the BMX160 API/driver which is provided by Bosch Sensortec. The API/driver
performs an off-chip temperature compensation and outputs x/y/z magnetic field data in
16 LSB/µT to the upper application layer:
Software
application level
a
Software
driver level
Application
Temperature and sensitivity compensated
magnetic field data x /y/ z available in :
Config
- short int ( 16 LSB / µT , limited Z range )
- long int (16 LSB /µT )
- float (µT )
BMX 160
API / driver
(provided by
Bosch Sensortec )
Config
Hardware level
Magnetometer raw register data
( DATAX , DATAY , DATAZ , RHALL )
BMX160
sensor
Figure 3: Calculation flow of magnetic field data from raw BMX160 register data
The API/driver performs all calculations using highly optimized fixed-point C-code arithmetic. For
platforms that do not support C code, a floating-point formula is available as well.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 27
2.5 FIFO
A FIFO is integrated in BMX160 to support low power applications and prevent data loss in nonreal-time systems. The FIFO has a size of 1024 bytes. The FIFO architecture supports to
dynamically allocate FIFO space for accelerometer and gyroscope. For typical 6 DoF applications,
this is sufficient for approx. 0.75 s of data capture. In typical 9DoF applications – including the
magnetometer – this is sufficient for approx. 0.5 s. If not all sensors are enabled or lower ODR is
used on one or more sensors, FIFO size will be sufficient for capturing data longer, increasing
ODR of one or more sensors will reduce available capturing time. The FIFO features a FIFO full
and watermark interrupt. Details can be found in section 2.6.12.
A schematic of the data path when the FIFO is used is shown in the figure below.
SENSORTIME
Accel
ADC
Gyro
ADC
FIFO configuration
select
DIGITAL SIGNAL
CONDITIONING
FIFO frames
(regular & control) from
FIFO ENGINE
Magnet
FIFO_DATA register
PRIMARY
DIGITAL
INTERFACE
Magnet
Interface
...
ADC
RAW DATA
FIFO full INT
watermark INT
External INT signals
Figure 4: Block diagram of FIFO data path
2.5.1 FIFO Frames
When using the FIFO, the stored data can be read out by performing a burst read on the register
(0x24) FIFO_DATA. The data is stored in units called frames.
Frame Rates
The frame rate for the FIFO is defined by the maximum output data rate of the sensors enabled
for the FIFO via the Register (0x46-0x47) FIFO_CONFIG. If pre-filtered data are selected in
Register (0x45) FIFO_DOWNS, a data rate of 6400 Hz for the gyroscope and 1600 Hz for the
accelerometer is used.
The frame rate can be reduced further via downsampling (Register (0x45) FIFO_DOWNS). This
can be done independently for each sensor. Downsampling just drops sensor data; no data
processing or filtering is performed.
Frame Format
When using the FIFO, the stored data can be read out by performing a burst read on the register
(0x24) FIFO_DATA. The data will be stored in frames. The frame format is important for the
software to appropriately interpret the information read out from the FIFO.
The FIFO can be configured to store data in either header mode or in headerless mode (see
figure below). The headerless mode is usually used when neither the structure of data nor the
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 28
number of sensors change during data acquisition. In this case, the number of storable frames
can be maximized. In contrast, the header mode is intended for situations where flexibility in the
data structure is required, e.g. when sensors run at different ODRs or when switching sensors on
or off on the fly during operation.
Headerless mode
(only data)
Regular frames
(same ODR for different sensor )
FIFO Frame Format
Configuration
Regular frames
(different ODR for different sensor)
Header mode
(header+data)
Skip frame
Control frames
Sensortime frame
FIFO Input Config frame
Figure 5: FIFO frame configurations
In headerless mode no header byte is used and the frames consist only of data bytes. The data
bytes will always be sensor data. Only regular frames with the same ODR for all sensors are
supported and no external interrupt flags are possible. This mode has the advantage of an easy
frame format and an optimized usage of the 1024 bytes of FIFO storage. It can be selected by
disabling fifo_header in Register (0x46-0x47) FIFO_CONFIG. In case of overreading the FIFO,
non-valid frames always contain the fixed expression (magic number) 0x80 in the data frame.
In header mode every frame consists of a header byte followed by one or more data bytes. The
header defines the frame type and contains parameters for the frame. The data bytes may be
sensor data or control data. Header mode supports different ODRs for the different sensor data
and external interrupt flags. This mode therefore has the advantage of allowing maximum
flexibility of the FIFO engine. It is activated by enabling fifo_header in Register (0x46-0x47)
FIFO_CONFIG.
Header Byte Format
The header format is shown below:
Bit
Content
7
fh_mode
6
5
fh_parm
4
Bit
Read/Write
3
fh_parm
2
1
fh_ext
0
The fh_mode, fh_opt and fh_ext fields are defined as
fh_mode
0b10
Definition
Regular
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
fh_parm
Frame content
fh_ext
Tag of INT2 and INT1
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 preliminary and
subject to change without notice.
BMX160
Data sheet
0b01
0b00
0b11
Control
Reserved
Reserved
Page 29
Control Opcode
Na
Na
f_parm= 0b0000 is invalid for regular mode, a header of 0x80 indicates an uninitialized frame.
Data Bytes Format
When the FIFO is set to “headerless mode“, only sensor data will be saved into the FIFO (in the
same order as in the data register). Any combination of accelerometer, gyroscope and
magnetometer data can be stored. External interrupt tags are not supported in headerless mode.
When the FIFO is set to “header mode“, the data byte format is different depending on the type
of frame. There are two basic frame types, control frames and regular data frames. Each different
type of control frame has its own data byte format. It can contain skipped frames, sensortime data
or FIFO configuration information as explained in the following chapters. If the frame type is a
regular frame (sensor data), the data byte section of the frame depend on how the data is being
transmitted in this frame (as specified in the header byte section). It can include data from only
one sensor or any combination of accelerometer, gyroscope and magnetometer data.
Frame Types
Regular frame (fh_mode=0b10)
Regular frames are the standard FIFO frames and contain sensor data. Regular frames can be
identified by fh_mode set to 0b10 in the header byte section. The fh_parm frame defines which
sensors are included in the data byte of the frame. The format of the fh_param is defined in the
following table:
Name
Bit
Content
3
reserved
2
fifo_mag_data
fh_parm
1
fifo_gyr_data
0
fifo_acc_data
When fifo__data is set to “1” (“0”), data for sensor x is included (not included) in the
data part of the frame.
The fh_ext field is set when an external interrupt is triggered. External interrupt tags are
configured using int_output_en in Register (0x53) INT_OUT_CTRL, int_input_en in
Register (0x54) INT_LATCH and fifo_tag_int_en in Register (0x46-0x47) FIFO_CONFIG. For
details, please refer to chapter 2.5.2.4.
The data byte part for regular data frames is identical to the format defined for the Register (0x040x17) DATA. If a header indicates that not all sensors are included in the frame, these data are
skipped and do not consume space in the FIFO.
Control frame (fh_mode= 0b01):
Control frames, which are only available in header mode, are used for special or exceptional
information. All control frames contribute to the fifo_byte_counter in Register (0x22-0x23)
FIFO_LENGTH. In detail, there are three types of control frame, which can be distinguished by
the fh_parm field:
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 30
Skip frame (fh_parm= 0b000):
In case of a FIFO overflow, a skip frame is prepended to the FIFO content when the next
readout is performed. A skip frame indicates the number of skipped frames since the last
readout.
In the header byte of a skip frame, fh_mode equals 0b01 (since it is a control frame) and
the fh_param equals 0b000 (indicating skip frame). The data byte part of a skip frame
consists of one byte and contains the number of skipped frames. When more than 0xFF
frames have been skipped, 0xFF is returned.
Sensortime frame (fh_parm= 0b001):
If the sensortime frame functionality is activated (see description of Register (0x46-0x47)
FIFO_CONFIG) and the FIFO is overread, the last data frame is followed by a sensortime
frame. This frame contains the BMX160 timestamp content corresponding to the time at
which the last data frame was read.
In the header byte of a sensortime frame, fh_mode= 0b01 (since is a control frame) and
fh_param= 0b001 (indicating sensortime frame). The data byte part of a sensortime frame
consists of 3 bytes and contains the 24-bit sensortime. A sensortime frame does not
consume memory in the FIFO.
FIFO_input_config frame (fh_parm= 0b010):
Whenever the configuration of the FIFO input data sources changes, a FIFO input config
frame is inserted into the FIFO in front of the data to which the configuration change is
applied.
In the header byte of a FIFO_input_config frame, fh_mode= 0b01 (since it is a control
frame) and fh_param= 0b010 (indicating FIFO_input_config frame). The data byte part of
a FIFO_input_config frame consists of one byte and contains data corresponding to the
following table:
Bit
Content
7
reserved
Bit
Read/Write
3
gyr_range_ch
mag_if_ch:
mag_conf_ch:
gyr_range_ch:
gyr_conf_ch:
acc_range_ch:
acc_conf_ch:
6
2
gyr_conf_ch
5
mag_if_ch
4
mag_conf_ch
1
acc_range_ch
0
acc_conf_ch
A change in mag_rd_burst or mag_offset becomes active.
A change in Register MAG_CONF becomes active.
A change in Register (0x43) GYR_RANGE becomes active.
A change in Register (0x42) GYR_CONF or gyr_fifo_filt_data or
gyr_fifo_downsampling in Register (0x45) FIFO_DOWNS becomes
active.
A change in Register (0x41) ACC_RANGE becomes active.
A change in Register (0x40) ACC_CONF or acc_fifo_filt_data or
acc_fifo_downsampling in Register (0x45) FIFO_DOWNS becomes
active.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 31
2.5.2 FIFO Conditions and Details
Overflows
In the case of overflows the FIFO will overwrite the oldest data. A skip frame will be prepended
at the next FIFO readout if the available FIFO space falls below the maximum size frame.
Overreads
If more data bytes are read from the FIFO than valid data bytes are available, “0x80” is returned.
Since a header “0x80” indicates an invalid frame, the SW can recognize the end of valid data.
After the invalid header the data is undefined. This is valid in both headerless and header mode.
In addition, if header mode and the sensortime frame are enabled, the last data frame is followed
by a sensortime frame. After this frame, a 0x80 header will be returned that indicates the end of
valid data.
Partial Frame Reads
When a frame is only partially read through, it will be repeated within the next reading operation
(including the header).
FIFO Synchronization with External Events
External events can be synchronized with the FIFO data by connecting the event source to one
of the BMX160 interrupt pins (which needs to be configured as an input interrupt pin). External
events can be generated e.g. by a camera module. Each frame contains the value of the interrupt
input pin at the time of the external event.
The fh_ext field is set when an external interrupt is triggered. External interrupt tags are
configured using int_output_en in Register (0x53) INT_OUT_CTRL, int_input_en in
Register (0x54) INT_LATCH and fifo_tag_int_en in Register (0x46-0x47) FIFO_CONFIG.
FIFO Reset
A reset of the BMX160 is triggered by writing the opcode 0xB0 “fifo_flush“ to the Register (0x7E)
CMD. This will clears all data in the FIFO while keeping the FIFO settings unchanged.
Automatic resets are only done in two exceptional cases where the data would not be usable
without a reset:
a sensor is enabled or disabled in headerless mode
a transition between headerless and headermode occurred
Error Handling
In case of a configuration error in Register (0x46-0x47) FIFO_CONFIG, no data will be written
into the FIFO and the error is reported in Register (0x02) ERR_REG.
2.6 Interrupt Controller
There are 2 interrupt output pins, to which thirteen different interrupt signals can be mapped
independently via user programmable parameters.
Available interrupts supported by accelerometer in normal mode are:
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 32
Any-motion (slope) detection for motion detection
Significant motion
Step detector
Tap sensing for detection of single or double tapping events
Orientation detection
Flat detection for detection of a situation when one defined plane of the sensor is
oriented parallel to the earth’s surface
Low-g/high-g for detecting very small acceleration (e.g. free-fall) or very high
acceleration (e.g. shock events)
No/slow-motion detection for triggering an interrupt when no (or slow) motion occurs
during a certain amount of time
In addition to that the common interrupts for accelerometer and gyroscope are:
Data ready (“new-data”) for synchronizing sensor data read-out with the MCU / host
controller
FIFO full / FIFO watermark allows FIFO fill level and overflow handling
All Interrupts are available only in normal (low-noise) and low-power modes, but not in suspend
mode. In suspend mode only the status (like orientation or flat) can be read out, but no interrupt
will be triggered (unless latching is used).
If latching is used, the interrupts (as well as the interrupt status) will be latched also in suspend
mode, but no new interrupts will be generated.
Input Interrupt Pins: For special applications (e.g. PMU Trigger, FIFO Tag) interrupt pins can be
configured as input pins. For all other cases (standard interrupts), the pin must be configured as
an output.
Note: The direction of the interrupt pins is controlled with int_output_en and int_x_input_en in
Register (0x53) INT_OUT_CTRL and Register (0x54) INT_LATCH. If both are enabled, the input
(e.g. marking fifo) is driven by the interrupt output.
2.6.1 Any-motion Detection (Accel)
The any-motion detection uses the slope between two successive acceleration signals to detect
changes in motion. The interrupt is configured in the Register (0x5F-0x62) INT_MOTION. It
generates an interrupt when the absolute value of the acceleration exceeds a preset threshold
int_anym_th for a certain number int_anym_dur of consecutive slope data points is above the
slope threshold int_anym_th.
If the same number of data points falls below the threshold, the interrupt is reset. In order to avoid
acceleration data saturation, when data is at maximal value (e.g. “0x8000” or “0X7FFF” for a 16
bit sensor); it is considered that the slope is at maximal value, too.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 33
acceleration
acc(t0+dt)
acc(t0)
time
slope
slope(t0+dt)= acc(t0+dt) - acc(t0)
anym_th
time
anym_dur
anym_dur
latched
INT
unlatched
time
Figure 6: Any-motion (slope) interrupt detection
The criteria for any-motion detection are fulfilled and the slope interrupt is generated if any of the
axis exceeds the threshold int_anym_th for int_anym_dur consecutive times. As soon as all the
channels fall or stay below this threshold for int_anym_dur consecutive times the interrupt is reset.
If this interrupt is triggered in latch mode it remains blocked (disabled) until the latching is cleared.
The any-motion interrupt logic sends out the signals of the axis that has triggered the interrupt
(int_anym_first_x, int_anym_first_y, int_anym_first_z) and the signal of motion direction
(int_anym_sign).
2.6.2 Significant Motion (Accel)
The significant motion interrupt implements the interrupt required for motion detection in Android
4.3 and greater.
A significant motion is a motion due to a change in the user location.
Examples of such significant motions are walking or biking, sitting in a moving car, coach or train,
etc. Examples of situations that should not trigger significant motion include phone in pocket and
person is not moving, phone is on a table and the table shakes a bit due to nearby traffic or
washing machine.
The algorithm uses acceleration and performs the following steps to detect a significant motion:
1. Look for movement
2. [Movement detected] Sleep for 3 seconds
3. Look for movement. Either option a or option b will happen:
a. [One second has passed without movement] Go back to 1
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 34
b. [Movement detected] Report that a significant movement has been found and wake up
the application processor
The significant motion and the anymotion interrupt are exclusive. To select the interrupt, use
int_sig_mot_sel in Register (0x5F-0x62) INT_MOTION.
The following block diagram illustrates the algorithm:
Start
no
Motion detected?
yes
Sleep for 3s (t_skip)
Motion detected
within 1s (t_proof)?
no
yes
Significant motion
detected
Figure 7: Block diagram of significant motion interrupt algorithm
Configurable parameters are:
sig_th= 0x14; // ~ 70 mg same as anym_th
t_skip= 0x01; // 2.56 s 0= 1.28 s, 1= 2.56 s, 2= 5,12 s, 3= 10.24 s
t_proof= 0x02; // 0.96 s 0= 0.24 s, 1= 0.48 s, 2= 0.96 s, 3= 1.92 s
2.6.3 Step Detector (Accel)
A step detection is the detection of a single step event, while the user is walking or running. The
step detector is triggered when a peak is detected in the acceleration magnitude (vector length of
3D acceleration). In order to achieve a robust step detection the peak needs to exceed a
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 35
configurable threshold min_threshold and a minimum delay time min_steptime between two
consecutive peaks needs to be observed. The step detector can be configured in three modes:
Normal mode (default setting, recommended for most applications)
Sensitive mode (can be used for light weighted, small persons)
Robust mode (can be used, if many false positive detections are observed)
More details can be found in Register (0x7A-0x7B) STEP_CONF and the according step counter
application note.
The step detector is the trigger for a step counter. The step counter is described in more detail in
section 2.7.
2.6.4 Tap Sensing (Accel)
Double-Tap implements same functionality as two single taps in a short well-defined period of
time. If the period of time is too short or too long no interrupt is fired.
The interrupt is configured in the Register (0x63-0x64) INT_TAP. When the preset threshold
int_tap_th is exceeded, a tap is detected, an int_s_tap_int in Register (0x1C-0x1F) INT_STATUS
is set and an interrupt is fired. The double-tap interrupt is generated only when a second tap is
detected within a specified period of time. In this case, the int_d_tap_int in Register (0x1C-0x1F)
INT_STATUS is set.
The slope between two successive acceleration data is needed to detect a tap-shock and quietperiod. The time difference between the two successive acceleration values depends on data rate
selected for the interrupt source, which depends on the configured downsampling rate in Register
(0x58-0x59) INT_DATA and the configured output data rate in Register (0x40) ACC_CONF, when
filtered data have been selected in the Register (0x58-0x59) INT_DATA. The time delay
int_tap_dur between two taps is typically between 12.5 ms and 500 ms. The threshold is typically
between 0.7g and 1.5g in 2g measurement range. Due to different coupling between sensor and
device shell (housing) and different measurement ranges of the sensor these parameters are
configurable.
The criteria for a double-tap are fulfilled and an interrupt is generated if the second tap occurs
after int_tap_quiet and within int_tap_dur. The tap direction is determined by the 1st tap. If during
int_tap_quiet period (30/20 ms) a tap occurs, it will be considered as a new tap.
The slope detection interrupt logic stores the direction of the (first) tap-shock in a status register.
This register needs to be locked for int_tap_shock 50/75 ms in order to prevent other slopes to
overwrite this information.
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 36
slope
Second Tap
First Tap
tap_thh
time
Int_tap_shock
= 50/75 ms
tnt_tap_quiet
= 30/20 ms
int_tap_dur = 50 ÷ 700 ms
int_tap_shock Int_tap_quiet
=50/75 ms
= 30/20 ms
single_tap_det
double_tap_det
time
time
Figure 8: Tap detection interrupt
The single-tap and double-tap interrupts are enabled through the int_s_tap_en and int_d_tap_en
registers.
When a tap or double-tap interrupt is triggered, the signals of the axis that has triggered the
interrupt (int_tap_first_x, int_tap_first_y, int_tap_first_z) and the signal of motion direction
(int_tap_sign) will set in Register (0x1C-0x1F) INT_STATUS.
The axis on which the biggest slope occurs will trigger the tap. The second tap will be triggered
by any axis (not necessarily same as the first tap).
If this interrupt is triggered in latch mode it remains blocked (disabled) until the latching is reset.
2.6.5 Orientation Recognition (Accel)
The orientation recognition feature informs on an orientation change of the sensor with respect to
the gravitational field vector g. There are orientations face up/face down and orthogonal to that
portrait upright, landscape left, portrait downside, and landscape right. The interrupt to face
up/face down may be enabled separately through int_orient_ud_en in Register (0x65-0x66)
INT_ORIENT.
The sensor orientation is defined by the angles phi and Theta (phi is rotation around the stationary
z axis, theta is rotation around the stationary y axis).
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 37
z
θ
x
φ
y
g
Figure 9: Definition of coordinate system with respect to pin 1 marker
The measured acceleration vector components look as follows:
𝑎𝑐𝑐𝑥 = 1𝑔 ∙ sin 𝜃 ∙ cos 𝜑
𝑎𝑐𝑐𝑦 = −1𝑔 ∙ sin 𝜃 ∙ sin 𝜑
𝑎𝑐𝑐𝑧 = 1𝑔 ∙ cos 𝜃
(2)/(1):
𝑎𝑐𝑐𝑦
𝑎𝑐𝑐𝑥
(1)
(2)
(3)
= − tan 𝜑
Figure 10: Angle-to-Orientation Mapping
BST-BMX160-DS000-12 | Revision 1.2 | January 2019
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 preliminary and
subject to change without notice.
BMX160
Data sheet
Page 38
Note that the sensor measures the direction of the force which needs to be applied to keep the
sensor at rest (i.e. opposite direction than g itself).
Looking at the phone from front side / portrait upright corresponds to the following angles:
𝜃 = 90° , 𝜑 = 270°
The orientation value is stored in the output register int_orient in Register (0x1C-0x1F)
INT_STATUS. There are three orientation calculation modes: symmetrical, high-asymmetrical
and low-asymmetrical. The mode is selected by the register int_orient_mode in Register (0x650x66) INT_ORIENT as follows:
Table 18: Orientation mode
orient_mode
Orientation mode
00
Symmetrical
01
High asymmetrical
10
Low asymmetrical
11
Symmetrical
The register int_orient has the following meanings depending on the switching mode:
Table 19: Symmetrical mode
Orient
x00
x01
x10
x11
Name
Landscape left
Landscape right
Portrait upside down
Portrait upright
Angle
315°