EUR | USD

BMI160 Datasheet

Bosch Sensortec

Download PDF Datasheet

Datasheet

Data sheet
BMI160
Small, low power inertial measurement unit
BMI160 Data sheet
Document revision
0.8
Document release date
February 10th, 2015
Document number
BST-BMI160-DS000-07
Technical reference code(s)
0 273 141 187
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.
Bosch Sensortec
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
BMI160
Small, low Power Inertial Measurement Unit
The BMI160 is a highly integrated, low power inertial measurement unit (IMU) that provides
precise acceleration and angular rate (gyroscopic) measurement.
The BMI160 integrates:
16 bit digital, triaxial accelerometer
16 bit digital, triaxial gyroscope
Key features
High performance accelerometer and gyroscope (hardware synchronized)
Very low power consumption: typ. 925 µA (accelerometer and gyroscope in full operation)
Android Lollipop compatible: significant motion and step detector / step counter (5 µA each)
Very small 2.5 x 3.0 mm2 footprint, height 0.83 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.71V … 3.6V
Allocatable FIFO buffer of 1024 bytes (capable of handling external sensor data)
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
Additional secondary high speed interface for OIS application
Capable of handling external sensor data
(e.g. geomagnetic or barometric pressure sensors by Bosch Sensortec)
Typical applications
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
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
General Description
The BMI160 is an inertial measurement unit (IMU) consisting of a state-of-the-art 3-axis, low-g
accelerometer and a low power 3-axis gyroscope. It has been designed for low power, high
precision 6-axis and 9-axis applications in mobile phones, tablets, wearable devices, remote
controls, game controllers, head-mounted devices and toys. The BMI160 is available in a
compact 14-pin 2.5 × 3.0 × 0.83 mm3 LGA package. When accelerometer and gyroscope are in
full operation mode, power consumption is typically 925 µA, enabling always-on applications in
battery driven devices. The BMI160 offers a wide VDD voltage range from 1.71V to 3.6V and a
VDDIO range from 1.2V to 3.6V, allowing the BMI160 to be powered at 1.8V for both VDD and
VDDIO.
Due to its built-in hardware synchronization of the inertial sensor data and its ability to
synchronize data of external devices such as geomagnetic sensors, BMI160 is ideally suited for
augmented reality, gaming and navigation applications, which require highly accurate sensor
data fusion. The BMI160 provides high precision sensor data together with the accurate timing
of the corresponding data. The timestamps have a resolution of only 39 µs.
Further Bosch Sensortec sensors, e.g. geomagnetic (BMM150) can be connected as slave via a
secondary I2C interface. In this configuration, the BMI160 controls the data acquisition of the
external sensor and the synchronized data of all sensors is stored the register data and can be
additionally stored in the built-in FIFO.
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 external sensors, respectively. For typical 6-DoF
applications, this is sufficient for approx. 0.75 s of data capture. In a typical 9-DoF application
including the geomagnetic sensor this is sufficient for approx. 0.5 s.
Like its predecessors, the BMI160 features an on-chip interrupt engine enabling low-power
motion-based gesture recognition and 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, free-fall or shock events. The BMI160 is Android 5.0 (Lollipop) compatible,
and in the implementation of the Significant Motion and Step Detector interrupts, each
consumes less than 20µ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.
Besides the flexible primary interface (I2C or SPI) that is used to connect to the host, BMI160
provides an additional secondary interface. This secondary interface can be used in SPI mode
for OIS (optical image stabilization) applications in conjunction with camera modules, or in
advanced gaming use cases. When connected to a geomagnetic sensor, BMI160 will trigger
autonomous read-out of the sensor data from magnetometer without the need for intervention
by the host processor.
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
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 ........................................................................................... 11
2. FUNCTIONAL DESCRIPTION ................................................................................................. 12
2.1 BLOCK DIAGRAM ............................................................................................................... 12
2.2 POWER MODES ................................................................................................................. 13
2.2.1 SUSPEND MODE (ACCELEROMETER AND GYROSCOPE) ................................................................... 13
2.2.2 FAST START-UP MODE (GYROSCOPE ONLY ) ................................................................................... 13
2.2.3 TRANSITIONS BETWEEN POWER MODES ......................................................................................... 14
2.2.4 LOW POWER MODE (ACCELEROMETER ONLY) ................................................................................. 15
2.2.5 PMU (POWER MANAGEMENT UNIT) .............................................................................................. 16
2.3 SENSOR TIMING AND DATA SYNCHRONIZATION ................................................................... 16
2.3.1 SENSOR TIME .............................................................................................................................. 16
2.3.2 DATA SYNCHRONIZATION .............................................................................................................. 17
2.4 DATA PROCESSING ........................................................................................................... 18
2.4.1 DATA PROCESSING ACCELEROMETER ........................................................................................... 18
2.4.2 DATA PROCESSING GYROSCOPE .................................................................................................. 19
2.5 FIFO................................................................................................................................ 20
2.5.1 FIFO FRAMES ............................................................................................................................. 21
2.5.2 FIFO CONDITIONS AND DETAILS .................................................................................................... 24
2.6 INTERRUPT CONTROLLER .................................................................................................. 25
2.6.1 ANY-MOTION DETECTION (ACCEL) ................................................................................................. 26
2.6.2 SIGNIFICANT MOTION (ACCEL) ...................................................................................................... 27
2.6.3 STEP DETECTOR (ACCEL) ............................................................................................................ 28
2.6.4 TAP SENSING (ACCEL) ................................................................................................................. 28
2.6.5 ORIENTATION RECOGNITION (ACCEL) ............................................................................................ 29
2.6.6 FLAT DETECTION (ACCEL) ............................................................................................................ 35
2.6.7 LOW-G / FREE-FALL DETECTION (ACCEL) ....................................................................................... 36
2.6.8 HIGH-G DETECTION (ACCEL) ......................................................................................................... 37
2.6.9 SLOW-MOTION ALERT / NO-MOTION INTERRUPT (ACCEL) .............................................................. 37
2.6.10 DATA READY DETECTION (ACCEL, GYRO AND EXTERNAL SENSORS) ............................................. 40
2.6.11 PMU TRIGGER (GYRO) .............................................................................................................. 40
2.6.12 FIFO INTERRUPTS (ACCEL, GYRO, AND EXTERNAL SENSORS) ...................................................... 40
2.7 STEP COUNTER ................................................................................................................ 41
2.8 DEVICE SELF TEST ............................................................................................................ 41
2.8.1 SELF-TEST ACCELEROMETER ........................................................................................................ 41
2.8.2 SELF-TEST GYROSCOPE ............................................................................................................... 42
2.9 OFFSET COMPENSATION ................................................................................................... 42
2.9.1 FAST OFFSET COMPENSATION ....................................................................................................... 42
2.9.2 MANUAL OFFSET COMPENSATION .................................................................................................. 43
2.9.3 INLINE CALIBRATION ..................................................................................................................... 43
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
2.10 NON-VOLATILE MEMORY ................................................................................................. 43
2.11 REGISTER MAP ............................................................................................................... 45
2.11.1 REGISTER (0X00) CHIPID ......................................................................................................... 47
2.11.2 REGISTER (0X02) ERR_REG .................................................................................................... 47
2.11.3 REGISTER (0X03) PMU_STATUS ............................................................................................. 48
2.11.4 REGISTER (0X04-0X17) DATA ................................................................................................... 49
2.11.5 REGISTER (0X18-0X1A) SENSORTIME .................................................................................... 50
2.11.6 REGISTER (0X1B) STATUS ....................................................................................................... 51
2.11.7 REGISTER (0X1C-0X1F) INT_STATUS ..................................................................................... 51
2.11.8 REGISTER (0X20-0X21) TEMPERATURE ................................................................................. 53
2.11.9 REGISTER (0X22-0X23) FIFO_LENGTH ................................................................................... 54
2.11.10 REGISTER (0X24) FIFO_DATA ................................................................................................ 55
2.11.11 REGISTER (0X40) ACC_CONF ................................................................................................ 55
2.11.12 REGISTER (0X41) ACC_RANGE ............................................................................................. 56
2.11.13 REGISTER (0X42) GYR_CONF................................................................................................ 57
2.11.14 REGISTER (0X43) GYR_RANGE ............................................................................................. 58
2.11.15 REGISTER (0X44) MAG_CONF ............................................................................................... 58
2.11.16 REGISTER (0X45) FIFO_DOWNS ........................................................................................... 59
2.11.17 REGISTER (0X46-0X47) FIFO_CONFIG .................................................................................. 60
2.11.18 REGISTER (0X4B-0X4F) MAG_IF ............................................................................................ 61
2.11.19 REGISTER (0X50-0X52) INT_EN .............................................................................................. 62
2.11.20 REGISTER (0X53) INT_OUT_CTRL ......................................................................................... 63
2.11.21 REGISTER (0X54) INT_LATCH ................................................................................................ 63
2.11.22 REGISTER (0X55-0X57) INT_MAP ........................................................................................... 64
2.11.23 REGISTER (0X58-0X59) INT_DATA ......................................................................................... 66
2.11.24 REGISTER (0X5A-0X5E) INT_LOWHIGH ................................................................................ 67
2.11.25 REGISTER (0X5F-0X62) INT_MOTION .................................................................................... 69
2.11.26 REGISTER (0X63-0X64) INT_TAP............................................................................................ 71
2.11.27 REGISTER (0X65-0X66) INT_ORIENT ..................................................................................... 72
2.11.28 REGISTER (0X67-0X68) INT_FLAT .......................................................................................... 73
2.11.29 REGISTER (0X69) FOC_CONF ................................................................................................ 74
2.11.30 REGISTER (0X6A) CONF ......................................................................................................... 75
2.11.31 REGISTER (0X6B) IF_CONF .................................................................................................... 75
2.11.32 REGISTER (0X6C) PMU_TRIGGER ........................................................................................ 76
2.11.33 REGISTER (0X6D) SELF_TEST ............................................................................................... 77
2.11.34 REGISTER (0X70) NV_CONF .................................................................................................. 78
2.11.35 REGISTER (0X71-0X77) OFFSET ............................................................................................ 78
2.11.36 REGISTER (0X78-0X79) STEP_CNT........................................................................................ 79
2.11.37 REGISTER (0X7A-0X7B) STEP_CONF .................................................................................... 80
2.11.38 REGISTER (0X7E) CMD ........................................................................................................... 81
3. DIGITAL INTERFACES ............................................................................................................ 84
3.1 INTERFACES ..................................................................................................................... 84
3.2 PRIMARY INTERFACE ......................................................................................................... 84
3.2.1 PRIMARY INTERFACE I2C/SPI PROTOCOL SELECTION ................................................................... 85
3.2.2 PRIMARY SPI INTERFACE ............................................................................................................. 86
3.2.3 PRIMARY I2C INTERFACE ............................................................................................................. 89
3.2.4 SPI AND I²C ACCESS RESTRICTIONS ............................................................................................ 93
3.3 SECONDARY INTERFACE.................................................................................................... 94
3.3.1 MAGNETOMETER CONNECTED TO SECONDARY INTERFACE ............................................................. 94
3.3.2 CAMERA MODULE CONNECTED TO SECONDARY INTERFACE FOR OIS............................................... 96
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
4. PIN-OUT AND CONNECTION DIAGRAMS ............................................................................ 97
4.1 PIN-OUT ........................................................................................................................... 97
4.2 CONNECTION DIAGRAMS TO USE PRIMARY INTERFACE ONLY ................................................ 98
4.2.1 I2C AS PRIMARY INTERFACE .......................................................................................................... 98
4.2.2 SPI 3-WIRE AS PRIMARY INTERFACE .............................................................................................. 98
4.2.3 SPI 4-WIRE AS PRIMARY INTERFACE .............................................................................................. 99
4.3 CONNECTION DIAGRAMS TO USE ADDITIONAL SECONDARY INTERFACE .................................. 99
4.3.1 PRIMARY SPI 4-WIRE AND SECONDARY MAGNETOMETER INTERFACE (I2C) ...................................... 99
4.3.2 PRIMARY SPI 3-WIRE AND SECONDARY MAGNETOMETER INTERFACE (I2C) .................................... 100
4.3.3 PRIMARY I2C AND SECONDARY MAGNETOMETER INTERFACE (I2C) ................................................ 100
4.3.4 PRIMARY I2C AND SECONDARY 4-WIRE SPI AS OIS INTERFACE .................................................... 101
4.3.5 PRIMARY I2C AND SECONDARY 3-WIRE SPI AS OIS INTERFACE .................................................... 101
5. PACKAGE .............................................................................................................................. 102
5.1 OUTLINE DIMENSIONS ..................................................................................................... 102
5.2 SENSING AXES ORIENTATION ........................................................................................... 103
5.3 LANDING PATTERN RECOMMENDATION ............................................................................. 104
5.4 MARKING ........................................................................................................................ 105
5.4.1 MASS PRODUCTION MARKING ...................................................................................................... 105
5.4.2 ENGINEERING SAMPLES .............................................................................................................. 105
5.5 SOLDERING GUIDELINES .................................................................................................. 106
5.6 HANDLING INSTRUCTIONS ................................................................................................ 107
5.7 TAPE AND REEL SPECIFICATION ....................................................................................... 107
5.7.1 ORIENTATION WITHIN THE REEL ................................................................................................... 108
5.8 ENVIRONMENTAL SAFETY ................................................................................................ 108
5.8.1 HALOGEN CONTENT ................................................................................................................... 108
5.8.2 MULTIPLE SOURCING .................................................................................................................. 108
6. LEGAL DISCLAIMER ............................................................................................................. 109
6.1 ENGINEERING SAMPLES .................................................................................................. 109
6.2 PRODUCT USE ................................................................................................................ 109
6.3 APPLICATION EXAMPLES AND HINTS ................................................................................. 109
7. DOCUMENT HISTORY AND MODIFICATIONS ................................................................... 110
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
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 and gyroscope sections of the BMI160.
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. BMI160 contains a brownout detector, which
ensures integrity of data in the non-volatile memory under all operating conditions.
Table 1: Electrical parameter specification
OPERATING CONDITIONS BMI160
Parameter
Symbol
Condition
Min
Typ
Max
Unit
Supply Voltage
Internal Domains
VDD
1.71
3.0
3.6
V
Supply Voltage
I/O Domain
VDDIO
1.2
2.4
3.6
V
Voltage Input
Low Level
VIL,a
SPI
0.3VDDIO
-
Voltage Input
High Level
VIH,a
SPI
0.7VDDIO
-
Voltage Output
Low Level
VOL,a
VDDIO=1.62V, IOL=3mA, SPI
0.2VDDIO
-
VDDIO=1.2V, IOL=3mA, SPI
0.23VDDIO
-
Voltage Output
High Level
VOH,a
VDDIO=1.62V, IOH=3mA, SPI
0.8VDDIO
-
VDDIO=1.2V, IOH=3mA, SPI
0.62VDDIO
-
Operating
Temperature
TA
-40
+85
°C
NVM write-cycles
nNVM
Non-volatile memory
14
Cycles
Current
consumption
IDD
Gyro in fast start-up, accel
in suspend mode, TA=25°C
500
600
µA
Gyro and accel full
operation mode, TA=25°C
925
990
Gyro full operation mode,
accel in suspend, TA=25°C
850
900
Accel full operation mode,
gyro in suspend, TA=25°C
180
300
Gyro and accel
in suspend mode, TA=25°C
3
10
Significant motion detector,
gyro in suspend, accel in
low power mode @50Hz,
TA=25°C
20
Step detector, gyro in
suspend, accel in low
power mode @50Hz,
TA=25°C
20
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
1.2 Electrical and physical characteristics, measurement performance
Table 2: Electrical characteristics accelerometer
OPERATING CONDITIONS ACCELEROMETER
Parameter
Symbol
Condition
Min
Typ
Max
Units
Acceleration Range
gFS2g
Selectable
via serial digital
interface
±2
g
gFS4g
±4
g
gFS8g
±8
g
gFS16g
±16
g
Start-up time
tA,su
Suspend/low power
mode to normal
mode, ODR=1.6kHz
3.2
3.8
ms
OUTPUT SIGNAL ACCELEROMETER
Parameter
Symbol
Condition
Min
Typ
Max
Units
Resolution
16
bit
Sensitivity
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
gFS8g,
Nominal VDD supplies
best fit straight line
±0.03
%/K
Sensitivity change
over supply voltage
SA,VDD
TA=25°C,
VDD,min VDD ≤ VDD,max
best fit straight line
0.01
%/V
Zero-g Offset
OffA, init
gFS8g, TA=25°C, nominal
VDD supplies, component
level
±25
mg
OffA,board
gFS8g, TA=25°C, nominal
VDD supplies, soldered,
board level
±40
mg
OffA,MSL
gFS8g, TA=25°C, nominal
VDD supplies, after MSL1-
prec. 1 / soldered
±70
mg
OffA,life
gFS8g, TA=25°C, nominal
VDD supplies, soldered,
over life time2
±150
mg
Zero-g Offset
Temperature Drift
TCOA
gFS8g,
Nominal VDD supplies
best fit straight line
±1.0
mg/K
Nonlinearity
NLA
Best fit straight line, gFS8g
±0.5
%FS
Output Noise
nA,nd
gFS8g, TA=25°C, nominal
VDD, Normal mode
180
300
µg/Hz
1
Values taken from qualification, according to JEDEC J-STD-020D.1
2
Values taken from qualification, according to JEDEC J-STD-020D.1
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
nA,rms
Filter setting 80 Hz, ODR
200 Hz
1.8
mg-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)
ODRA
12.5
1600
Hz
Output Data rate
accuracy
(set of x,y,z rate)
AODRA
Normal mode, over whole
operating temperature
range
±1
%
Table 3: Electrical characteristics gyroscope
OPERATING CONDITIONS GYROSCOPE
Parameter
Symbol
Condition
Min
Typ
Max
Unit
Range
RFS125
Selectable
via serial digital interface
125
°/s
RFS250
250
°/s
RFS500
500
°/s
RFS1000
1,000
°/s
RFS2000
2,000
°/s
Start-up time
tG,su
Suspend to normal mode
ODRG=1600Hz
55
ms
tG,FS
Fast start-up to normal
mode
10
ms
OUTPUT SIGNAL GYROSCOPE
Sensitivity
RFS2000
Ta=25°C
15.9
16.4
16.9
LSB/°/s
RFS1000
Ta=25°C
31.8
32.8
33.8
LSB/°/s
RFS500
Ta=25°C
63.6
65.6
67.6
LSB/°/s
RFS250
Ta=25°C
127.2
131.2
135.2
LSB/°/s
RFS125
Ta=25°C
254.5
262.4
270.3
LSB/°/s
Sensitivity change
over temperature
TCSG
RFS2000,
Nominal VDD supplies
best fit straight line
±0.02
%/K
Sensitivity change
over supply voltage
SG,VDD
TA=25°C,
VDD,min VDD VDD,max
best fit straight line
0.01
%/V
Nonlinearity
NLG
Best fit straight line
RFS1000, RFS2000
0.1
%FS
g- Sensitivity
Sensitivity to acceleration
stimuli in all three axis
(frequency <20kHz)
0.1
°/s/g
Zero-rate offset
Off x
y and z
TA=25°C,
fast offset compensation
off
±3
°/s
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
Zero-Rate offset
Over temperature
Off x, oT
y, oT and
z,oT
-40°C TA ≤+85°C
±3
°/s
Zero-rate offset
change over
temperature
TCOG
-40°C TA ≤+85°C,
best fit straight line
0.05
°/s/K
Output Noise
nG,nD
@10 Hz
0.007
°/s/√Hz
nG,rms
Filter setting 74.6Hz, ODR
200 Hz
0.07
°/s rms
Output Data Rate
(set of x,y,z rate)
ODRG
25
3200
Hz
Output Data rate
accuracy
(set of x,y,z rate)
AODRG
Over whole operating
temperature range
±1
%
Cross Axis
Sensitivity
XG,S
Sensitivity to stimuli in
non-sense-direction
2
%
Table 4: Electrical characteristics temperature sensor
OPERATING CONDITIONS AND OUTPUT SIGNAL OF TEMPERATURE SENSOR
Parameter
Symbol
Condition
Min
Typ
Max
Unit
Temperature Sensor
Measurement Range
TS
-40
85
°C
Temperature
Sensor Slope
dTS
0.002
K/LSB
Temperature
Sensor Offset
OTS
±2
±5
K
Output Data Rate
ODRT
Accelerometer on or gyro
in fast start-up
0.8
Hz
Gyro active
100
Hz
Resolution
nT
Accelerometer on or gyro
in fast start-up
8
bit
Gyro active
16
bit
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
1.3 Absolute maximum ratings
Table 5: Absolute maximum ratings
Parameter
Condition
Min
Max
Units
Voltage at Supply Pin
VDD Pin
-0.3
4.25
V
VDDIO Pin
-0.3
4.25
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
y
Mechanical Shock
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
ESD
HBM, at any Pin
2
kV
CDM
500
V
MM
200
V
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.
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
2. Functional Description
2.1 Block diagram
The figure below depicts the dataflow in BMI160 and the configuration parameters for data
rates:
INTERRUPT ENGINE
Accel ADC
DIGITAL SIGNAL
CONDITIONING
select
Gyro ADC
PRIMARY
DIGITAL
INTERFACE
SENSOR DATA
AND SENSORTIME
REGISTER
FIFO ENGINE
LEGACY INTERRUPTS
SECONDARY DIGITAL INTERFACE CONFIGURABLE AS:
GYRO OIS (SPI SLAVE)
OR
MAGNET (I2C MASTER)
SPI / I2C
INT1, INT2
OIS Controller
(SPI)
GYRO PREFILTERED DATA
EXTERNAL MAGNET DATA
RAW DATA
Magnet
SENSORTIME
STEP DETECTOR
SIGNIFICANT MOTION
INTERRUPTS
MAGNET (I2C)
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 sensor time is synchronized with the update of the data register. Synchronization is a purely
digital statement.
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
2.2 Power modes
By default BMI160 accel and gyro are in suspend mode after powering up the device. The
device is powering up in less than 10ms.
Three power modes are supported for accelerometer and gyroscope:
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 PMU_STATUS.
Suspend mode: No sampling takes place, all data is retained, and delays between
subsequent I2C operations are allowed. FIFO data readout is not supported in suspend
mode.
Gyroscope
Normal mode: same as accelerometer
Suspend mode: same as accelerometer
Fast start-up mode: start-up delay time to normal mode 10 ms
Table 6: Power modes of accelerometer and gyro in BMI160
Accelerometer
Gyroscope
external
Magnetometer
BMM150
full operation
mode
Normal mode
Sleep modes
Fast Start-up
mode
Suspend mode
Low power modes
Low power 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.
2.2.1 Suspend mode (accelerometer and gyroscope)
In suspend mode, the MEMS sensors are powered off but the digital circuitry is still active.
Note:
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.
2.2.2 Fast start-up mode (gyroscope only )
In fast start-up mode the sensing analog part is powered down, while the drive and the digital
part remains largely operational. No data acquisition is performed. The latest rate data and the
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
content of all configuration registers are kept. The fast start-up mode allows a fast transition
(10 ms) into normal mode while keeping power consumption significantly lower than in normal
mode.
2.2.3 Transitions between power modes
The table below for the power modes of gyroscope and accelerometer shows which power
mode combinations are supported by BMI160.
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 7: Typical total current consumption in µA according to accel/gyro modes
Current consumption in µA
Accelerometer Mode
Suspend
Normal
Low Power
Gyroscope
Mode
Suspend
3
180
See Table 8
Fast Start-up
500
580
n.a.
Normal
850
925
n.a.
The power mode setting can be configures 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
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
2.2.4 Low power mode (accelerometer only)
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 chapter 2.2.1 applies.
2.2.4.1 Power Consumption in accelerometer 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 the accel 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.
Table 8: 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
AVG number of averaging cycles
1
2
4
8
16
32
64
128
ODR
of accelerometer
in low power mode
[Hz]
(gyroscope in
suspend mode)
0,78125
5
5
5
5
6
7
9
14
1,5625
5
5
5
7
7
9
14
23
3,125
5
5
6
7
9
14
23
42
6,25
6
6
7
9
14
24
42
82
12,5
6
8
10
14
24
44
84
n. m.
25
8
11
17
25
47
90
normal mode
50
12
18
27
51
100
normal mode
100
24
41
53
138
normal mode
200
86
118
163
normal mode
400
166
166
normal mode
800
normal mode
1600
normal mode
2.2.4.2 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 9: 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
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
2.2.5 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 chapter 2.6.11, PMU Trigger (Gyro).
2.2.5.1 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 BMI160 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.
2.2.5.2 Power management with external geomagnetic sensor
An external magnetometer can be connected via the secondary interface. The drivers support
Bosch Sensortec devices. The PMU allows advanced power management with the external
magnetometer.
Table 10: Supported magnetometer and accelerometer power modes (only horizontal and
vertical transitions are allowed)
Accel
Suspend
Normal
Low power
Magnetometer
Suspend
Supported
Supported
Supported
Normal
Supported
Supported
Supported
Note, for setting the magnetometer to suspend mode it is required to put the magnetometer
itself into suspend mode through the magnetometer interface manual mode mag_man_en in
Register (0x4B-0x4F) MAG_IF and to set the magnetometer interface after that to suspend
using a 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.
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.
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
Table 11: Sensor time
Bit m in sensor_time
Resolution [ms]
Update rate [Hz]
0
0.039
25641
1
0.078
12820
2
0.156
6400
3
0.3125
3200
4
0.625
1600
5
1.25
800
6
2.5
400
7
5
200
8
10
100
9
20
50
10
40
25
11
80
12.5
12
160
6.25
13
320
3.125
14
640
1.56
15
1280
0.78
16
2560
0.39
17
5120
0.20
18
10240
0.10
19
20480
0.049
20
40960
0.024
21
81920
0.012
22
163840
0.0061
23
327680
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.
BMI160 supports various level of data synchronization:
Internal hardware synchronization of accelerometer, gyroscope and external sensor
data.
High precision synchronization of external data with sensor data through hardware
timestamps. The hardware timestamp resolution is 39 µs.
Hardware synchronization of the data of accelerometer, gyro and external sensor
through a unique DRDY interrupt signal.
FIFO entries of the accelerometer, gyro and external sensor are already synchronized
by hardware. The according time stamp can be provided with each full FIFO read.
Synchronization of external data (e.g. magnetometer data) with FIFO data at data
sampling granularity through hardware signaling
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
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 gyr_odr. There is no undersampling parameter for the gyroscope.
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 gyroscope data can only
be processed in normal power mode or in low power mode.
2.4.1.1 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.5Hz up to 1600Hz.
Note: Lower ODR values than 12.5Hz 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 3db cutoff frequency shown in the following table:
Table 12: 3dB cutoff frequency of the accelerometer according to ODR with normal filter mode
The noise is also depending on the filter settings and ODR, see table below.
Table 13: Accelerometer noise in mg according to ODR with normal filter mode (range +/- 8g)
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=50Hz
we will have a 3dB cutoff frequency of 10.12Hz.
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
Accelerometer ODR [Hz]
12,5
25
50
100
200
400
800
1600
3dB Cutoff frequency [Hz]
5.06
10.12
20.25
40.5
80
162
(155 for
Z axis)
324
(262 for
Z axis)
684
(353 for
Z axis)
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
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
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 4 times smaller
than the bandwidth achieved for the same ODR in the normal filter mode. For example, for
ODR=50Hz we will have a 3dB cutoff frequency of 5.06Hz.
2.4.1.2 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.78Hz up to 1600Hz.
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 chapter Power Consumption.
Note: When undersampling (acc_us=0b1 in Register (0x40) ACC_CONF) and the use of pre-
filtered 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.
2.4.2.1 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 25Hz up to 3200Hz.
Note: Lower ODR values than 25Hz 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 3db cutoff frequency shown in the
following table:
Gyroscope ODR [Hz]
25
50
100
200
400
800
1600
3200
3dB Cutoff frequency [Hz]
10.7
20.8
39.9
74.6
136.6
254.6
523.9
890
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
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=50Hz we will have
a 3dB cutoff frequency of 10.12Hz.
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=50Hz
we will have a 3dB cutoff frequency of 5.06Hz.
Note: the gyroscope doesn’t feature a low power mode. Therefore, there is also no
undersampling mode for the gyroscope data processing.
2.5 FIFO
A FIFO is integrated in BMI160 to support low power applications and prevent data loss in non-
real-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 chapter 2.6.12.
A schematic of the data path when the FIFO is used is shown in the figure below.
Accel ADC
DIGITAL SIGNAL
CONDITIONING
select
Gyro ADC
PRIMARY
DIGITAL
INTERFACE
FIFO ENGINE
SECONDARY DIGITAL INTERFACE CONFIGURABLE AS:
GYRO OIS (SPI SLAVE)
OR
MAGNET (I2C MASTER)
FIFO full INT
watermark INT
GYRO PREFILTERED DATA
EXTERNAL MAGNET DATA
RAW DATA
Magnet
SENSORTIME
MAGNET (I2C)
FIFO frames
(regular & control) from
FIFO_DATA register
External INT signals
FIFO configuration
...
Figure 3: Block diagram of FIFO data path
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
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.
2.5.1.1 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.
2.5.1.2 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
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 runs at different ODRs or when switching sensors
on or off on the fly during operation.
FIFO Frame Format
Configuration
Headerless mode
(only data)
Header mode
(header+data)
Control frames
Regular frames
(same ODR for different sensor )
Skip frame
Sensortime frame
FIFO Input Config frame
Regular frames
(different ODR for different sensor)
Figure 4: 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
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
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.
2.5.1.3 Header byte format
The header format is shown below:
Bit
7
6
5
4
Content
fh_mode<1:0>
fh_parm<3:2>
Bit
3
2
1
0
Read/Write
fh_parm<1:0>
fh_ext<1:0>
The fh_mode, fh_opt and fh_ext fields are defined as
fh_mode<1:0>
Definition
fh_parm <3:0>
fh_ext<1:0>
0b10
Regular
Frame content
Tag of INT2 and
INT1
0b01
Control
Control Opcode
0b00
Reserved
Na
0b11
Reserved
Na
f_parm=0b0000 is invalid for regular mode, a header of 0x80 indicates an uninitialized frame.
2.5.1.4 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 external
sensor 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 external
sensor data.
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
2.5.1.5 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
fh_parm<2:0>
Bit
3
2
1
0
Content
reserved
fifo_mag_data
fifo_gyr_data
fifo_acc_data
When fifo_<sensor x>_data is set to ‘1’(‘0’), data for sensor x is included (not included) in the
data part of the frame.
The fh_ext<1:0> field is set when an external interrupt is triggered. External interrupt tags are
configured using int<x>_output_en in Register (0x53) INT_OUT_CTRL. 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
(0x04-0x17) 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:
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 BMI160 timestamp content corresponding th
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):
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
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 skip 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
7
6
5
4
Content
reserved
Bit
3
2
1
0
Read/Write
gyr_range_ch
gyr_conf_ch
acc_range_ch
acc_conf_ch
gyr_range_ch: A change in Register (0x43) GYR_RANGE becomes active.
gyr_conf_ch: A change in Register (0x42) GYR_CONF or gyr_fifo_filt_data or
gyr_fifo_downsampling in Register (0x45) FIFO_DOWNS
becomes active.
acc_range_ch: A change in Register (0x41) ACC_RANGE becomes active.
acc_conf_ch: A change in Register (0x40) ACC_CONF or acc_fifo_filt_data or
acc_fifo_downsampling in Register (0x45) FIFO_DOWNS
becomes active.
2.5.2 FIFO conditions and details
2.5.2.1 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.
2.5.2.2 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.
2.5.2.3 Partial frame reads
When a frame is only partially read through, it will be repeated within the next reading operation
(including the header).
2.5.2.4 FIFO synchronization with external events
External events can be synchronized with the FIFO data by connecting the event source to one
of the BMI160 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<1:0> field is set when an external interrupt is triggered. External interrupt tags are
configured using int<x>_output_en in Register (0x53) INT_OUT_CTRL.
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
2.5.2.5 FIFO Reset
A reset of the BMI160 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.
2.5.2.6 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:
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.
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
Note: The direction of the interrupt pins is controlled with int<x>_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.
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.
anym_th
INT
slope
acc(t0+dt)
acc(t0)
slope(t0+dt)= acc(t0+dt) - acc(t0)
time
time
anym_dur
anym_dur
latched
unlatched
Figure 5: Any-motion (slope) interrupt detection
acceleration
time
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
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:
https://source.android.com/devices/sensors/composite_sensors.html#Significant
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.
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:
Figure 6: Block diagram of significant motion interrupt algorithm
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
Configurable parameters are:
sig_th = 0x14; // ~ 70mg same as anym_th
t_skip = 0x01; // 2.56s 0=1.28s, 1=2.56s, 2=5,12s 3=10.24s
t_proof = 0x02; // 0.96s 0=0.24s, 1=0.48s, 2=0.96s 3=1.92s
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
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 chapter 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 and a 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 quiet-
period. 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.5ms and 500ms. 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/20ms) 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/75ms in order to prevent other slopes to
overwrite this information.
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
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 the 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).
Int_tap_shock
= 50/75ms
single_tap_det
time
First Tap
tnt_tap_quiet
= 30/20ms
int_tap_dur = 50 ÷ 700 ms
int_tap_shock
=50/75ms
Int_tap_quiet
= 30/20ms
time
double_tap_det
time
Second Tap
slope
Figure 7: Tap detection interrupt
tap_thh
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
y
g
x
z
θ
φ
Figure 8: definition of coordinate system with respect to pin 1 marker
The measured acceleration vector components look as follows:
      (1)
     (2)
    (3)
(2)/(1): 

 
Figure 9: Angle-to-Orientation Mapping
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
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 frontside / portrait upright corresponds to the following angles:
 , 
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 (0x65-
0x66) INT_ORIENT as follows:
Table 14: 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 15: Symmetrical mode
orient
Name
Angle
Condition
x00
landscape left
315°<phi<45°
|acc_y/acc_x|<1 && acc_x0
x01
landscape right
135°<phi<225°
|acc_y/acc_x|<1 && acc_x<0
x10
portrait upside
down
45°<phi<13
|acc_y/acc_x|1 && acc_y<0
x11
portrait upright
225°<phi<31
|acc_y/acc_x|1 && acc_y0
Table 16: High asymmetrical mode
orient
Name
Angle
Condition
x00
landscape left
297°<phi<63°
|acc_y/acc_x|<2 && acc_x0
x01
landscape right
117°<phi<243°
|acc_y/acc_x|<2 && acc_x<0
x10
portrait upside down
63°<phi<11
|acc_y/acc_x|2 && acc_y<0
x11
portrait upright
243°<phi<297°
|acc_y/acc_x|2 && acc_y0
Table 17: Low asymmetrical mode
orient
Name
Angle
Condition
x00
landscape left
333°<phi<27°
|acc_y/acc_x|<0.5 && acc_x0
x01
landscape right
153°<phi<207°
|acc_y/acc_x|<0.5 && acc_x<0
x10
portrait upside down
27°<phi<153°
|acc_y/acc_x|0.5 && acc_y<0
x11
portrait upright
207°<phi<333°
|acc_y/acc_x|0.5 && acc_y0
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
The engine uses 8 bits wide acceleration data for the orientation recognition.
For upside or downside orientation, the int_orient<2> in Register (0x1C-0x1F) INT_STATUS
has the definition
Table 18: upside and downside mode
MSB acc_z
0 upside
(270° < < 90°) acc_z >= 0
1 downside
(90° < < 270°) acc_z < 0
int_orient<2> also is computed when flat interrupt is activated.
Both portrait/landscape and upside/downside recognition use a hysteresis. The hysteresis for
portrait/landscape detection is configurable and applies to all conditions as described in the
tables below.
Table 19: Symmetrical mode
orient
Name
Angle
Condition
x00
landscape left
315°+hy <phi<
45°-hy
|acc_y|<|acc_x|-hyst && acc_x0
x01
landscape right
135°+hy <phi<
225°-hy
|acc_y|<|acc_x|-hyst && acc_x<0
x10
portrait upside
down
45°+hy <phi<
135°-hy
|acc_y|>|acc_x|+hyst && acc_y<0
x11
portrait upright
22+hy <phi<
315°-hy
|acc_y|>|acc_x|+hyst && acc_y0
Figure 10: Hysteresis in symmetrical mode
x-h h
-h
h
m=1 y
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
Table 20: High asymmetrical mode
orient
Name
Angle
Condition
x00
landscape left
297°+hy <phi<63°-hy
|acc_y|<2*(|acc_x|-hyst) && acc_x0
x01
landscape right
117°+hy <phi<243°-hy
|acc_y|<2*(|acc_x|-hyst) && acc_x<0
x10
portrait upside down
63°+hy <phi<117°-hy
|acc_y|>2*|acc_x|+hyst && acc_y<0
x11
portrait upright
243°+hy <phi<297°-hy
|acc_y|>2*|acc_x|+hyst && acc_y0
Figure 11: Hysteresis in high asymmetrical mode
Table 21: Low asymmetrical mode
orient
Name
Angle
Condition
x00
landscape left
333°+hy <phi<27°-hy
|acc_y|<(|acc_x|-hyst)/2 && acc_x0
x01
landscape right
153°+hy <phi<207°-hy
|acc_y|<(|acc_x|-hyst)/2 && acc_x<0
x10
portrait upside down
27°+hy <phi<153°-hy
|acc_y|>|acc_x|/2+hyst && acc_y<0
x11
portrait upright
207°+hy <phi<333°-hy
|acc_y|>|acc_x|/2+hyst && acc_y0
Figure 12: Hysteresis in low asymmetrical mode
x-h h
-h
h
m=2 y
x-h h
-h
h
m=½ y
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
The hysteresis for upside/downside detection is fixed to 11.5° which is ~200 mg (205 LSB in 2g
mode and is scalable with the g range).
Table 22: Upside/downside hysteresis for all 3 modes
orient
Name
Angle
Condition
0xx
upside
281.5°<Theta<78.5°
acc_z>200mg (|acc_z|>200mg and
acc_z0)
1xx
downside
101.5°<phi<258°
acc_z<-200mg (|acc_z|>200mg and
acc_z<0)
2.6.5.1 Blocking
It is be possible to block the orientation detection (no orientation interrupt will be triggered). The
orientation interrupt blocking feature is configurable via the int_orient_blocking in Register
(0x65-0x66) INT_ORIENT bits in the following manner:
“00” Interrupt blocking is disabled
“01” Interrupt blocked if device close to the horizontal position or acceleration of any axis
>1.5g
“10” Interrupt blocked if device close to the horizontal position or acceleration of any axis
>1.5g or slope>0.2g (for 3 consecutive data samples)
“11” Interrupt blocked if device close to the horizontal position or slope>0.4g or acceleration
of any axis>1.5g or another orientation change within 100ms (same orientation and acc <1.5g
for 100ms)
For all states where interrupt blocking through slope detection is used, the interrupt is re-
enabled after the slope has been below the threshold for 3 times in a row.
For all states where 100ms interrupt blocking is enabled, in order to trigger the interrupt, the
orientation remains the same (stable) until the timer runs out (for ~100ms). The timer starts to
count when orientation changes between two consecutive samples. If the orientation changes
while timer is still counting, the timer is restarted.
The theta blocking (phone close to the horizontal position) is defined by the following inequality:
((theta_blk)6 * ((acc_z)SAT * (acc_z)SAT)6 )10 > ((acc_x)SAT * (acc_x)SAT)10 + ((acc_y)SAT *
(acc_y)SAT)10
where:
()6 means usage of 6-bit arithmetic (6 MSBs from a value is used);
()SAT means absolute value reduced to 6 bits saturated to 1g (MSB-1 is taken as MSB,
saturation arithmetic for this conversion)
If other than 2g range is selected, acceleration values shall be amplified before blocking
computation to have the same scale as in 2g range.
2.6.5.2 Interrupt generation and latching
The orientation interrupt is triggered at every change of the int_orient status register value. If
register bit int_orient_ud_en in Register (0x65-0x66) INT_ORIENT is ‘1’, then all bits in the
int_orient register, those indicating the portrait/landscape orientation, as well as those indicating
the upside/downside orientation are considered for the generation of the interrupt condition. If
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
register bit int_orient_ud_en is 0’, then only the bits in the int_orient register that indicate the
portrait/landscape orientation are considered for the generation of the interrupt condition, while
those bits indicating the upside/downside orientation are ignored. The bit indicating
upside/downside orientation is int_orient<2>, while the bit-field indicating the portrait/landscape
orientation is int_orient<1:0>. If orient_ud_en is ‘0’ then the int_orient<2> status bit is 0.
In case the orientation interrupt condition has been satisfied the orientation relevant fields in
Register (0x1C-0x1F) INT_STATUS are updated.
2.6.5.3 Rotation of the Reference Coordinate System
The given specification is valid for an upright mounted PCB. In order to also enable horizontal
mounting, x and z axis can be exchanged via the register int_axes_ex for the flat and orientation
interrupt. For all other interrupts and in all other functions, e.g. data registers and FIFO, the x, y,
and z axes will not be affected. The x-, y-, z-axis will keep right-hand principle after the
exchange
2.6.6 Flat Detection (Accel)
This interrupt detects flat orientation. This interrupt fires when the device gets into horizontal
position (int_flat=1 e.g. it is being placed on a table) or when it goes out of it (int_flat=0
e.g. it is picked up).
The interrupt is configured in the Register (0x67-0x68) INT_FLAT. The condition for activating
the interrupt is:
[((theta_flat)6 * ((acc_z)SAT*(acc_z)SAT )6 )10 (“000000” & int_flat_hy) >= ((acc_x)SAT*(acc_x)SAT
)10 + ((acc_y)SAT * (acc_y)SAT )10 AND (no_movement)
The condition to deactivate the interrupt in non-latched mode is:
[((theta_flat)6 * ((acc_z)SAT*(acc_z)SAT )6 )10 + (“000000” & int_flat_hy) < ((acc_x)SAT*(acc_x)SAT
)10 + ((acc_y)SAT * (acc_y)SAT )10] OR NOT (no_movement)
no_movement is “0” if slope > 0.2g for 3 consecutive samples when orient_blocking = “10”
no_movement is “0” if slope > 0.4g for 3 consecutive samples when orient_blocking = “11”
If no_movement is “1”, then flat interrupt is reset.
θ
Figure 13: Flat Orientation Angles
Theta
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
Before the interrupt is actually fired, the device must remain flat for a certain period (e.g.
int_flat_hold_time = 1s).
Note:
Rotation of the Reference Coordinate System is possible for the Flat interrupt, see chapter
2.6.5.3.
2.6.7 Low-g / free-fall Detection (Accel)
For freefall detection, the absolute values of the acceleration data of all axes are observed
(global criteria). There are two modes of this interrupt single and sum. The mode is selected
by the register int_low_mode (‘1’ means sum mode). In the single mode, absolute value of the
acceleration of each axis is compared with the threshold int_low_th. In the sum mode, a sum of
the absolute values of all accelerations |acc_x| + |acc_y| + |acc_z| is compared with the
threshold. The int_low_mode bit is only enabled when int_low_mode_en is set. If
int_low_mode_en is 0’ then sum mode is enabled and the int_low_mode bit has no function.
The int_low_mode_en bit is NVM backed in an extended page.
The interrupt will be generated if the threshold is exceeded and the measured acceleration
stays below the hysteresis level int_low_th+int_low_hy for some minimum number of
samples(int_low_dur).
time
time
time
low_th + low_hy
low_th
low_dur
INT
non-latched
latched
counter
value
Figure 14: Free-fall detection
acceleration
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
2.6.8 High-g detection (Accel)
This interrupt is configured in the Register (0x5A-0x5E) INT_LOWHIGH. The interrupt is
asserted if the absolute value of acceleration data of at least one enabled axis exceeds the
programmed threshold int_high_th and the sign of the value does not change for a minimum
duration of int_high_dur. The interrupt condition is cleared when the absolute value of
acceleration data of all selected axes falls below the threshold int_high_th minus the hysteresis
int_high_hy or if the sign of the acceleration value changes. The X, Y and Z axes are enabled
with the int_high_en_x, int_high_en_y, and int_high_en_z, respectively.
When the high-g interrupt is triggered, the signals of the axis that has triggered the interrupt
(int_high_first_x, int_high_first_y, int_high_first_z) and the motion direction (int_high_sign) are
set in the Register (0x1C-0x1F) INT_STATUS.
If this interrupt is triggered in latch mode it stays blocked (disabled) until the latching is cleared.
Figure 15: Free-fall detection
2.6.9 Slow-Motion Alert / No-Motion Interrupt (Accel)
This interrupt engine monitors the slopes of each axis. The interrupt is configured in the
Register (0x5F-0x62) INT_MOTION. It behaves similar to the any-motion interrupt, but with a
different set of the parameters. As the only difference between the slow-motion interrupt and the
any-motion interrupt, the slow-motion engine doesn’t store the information which axis has
triggered the interrupt and in which direction.
The slow-motion/no-motion interrupt engine can be configured in two modes. It can act as an
interrupt very similar to the any-motion interrupt, where the slope on the selected axis is
monitored and an interrupt is generated when a slope threshold is exceeded for a
programmable number of samples. The figure below illustrates the operation of the slow-motion
interrupt engine in terms of relevant signals and timing.
acceleration
INT
high_th
non-latched
latched
high_dur
time
high_dur
-high_th
counter
time
time
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
The interrupt engine can also be configured as a no-motion interrupt, where an interrupt is
generated when the slope on all selected axis remains smaller than a programmable threshold
for a programmable time. In order to save register space, some configuration registers have
different interpretations depending on the selected mode. The signals and timings relevant to
the no-motion interrupt functionality are depicted in the figure below.
INT
slope
acc(t0+Δt)
acc(t0)
slope(t0+Δt)= acc(t0+Δt) - acc(t0)
time
time
time
slo_no_mot_d
ur
slo_no_mot_d
ur
latched
unlatche
d
slo_no_mot_t
h
Figure 16: Slow motion, no motion
acceleration
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
Figure 17: Signal timings no motion interrupt
The figure below shows the differences in the logic operation between the slow-motion and no-
motion interrupt functionality.
Figure 18: Slow motion interrupt mode
Figure 19: No motion interrupt mode
acceleration
slo_no_mot_th
-slo_no_mot_th
slope
time
axis x, y, or z
axis x, y, or z
slo_no_mot_dur
timer
INT
slope(t0+Δt)= acc(t0+Δt) - acc(t0)
acc(t0+Δt)
acc(t0)
slo_no_mot_th
slope_z
slope_y
slope_x
INT
Counter
Timer
slo_no_mot_dur
slo_no_mot_en_z
slo_no_mot_dur
INT
slo_no_mot_en_y
slo_no_mot_en_x
slo_no_mot_th
slope_z
slope_y
slope_x
slo_no_mot_en_z
slo_no_mot_en_y
slo_no_mot_en_x
Slow-Motion Interrupt Mode
No-Motion Interrupt Mode
>
>
>
>
>
>
slo_no_mot_th
slope_z
slope_y
slope_x
INT
Counter
Timer
slo_no_mot_dur
slo_no_mot_en_z
slo_no_mot_dur
INT
slo_no_mot_en_y
slo_no_mot_en_x
slo_no_mot_th
slope_z
slope_y
slope_x
slo_no_mot_en_z
slo_no_mot_en_y
slo_no_mot_en_x
Slow-Motion Interrupt Mode
No-Motion Interrupt Mode
>
>
>
>
>
>
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
2.6.9.1 Register slo_no_mot_dur
The meaning of register int_slo_no_mot_dur changes depending on the state of the no_mot_sel
configuration bit. If int_no_mot_sel =’0’, register int_slo_no_mot_dur defines the number of
consecutive slope data points of the selected axis which must exceed the threshold value
int_slo_no_mot_th for an interrupt to be asserted. The functionality is compliant to the original
slow-motion interrupt and also the any-motion interrupt. Register (0x5F-0x62) INT_MOTION
lists the relationship between the setting of int_slo_no_mot_dur and the number of slope data
points filtered prior to asserting the interrupt.
However, if no_mot_sel =’1’, register int_slo_no_mot_dur defines the time no slope data point of
any of the selected axis must exceed the threshold value int_slo_no_mot_th for an interrupt to
be asserted. The tick times of 1.28s, 5.12s and 10.24s depend on the value programmed into
int_slo_no_mot_dur<5:0>. By means of using variable tick times, a no-motion delay between 1s
and 430s may be adjusted with a register with a width of six bits.
2.6.9.2 Register slo_no_mot_th
The int_slo_no_mot_th register defines the threshold against which the calculated slope values
of each axis are compared. The scaling is independent on the selected interrupt mode. The
user must scale the int_slo_no_mot_th value according to the adjusted range.
2.6.10 Data Ready Detection (Accel, Gyro and external sensors)
This interrupt fires whenever a new data sample from accel and gyro is complete. This allows a
low latency data readout.
The data update detection monitors the data_update signals for all axes and sensors. It
generates an interrupt as soon as the values for all axes and sensors which are required for the
configured output data rates have been updated.
The interrupt is cleared automatically when the update for the next sample starts or the data is
read out from the data register.
2.6.11 PMU Trigger (Gyro)
Whenever a PMU (power management unit) trigger (either wakeup or sleep) is issued,
wakeup_int in Register (0x6C) PMU_TRIGGER configures if an interrupt is send to the
application processor. If the AP wants to trigger sleeps itself for the gyro, the
gyr_wakeup_trigger is configured accordingly and no wakeup triggers are issued.
The PMU trigger interrupt is from the system perspective used in a similar manner as the
anymotion and nomotion interrupts. The PMU trigger interrupt follows the Register (0x54)
INT_LATCH configuration for resetting the interrupt.
2.6.12 FIFO Interrupts (Accel, Gyro, and external sensors)
The FIFO supports two interrupts, a FIFO full interrupt and a watermark interrupt. The FIFO full
interrupt is issued when the FIFO is full and the next full data sample would cause a FIFO
overflow, which may lead to samples being deleted. Technically, that means that a FIFO full
interrupt is issued, whenever less space than two maximum size frames is left in the FIFO. The
FIFO watermark interrupt is fired, when the FIFO fill level in fifo_byte_counter in Register (0x22-
0x23) FIFO_LENGTH is above a pre-configured watermark, defined in fifo_watermark in
Register (0x46-0x47) FIFO_CONFIG.
Note: The unit of fifo_watermark is 4 bytes whereas the unit of fifo_byte_counter is single bytes.
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
2.7 Step Counter
The step counter implements the function required for step counting in Android 4.4 and greater:
https://source.android.com/devices/sensors/composite_sensors.html#counter
The step counter accumulates the steps detected by the step detector interrupt. Based on more
sophisticated algorithms, the step counter features a higher accuracy and reporting latency than
the step detector interrupt described in Chapter 2.6.3.
The step counter is configurable to the following modes through the step detector settings:
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)
The step counter is enabled and reset with step_cnt_en in Register (0x7A-0x7B) STEP_CONF.
The step counter shares its configuration with the step detector interrupt in Register (0x7A-
0x7B) STEP_CONF.
More details can be found in the according step counter application note.
2.8 Device self test
This feature permits to check the sensor functionality via a built-in self-test (BIST). The
accelerometer has a comprehensive self test function for the MEMS element, the gyroscope
implements a simple self-test/life-test.
2.8.1 Self-test accelerometer
By applying electrostatic forces to the sensor core instead of external accelerations, the entire
signal path of the sensor can be tested. Activating the self-test results in a static offset of the
acceleration data; any external acceleration or gravitational force applied to the sensor during
active self-test will be observed in the output as a superposition of both acceleration and self-
test signal. All three axes are activated at the same time.
Before the self-test is enabled the g-range should be set to 8 g. The Register (0x40)
ACC_CONF has to be set to value 0x2C (acc_odr=1600Hz; acc_bwp=2; acc_us=0). Otherwise
the accelerometer self-test mode will not function correctly.
The self-test is activated by writing the value ´0b01´ to the acc_self_test_enable bits in the
Register (0x6D) SELF_TEST. It is possible to control the direction of the deflection of all 3 axes
through the bit acc_self_test_sign. The excitations occurs in negative (positive) direction if
self_test_sign = ´0b0´ (´0b1´). The amplitude of the deflection has to be set high by writing
acc_self_test_amp=´0b1´. After the self-test is enabled, the user should wait 50 ms before
interpreting the acceleration data
In order to ensure a proper interpretation of the self-test signal it is recommended to perform the
self-test for both (positive and negative) directions and then to calculate the difference of the
resulting acceleration values. The table below shows the minimum absolute differences for each
axis. The actually measured absolute signal differences can be significantly larger.
BMI160
Data sheet
BST-BMI160-DS000-07 | Revision 0.8 | February 2015 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.
Table 23: Accelerometer self test minimum difference values
x-axis signal
y-axis signal
z-axis signal
Minimum
difference signal
2 g
2 g
2 g
It is recommended to perform a reset of the device after a self-test has been performed. If the
reset cannot be performed, the following sequence must be kept to prevent unwanted interrupt
generation: disable interrupts, change parameters of interrupts, wait for at least 50ms, enable
desired interrupts.
2.8.2 Self-test gyroscope
The gyroscope BIST can be triggered during normal operation mode. It checks the sensors
drive amplitude, its frequency and the stability of the drive control loop. Hence, disturbances of
the movement by particles, mechanical damage or pressure loss can be detected.
The self-test for the gyroscope will be started by writing a ‘1’ to gyr_self_test_enable in Register
(0x6D) SELF_TEST. The result will be in gyr_self_test_ok in
Register (0x1B) STATUS.
In addition, any particles or damages can be easily identified in a „Manual Performance Check“.
Due to the outstanding offset and noise performance the measured values at zero-rate fit the
specified performance.
2.9 Offset Compensation
BMI160 offers fast and manual compensation as well as inline calibration.
Fast offset compensation is performed with pre-filtered data, and the offset is then applied to
both, pre-filtered and filtered data. If necessary the result of this computation is saturated to
prevent any overflow errors (the smallest or biggest possible value is set, depending on the
sign).
The public offset compensation Register (0x71-0x77) OFFSET are images of the corresponding
registers in the NVM. With each image update (see chapter 2.10 for details) the contents of the
NVM registers are written to the public registers. The public registers can be overwritten by the
user at any time. Offset compensation needs to be enabled through gyr_off_en and acc_off_en
in Register (0x71-0x77) OFFSET.
2.9.1 Fast offset compensation
Fast offset compensation (FOC) is a one-shot process that compensates offset errors of
accelerometer and gyro by setting the offset compensation registers to the negated offset error.
This is best suited for “end-of-line trimming” with the customers device positioned in a well-
defined orientation.
Before triggering, the FOC needs to be configured via the Register (0x69) FOC_CONF.
Accelerometer and gyroscope FOC can be separately disabled or enabled. Gyroscope target
value is always 0 dps, for the accelerometer the target value has to be defined for each channel
(-1g, 0g, +1g) dependi