BNO055 9DOF Datasheet
BNO055 9DOF Datasheet
BNO055 9DOF Datasheet
BNO055
Intelligent 9-axis absolute orientation sensor
Bosch Sensortec
BNO055
INTELLIGENT ABSOLUTE ORIENTATION SENSOR, 9-AXIS SENSOR FUSION
ALL-IN-ONE WINDOWS 8.x COMPLIANT SENSOR HUB
Basic Description
Key features:
Outputs fused sensor data Quaternion, Euler angles, Rotation vector,
Linear acceleration, Gravity, Heading
3 sensors in one device an advanced triaxial 16bit gyroscope, a versatile,
leading edge triaxial 14bit accelerometer and a
full performance geomagnetic sensor
Small package LGA package 28 pins
Footprint 3.8 x 5.2 mm, height 1.13 mm
Power Management Intelligent Power Management: normal,
low power and suspend mode available
Common voltage supplies VDD voltage range: 2.4V to 3.6V
Digital interface HID-I2C (Windows 8 compatible), IC, UART
VDDIO voltage range: 1.7V to 3.6V
Consumer electronics suite MSL1, RoHS compliant, halogen-free
Operating temperature: -40C ... +85C
Accelerometer features
Programmable functionality Acceleration ranges 2g/4g/8g/16g
Low-pass filter bandwidths 1kHz - <8Hz
Operation modes:
- Normal
- Suspend
- Low power
- Standby
- Deep suspend
On-chip interrupt controller Motion-triggered interrupt-signal generation for
- any-motion (slope) detection
- slow or no motion recognition
- high-g detection
Gyroscope features
Programmable functionality Ranges switchable from 125/s to 2000/s
Low-pass filter bandwidths 523Hz - 12Hz
Operation modes:
- Normal
- Fast power up
- Deep suspend
- Suspend
- Advanced power save
On-chip interrupt controller Motion-triggered interrupt-signal generation for
- any-motion (slope) detection
- high rate
Magnetometer features
Flexible functionality Magnetic field range typical 1300T (x-, y-axis);
2500T (z-axis)
Magnetic field resolution of ~0.3T
Operating modes:
- Low power
- Regular
- Enhanced regular
- High Accuracy
Power modes:
- Normal
- Sleep
- Suspend
- Force
Typical applications
Navigation
Robotics
Fitness and well-being
Augmented reality
Context awareness
Tablets and ultra-books
General description
The corresponding chip-sets are integrated into one single 28-pin LGA 3.8mm x 5.2mm x
1.1 mm housing. For optimum system integration the BNO055 is equipped with digital bi-
2 2
directional I C and UART interfaces. The I C interface can be programmed to run with the
HID-I2C protocol turning the BNO055 into a plug-and-play sensor hub solution for devices
running the Windows 8.0 or 8.1 operating system.
This datasheet release describes the BNO055 engineering samples programmed with
version 0.3.0.4 of the BNO055 firmware. The firmware version can be identified by read
SW_REV_ID_MSB and SW_REV_ID_LSB registers; firmware version 0.3.0.4 will return the
value 0x03 for the MSB and 0x04 for the LSB.
Contents
BASIC DESCRIPTION ................................................................................................................... 2
SPECIFICATION .......................................................................................................................... 11
1.1 ELECTRICAL SPECIFICATION ............................................................................................... 11
1.2 ELECTRICAL AND PHYSICAL CHARACTERISTICS, MEASUREMENT PERFORMANCE .................... 12
Table of Figures
Figure 1: system architecture ...............................................................................................17
Figure 2: Principle of any-motion detection ...........................................................................47
Figure 3: High rate interrupt ..................................................................................................49
Figure 4: Principle of any-motion detection ...........................................................................51
Figure 5: IC timing diagram ............................................................................................... 101
Figure 6: IC write ...............................................................................................................102
Figure 7: IC multiple read .................................................................................................. 103
Figure 8: Pin-out bottom view .............................................................................................106
2
Figure 9: I C connection diagram .......................................................................................108
Figure 10: UART connection diagram ................................................................................109
Figure 11 : HID via IC connection diagram ......................................................................... 110
Figure 12 : External 32kHz Crystal Oscillator with Load Capacitor ..................................... 111
Figure 13: device axis orientation ....................................................................................... 113
Figure 14: Landing pattern recommendation ...................................................................... 114
List of Tables
Specification
If not stated otherwise, the given values are over lifetime and full performance temperature
and voltage ranges.
Voltage Output VDDIO_VOH VDDIO > 3V , IOH =10mA 0.9 0.8 -- VDDIO
High Level (UART, I2C)
POR Voltage threshold VDDIO_POT+ VDDIO falls at 1V/ms or slower -- 1.45 -- V
on VDDIO-IN rising
POR Voltage threshold VDDIO_POT- -- 0.99 -- V
on VDDIO-IN falling
Operating Temperature TA -- -40 -- +85 C
Total supply current IDD + IDDIO VDD = 3V, VDDIO = 2.5V -- -- 13.7 mA
normal mode at TA
(9DOF @100Hz output
data rate)
Total supply current IDD_LPM VDD = 3V, VDDIO = 2.5V -- 2.6 -- mA
Low power mode;
interrupt driven at TA
(80% suspend mode
and 20% normal mode
with 9DOF @100Hz
output data rate)
Total supply current IDD_SuM VDD = 3V, VDDIO = 2.5V -- -- 0.12 mA
suspend mode at TA
gFS8g 8 g
gFS16g 16 g
bw31 31 Hz
bw63 63 Hz
bw125 125 Hz
bw250 250 Hz
bw500 500 Hz
bw1000 1,000 Hz
RFS500 500 /s
RFS1000 1,000 /s
RFS2000 2,000 /s
Sensitivity Change over TCS Nominal VDD supplies -40C 0.03 0.07 %/K
Temperature T +85C RFS2000
A
RFS1000, RFS2000
Zero- Offset Change TCO Nominal VDD supplies -40C 0.015 0.03 /s per K
T +85C RFS2000
over Temperature A
(@ 0.014/s/Hz)
Bandwidth BW f 523 Hz
-3dB 230
116
64
47
32
23
12
1
Full linear measurement range considering sensor offsets.
2
The heading accuracy depends on hardware and software. A fully calibrated sensor and ideal tilt
compensation are assumed.
3
Definition: gain error = ( (measured field after API compensation) / (applied field) ) 1
4
Magnetic zero-B offset assuming calibration in fusion mode. Typical value after applying
calibration movements containing various device orientations (typical device usage).
BST-BNO055-DS000-10 | Revision 1.0 | July 2014 Bosch Sensortec
Bosch Sensortec GmbH reserves all rights even in the event of industrial property rights. We reserve all rights of disposal such as copying and passing on
to third parties. BOSCH and the symbol are registered trademarks of Robert Bosch GmbH, Germany.
Note: Specifications within this document are subject to change without notice.
BNO055
Data sheet Page 15
Passive Storage Temp. Trps 65% rel. H. -50 (TBD) +150 (TBD) C
Range
ESDMM MM 200 V
Note: Stress above these limits may cause damage to the device. Exceeding the specified
electrical limits may affect the device reliability or cause malfunction.
3. Functional Description
3.1 Architecture
Fehler! Verweisquelle konnte nicht gefunden werden. shows the basic building blocks of
the BNO055 device.
BNO055
Magnetometer
Accelerometer
Gyroscope
INT2
INT1 SPI
Microcontroller
Sensor Fusion Power Management
Host Processor
For the switching sequence of power supply VDD and VDDIO it is mandatory that VDD is
powered on and driven to the specified level before or at the same time as VDDIO is powered
ON. Otherwise there are no limitations on the voltage levels of both pins relative to each
other, as long as they are used within the specified operating range.
The BNO055 can be configured to run in one of the following power modes: normal mode,
low power mode, and suspend mode. These power modes are described in more detail in
section 3.4.
The BNO055 can be operated in various operating modes depending on the output data
required and for effective power usage. Table 3-1 below explains the outputs available in
each of the various operation modes
5
M4G Magnet for Gyroscope; Gyroscope signal is emulated by the magnetometer.
6
FMC Fast magnetic calibration; when turned-off the magnetometer must be calibrated
using a figure of eight motion.
7
In NDOF mode FMC is active; magnetic calibration is perform in the background with small
movement of the device.
BST-BNO055-DS000-10 | Revision 1.0 | July 2014 Bosch Sensortec
Bosch Sensortec GmbH reserves all rights even in the event of industrial property rights. We reserve all rights of disposal such as copying and passing on
to third parties. BOSCH and the symbol are registered trademarks of Robert Bosch GmbH, Germany.
Note: Specifications within this document are subject to change without notice.
BNO055
Data sheet Page 20
The operating mode can be select by writing to the OPR_MODE register, possible register
values and the corresponding operating modes are shown in Table 3-2. The default
operation mode after power-on is Config mode.
Config mode is used to configure the various settings of the BNO, in this mode all output
data is reset to zero and sensor fusion is halted.
The following registers may be configured in all operation modes, all other registers can only
be configured while in config mode:
Sensor interrupts
Interrupt registers (INT and INT_MSK).
System configurations
Operation mode register (OPR_MODE), only config mode is configurable
In the fusion modes, the calibrated sensor data are available in the data register based on
the unit selected. The axis of the data is configured based on the axis-remap register
configuration.
In this mode, BNO works according to fusion mode configuration and user can not configure
the sensor power mode like deep suspend, suspend and sleep mode when sensor is ON
and it is over written as normal mode while switching from config mode to any fusion mode.
As similar, user can not configure the sensor power mode as normal mode when sensor is
OFF and it is over written as deep suspend or suspend while switching from config mode to
any fusion mode.
For example:
In IMU mode, the accelerometer, gyroscope should be ON and magnetometer should be
OFF. If the user configures the accelerometer, gyroscope to deep suspend mode and
magnetometer to forced mode, then the user configuration is over written with normal mode
Apart from the power mode, the fixed range and bandwidth is configured as mentioned
below,
User configuration is over written in the register map when switching from config mode to
any fusion mode if the user configures something other than above.
In the sensor modes, the un-calibrated sensor data are available in the data register based
on the unit selected. The axis of the data is configured based on the axis-remap register
configuration.
In this mode, BNO works according to user configuration when a particular sensor is ON
while switching from config mode to sensor mode. In the OFF condition BNO works
according to sensor mode configuration. At any time later, user changes to fusion mode then
the register map will get updated as fusion mode configuration and BNO will work according
to fusion mode configuration later on. So user has to handle to do the proper configuration
whenever he switches from one operation mode to another.
Table 3-3 below shows the time required to switch between CONFIGMODE and the other
operating modes.
Additionally, the interrupt pins can also be configured to provide HW interrupt to the host. For
details, please refer to section 3.7.5.
The BNO055 is by default configured to have optimum values for entering into sleep and
waking up. To restore these values, trigger system reset by setting RST_SYS bit in
SYS_TRIGGER register.
There are some limitations to achieve the low power mode performance:
Only No and Any motion interrupts are applicable and HG, Slow interrupts are not
applicable in low power mode.
Low power mode is not applicable in operation mode were accelerometer sensor is
OFF.
There are two bits are used to configure the axis remap which will define in the following
way,
Also, when user try to configure the same axis to two or more then BNO055 will take this as
invalid condition and previous configuration will be restored in the register map. The default
value is: X Axis = X, Y Axis = Y and Z Axis = Z (AXIS_REMAP_CONFIG = 0x24).
Value Sign
0 Positive
1 Negative
The default values correspond to the following coordinate system (see also chapter 6.2):
Z; z; z
X; x; x
Y; y; y
TOP VIEW
Bottom View
For the above described placements, following would be the axis configuration parameters.
Example: For a device with a coordinate system as shown in the following figure the axis
remapping of placement P0 (see table above) applies:
The accelerometer sensor operation mode is not configurable by user when BNO power
mode is configured as low power mode. BNO rewrites the user configured value to Normal
mode when switching from config mode to any BNO operation mode. This used to achieve
the BNO low power mode performance.
At power-on the sensors are configured with the default settings as defined in Table 3-8
below when switching BNO operation mode from config to NDOF.
3.7.3.2.1 FASTEST_MODE
Table 3-12: FASTEST_MODE
3.7.3.2.2 GAME_MODE
Table 3-13: GAME_MODE
3.7.3.2.3 UI_MODE
Table 3-14: UI_MODE
3.7.3.2.4 NORMAL_MODE
Table 3-15: NORMAL_MODE
The soft iron correction matrix feature should only be used if a distortion free magnetic
environment is available to create the required matrix, for further details please refer to the
appropriate application note.
There are 6 bytes required to configure the accelerometer offset (2 bytes for each of the 3
axis X, Y and Z). Configuration will take place only when the user writes the last byte (i.e.,
ACC_OFFSET_Z_MSB). Therefore the last byte must be written whenever the user wants to
changes the configuration. The range of the offsets varies based on the G-range of
accelerometer sensor.
Unit Representation
2 2
m/s 1 m/s = 100 LSB
mg 1 mg = 1 LSB
There are 6 bytes required to configure the magnetometer offset (bytes (2 bytes for each of
the 3 axis X, Y and Z). Configuration will take place only when the user writes the last byte
(i.e., MAG_OFFSET_Z_MSB). Therefore the last byte must be written whenever the user
wants to changes the configuration. The range of the magnetometer offset is +/-6400 in LSB.
Unit Representation
T 1 T = 16 LSB
There are 6 bytes required to configure the gyroscope offset (bytes (2 bytes for each of the 3
axis X, Y and Z). Configuration will take place only when the user writes the last byte (i.e.,
GYR_OFFSET_Z_MSB). Therefore the last byte must be written whenever the user wants to
changes the configuration. The range of the offset varies based on the dps-range of
gyroscope sensor.
Unit Representation
Dps 1 Dps = 16 LSB
Rps 1 Rps = 900 LSB
3.7.3.5 Radius
There are 4 bytes (2 bytes for each accelerometer and magnetometer) to configure the
radius. Configuration will take place only when user writes to the last byte (i.e.,
ACC_RADIUS_MSB and MAG_RADIUS_MSB). Therefore the last byte must be written
whenever the user wants to changes the configuration. The range of the radius for
accelerometer is +/-1000, magnetometer is +/-960 and Gyroscope is NA.
In fusion mode the fusion algorithm output offset compensated acceleration data for each
axis X/Y/Z, the output data can be read from the appropriate ACC_DATA_<axis>_LSB and
ACC_DATA_<axis>_MSB registers.
Table 3-16 and Table 3-17 describe the output data type and data representation (depending
on selected unit, see Table 3-9)
Unit Representation
2 2
m/s 1 m/s = 100 LSB
mg 1 mg = 1 LSB
In sensor mode uncompensated field strength data for each axis X/Y/Z, can be read from the
appropriate MAG_DATA_<axis>_LSB and MAG_DATA_<axis>_MSB registers.
In fusion mode the fusion algorithm output offset compensated magnetic field strength data
for each axis X/Y/Z, the output data can be read from the appropriate
MAG_DATA_<axis>_LSB and MAG_DATA_<axis>_MSB registers.
Table 3-18 and Table 3-19 describe the output data type and data representation (depending
on selected unit, see Table 3-9)
Unit Representation
T 1 T = 16 LSB
In sensor mode uncompensated angular velocity (yaw rate) data for each axis X/Y/Z, can be
read from the appropriate GYR_DATA_<axis>_LSB and GYR_DATA_<axis>_MSB
registers.
In fusion mode the fusion algorithm output offset compensated angular velocity (yaw rate)
data for each axis X/Y/Z, the output data can be read from the appropriate
GYR_DATA_<axis>_LSB and GYR_DATA_<axis>_MSB registers.
Table 3-20 and Table 3-21 describe the output data type and data representation (depending
on selected unit, see Table 3-9)
Unit Representation
Dps 1 Dps = 16 LSB
Rps 1 Rps = 900 LSB
The fusion algorithm output offset and tilt compensated orientation data in Euler angles
format for each DOF Heading/Roll/Pitch, the output data can be read from the appropriate
EUL<dof>_LSB and EUL_<dof>_MSB registers.
Table 3-22 and Table 3-23 describe the output data type and data representation (depending
on selected unit, see Table 3-9)
Unit Representation
Degrees 1 degree = 16 LSB
Radians 1 radian = 900 LSB
The fusion algorithm output offset and tilt compensated orientation data in quaternion format
for each DOF w/x/y/z, the output data can be read from the appropriate
QUA_DATA_<dof>_LSB and QUA_DATA_<dof>_MSB registers.
Table 3-24 and Table 3-25 describe the output data type and data representation
Unit Representation
1 Quaternion (unit less)
Quaternion (unit less)
= 2^14 LSB
The fusion algorithm output linear acceleration data for each axis x/y/z, the output data can
be read from the appropriate LIA_DATA_<axis>_LSB and LIA_DATA_<axis>_MSB
registers.
Table 3-26 and Table 3-27 describe the output data type and data representation (depending
on selected unit, see Table 3-9).
Unit Representation
2 2
m/s 1 m/s = 100 LSB
mg 1 mg = 1 LSB
The fusion algorithm output gravity vector data for each axis x/y/z, the output data can be
read from the appropriate GRV_DATA_<axis>_LSB and GRV_DATA_<axis>_MSB
registers.
Table 3-28 and Table 3-29 describe the output data type and data representation (depending
on selected unit, see Table 3-9).
Unit Representation
2 2
m/s 1 m/s = 100 LSB
mg 1 mg = 1 LSB
3.7.4.8 Temperature
The temperature output data can be read from the TEMP register. Table 3-30 and Table 3-31
describe the output data type and data representation (depending on selected unit, see
Table 3-9).
The temperature can be read from one of two sources, the temperature source can be
selected by writing to the TEMP_SOURCE register as detailed in Table 3-32.
Unit Representation
C 1C = 1 LSB
F 2 F = 1 LSB
3.7.4.9 Revision Id
The revision id for accelerometer, magnetometer and gyroscope can be read from the
following register:
3.7.5 Interrupts
3.7.5.1 Interrupt Pin
INT is configured as interrupt pin for signaling an interrupt to the host. The interrupt trigger is
configured as raising edge and is latched on to the INT pin. Once an interrupt occurs, the
INT pin is set to high and will remain high until it is reset by host. This can be done by setting
RST_INT in SYS_TRIGGER register.
In slow-motion mode an interrupt is triggered when the measured slope of at least one
enabled axis exceeds the programmable slope threshold for a programmable number of
samples. Hence the engine behaves similar to the any-motion interrupt, but with a different
set of parameters. In order to suppress false triggers, the interrupt is only generated
(cleared) if a certain number N of consecutive slope data points is larger (smaller) than the
slope threshold given by slo_no_mot_dur<1:0>. The number is N = slo_no_mot_dur<1:0> +
1.
In no-motion mode an interrupt is generated if the slope on all selected axes remains smaller
than a programmable threshold for a programmable delay time. Figure 11 shows the timing
diagram for the no-motion interrupt. The scaling of the threshold value is identical to that of
the slow-motion interrupt. However, in no-motion mode register slo_no_mot_dur defines the
delay time before the no-motion interrupt is triggered. Table 3-33 lists the delay times
adjustable with register slo_no_mot_dur. The timer tick period is 1 second. Hence using
short delay times can result in considerable timing uncertainty.
If bit SM/NM is set to 1 (0), the no-motion/slow-motion interrupt engine is configured in the
no-motion (slow-motion) mode. Common to both modes, the engine monitors the slopes of
the axes that have been enabled with bits AM/NM_X_AXIS, AM/NM_Y_AXIS, and
AM/NM_Z_AXIS for the x-axis, y-axis and z-axis, respectively. The measured slope values
are continuously compared against the threshold value defined in register
ACC_NM_THRES. The scaling is such that 1 LSB of ACC_NM_THRES corresponds to 3.91
mg in 2g-range (7.81 mg in 4g-range, 15.6 mg in 8g-range and 31.3 mg in 16g-range).
Therefore the maximum value is 996 mg in 2g-range (1.99g in 4g-range, 3.98g in 8g-range
and 7.97g in 16g-range). The time difference between the successive acceleration samples
depends on the selected bandwidth and equates to 1/(2 * bw).
acceleration acc(t0+t)
acc(t0)
axis x, y, or z
-slo_no_mot_th
slo_no_mot_dur
timer
INT
time
The any-motion interrupt uses the slope between successive acceleration signals to detect
changes in motion. An interrupt is generated when the slope (absolute value of acceleration
difference) exceeds a preset threshold. It is cleared as soon as the slope falls below the
threshold. The principle is made clear in Figure 2: Principle of any-motion detection.
acceleration
acc(t0)
acc(t01/(2*bw))
time
slope(t0)=acc(t0)acc(t01/(2*bw))
slope
slope_th
time
slope_dur slope_dur
INT
time
The time difference between the successive acceleration signals depends on the selected
bandwidth and equates to 1/(2*bandwidth) (t=1/(2*bw)). In order to suppress false triggers,
the interrupt is only generated (cleared) if a certain number N of consecutive slope data
points is larger (smaller) than the slope threshold given by ACC_AM_THRES. This number
is set by the AM_DUR bits. It is N = AM_DUR + 1.
detection are fulfilled and the slope interrupt is generated if the slope of any of the enabled
axes exceeds the threshold ACC_AM_THRES for [AM_DUR +1] consecutive times. As soon
as the slopes of all enabled axes fall or stay below this threshold for [AM_DUR +1]
consecutive times the interrupt is cleared unless interrupt signal is latched.
This interrupt is based on the comparison of acceleration data against a high-g threshold for
the detection of shock or other high-acceleration events.
The high-g interrupt is enabled (disabled) per axis by writing 1 (0) to bits ACC_HIGH_G in
the INT_EN register and enabling the axis in with bits HG_X_AXIS, HG_Y_AXIS, and
HG_Z_AXIS, respectively in the ACC_INT_Settings register. The high-g threshold is set
through the ACC_HG_THRES register. The meaning of an LSB of ACC_HG_THRES
depends on the selected g-range: it corresponds to 7.81 mg in 2g-range, 15.63 mg in 4g-
range, 31.25 mg in 8g-range, and 62.5 mg in 16g-range (i.e. increment depends from g-
range setting).
The high-g interrupt is generated if the absolute value of the acceleration of at least one of
the enabled axes (or relation) is higher than the threshold for at least the time defined by
the ACC_HG_DURATION register. The interrupt is reset if the absolute value of the
acceleration of all enabled axes (and relation) is lower than the threshold for at least the
time defined by the ACC_HG_DURATION register. The interrupt status is stored in bit
ACC_HIGH_G in the INT_STA register. The relation between the content of
ACC_HG_DURATION and the actual delay of the interrupt generation is delay [ms] =
[ACC_HG_DURATION + 1] * 2 ms. Therefore, possible delay times range from 2 ms to 512
ms.
This interrupt is based on the comparison of angular rate data against a high-rate threshold
for the detection of shock or other high-angular rate events. The principle is made clear in
Figure 3 below:
The high-rate interrupt is enabled (disabled) per axis by writing 1 (0) to bits
GYRO_HIGH_RATE in the INT_EN register and for each axis by writing to the HR_X_AXIS,
HR_Y_AXIS, and HR_Z_AXIS, respectively in the GYR_INT_SETTING register. The high-
rate threshold is set through the HR_<axis>_Threshold bits in the appropriate
GYR_HR_<axis>_SET register. The meaning of an LSB of HR_<axis>_Threshold depends
on the selected /s-range: it corresponds to 62.5/s in 2000/s-range, 31.25/s in 1000/s-
range, 15.625/s in 500/s -range ). The HR_<axis>_Threshold register setting 0
corresponds to 62.26/s in 2000/s-range, 31.13/s in 1000/s-range, 15.56/s in 500/s-
range . Therefore the maximum value is 1999.76/s in 2000/s-range (999.87/s 1000/s-
range, 499.93/s in 500/s -range ).
A hysteresis can be selected by setting the HR_<axis>_THRES_HYST bits. Analogously to
threshold, the meaning of an LSB of HR_<axis>_THRES_HYST bits is /s-range dependent:
The HR_<axis>_THRES_HYST register setting 0 corresponds to an angular rate difference
of 62.26/s in 2000/s-range, 31.13/s in 1000/s-range, 15.56/s in 500/s-range . The
meaning of an LSB of HR_<axis>_THRES_HYST depends on the selected /s-range too: it
corresponds to 62.5/s in 2000/s-range, 31.25/s in 1000/s-range, 15.625/s in 500/s -
range ).
The high-rate interrupt is generated if the absolute value of the angular rate of at least one of
the enabled axes (or relation) is higher than the threshold for at least the time defined by
the GYR_DUR_<axis> register. The interrupt is reset if the absolute value of the angular rate
of all enabled axes (and relation) is lower than the threshold minus the hysteresis. In bit
GYR_HIGH_RATE in the INT_STA the interrupt status is stored. The relation between the
content of GYR_DUR_<axis> and the actual delay of the interrupt generation is delay [ms] =
[ GYR_DUR_<axis> + 1] * 2.5 ms. Therefore, possible delay times range from 2.5 ms to 640
ms.
Any-motion (slope) detection uses the slope between successive angular rate signals to
detect changes in motion. An interrupt is generated when the slope (absolute value of
angular rate difference) exceeds a preset threshold. It is cleared as soon as the slope falls
below the threshold. The principle is made clear in Figure 4.
angular rate
rate(t0)
rate(t01/(4*fs))
time
slope(t0)=gyro(t0)gyro(t01/(2*bw))
slope
slope_th
time
slope_dur slope_dur
INT
time
The time difference between the successive angular rate signals depends on the selected
update rate(fs) which is coupled to the bandwidth and equates to 1/(4*fs) (t=1/(4*fs)). For
bandwidth settings with an update rate higher than 400Hz (bandwidth =0,1,2) fs is set to
400Hz.
In order to suppress false triggers, the interrupt is only generated (cleared) if a certain
number N of consecutive slope data points is larger (smaller) than the slope threshold given
by GYR_AM_THRES. This number is set by the Slope Samples bits in the GYR_AM_SET
register. It is N = [Slope Samples + 1]*4. N is set in samples. Thus the time is scaling with
the update rate (fs).
3.7.6 Self-Test
During the device startup, a power on self test is executed. This feature checks that the
connected sensors and microcontroller are responding / functioning correctly. Following tests
are executed
The results of the POST are stored at register ST_RESULT, were a bit set indicates test
passed and cleared indicates self test failed.
The host can trigger a self test from CONFIG MODE. The test can be triggered by setting bit
SELF_TEST in the in the SYS_TRIGGER register, the results are stored in the ST_RESULT
register. During the execution of the system test, all other features are paused.
The boot loader is located at the start of the program memory and it is executed at each
reset / power-on sequence. The boot loader first checks the status of a BOOT_LOAD_PIN.
For more details on the boot loader please contact your local Bosch Sensortec sales
representative and ask for the BNO Boot loader application note document.
4. Register description
Read-Only Registers are marked as shown in Table 4-1: Register Access Coding. Any
attempt to write to these registers is ignored.
There are bits within some registers that trigger internal sequences. These bits are
configured for write-only access and read as value 0.
At power-on Page 0 is selected, the PAGE_ID register can be used to identify the current
selected page and change between page 0 and page 1.
Register Default
Register Name bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Address Value
7F-6B Reserved NA
MAG_RADIUS_
6A Magnetometer Radius
MSB
MAG_RADIUS_
69 Magnetometer Radius
LSB
ACC_RADIUS_
68 Accelerometer Radius
MSB
ACC_RADIUS_
67 Accelerometer Radius
LSB
GYR_OFFSET
66 0x00 Gyroscope Offset Z <15:8>
_Z_MSB
GYR_OFFSET 0x00
65 Gyroscope Offset Z <7:0>
_Z_LSB
GYR_OFFSET 0x00
64 Gyroscope Offset Y <15:8>
_Y_MSB
GYR_OFFSET 0x00
63 Gyroscope Offset Y <7:0>
_Y_LSB
GYR_OFFSET 0x00
62 Gyroscope Offset X <15:8>
_X_MSB
GYR_OFFSET 0x00
61 Gyroscope Offset X <7:0>
_X_LSB
MAG_OFFSET 0x00
60 Magnetometer Offset Z <15:8>
_Z_MSB
MAG_OFFSET 0x00
5F Magnetometer Offset Z <7:0>
_Z_LSB
MAG_OFFSET 0x00
5E Magnetometer Offset Y <15:8>
_Y_MSB
MAG_OFFSET 0x00
5D Magnetometer Offset Y <7:0>
_Y_LSB
MAG_OFFSET 0x00
5C Magnetometer Offset X <15:8>
_X_MSB
MAG_OFFSET 0x00
5B Magnetometer Offset X <7:0>
_X_LSB
ACC_OFFSET 0x00
5A Accelerometer Offset Z <15:8>
_Z_MSB
ACC_OFFSET 0x00
59 Accelerometer Offset Z <7:0>
_Z_LSB
ACC_OFFSET 0x00
58 Accelerometer Offset Y <15:8>
_Y_MSB
ACC_OFFSET 0x00
57 Accelerometer Offset Y <7:0>
_Y_LSB
ACC_OFFSET 0x00
56 Accelerometer Offset X <15:8>
_X_MSB
ACC_OFFSET 0x00
55 Accelerometer Offset X <7:0>
_X_LSB
43 - 54 SIC_MATRIX 0x00 Reserved for Soft Iron Calibration Matrix
Register Default
Register Name bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Address Value
Remappe Remappe Remappe
AXIS_MAP_SI
42 TBD d X axis d Y axis d Z axis
GN
sign sign sign
AXIS_MAP_CO Remapped Z axis Remapped Y axis Remapped X axis
41 TBD
NFIG value value value
TEMP_SOURC
40 0x02 TEMP_Source <1:0>
E
CLK_S RST_IN RST_S
3F SYS_TRIGGER 0x00 Self_Test
EL T YS
3E PWR_MODE 0x00 Power Mode <1:0>
3D OPR_MODE 0x1C Output Data Rate <2:0> Operation Mode <3:0>
3C Reserved 0xFF
ORI_An
droid_ TEMP_U
3B UNIT_SEL 0x00 EUL_Unit GYR_Unit ACC_Unit
Window nit
s
3A SYS_ERR 0x00 System Error Code
39 SYS_STATUS 0x00 System Status Code
SYS_CLK_STA ST_MAI
38 0x00
TUS N_CLK
ACC_N ACC_A ACC_HI GYR_HIG GYRO_A
37 INT_STA 0x00
M M GH_G H_RATE M
36 ST_RESULT 0x0F ST_MCU ST_GYR ST_MAG ST_ACC
SYS Calib Status GYR Calib Status
35 CALIB_STAT 0x00 ACC Calib Status 0:3 MAG Calib Status 0:3
0:3 0:3
34 TEMP 0x00 Temperature
GRV_Data_Z_
33 0x00 Gravity Vector Data Z <15:8>
MSB
GRV_Data_Z_L
32 0x00 Gravity Vector Data Z <7:0>
SB
GRV_Data_Y_
31 0x00 Gravity Vector Data Y <15:8>
MSB
GRV_Data_Y_
30 0x00 Gravity Vector Data Y <7:0>
LSB
GRV_Data_X_
2F 0x00 Gravity Vector Data X <15:8>
MSB
GRV_Data_X_
2E 0x00 Gravity Vector Data X <7:0>
LSB
LIA_Data_Z_M
2D 0x00 Linear Acceleration Data Z <15:8>
BS
LIA_Data_Z_LS
2C 0x00 Linear Acceleration Data Z <7:0>
B
LIA_Data_Y_M
2B 0x00 Linear Acceleration Data Y <15:8>
BS
LIA_Data_Y_L
2A 0x00 Linear Acceleration Data Y <7:0>
SB
LIA_Data_X_M
29 0x00 Linear Acceleration Data X <15:8>
BS
LIA_Data_X_L
28 0x00 Linear Acceleration Data X <7:0>
SB
QUA_Data_z_
27 0x00 Quaternion z Data <15:8>
MSB
QUA_Data_z_L
26 0x00 Quaternion z Data <7:0>
SB
QUA_Data_y_
25 0x00 Quaternion y Data <15:8>
MSB
QUA_Data_y_L
24 0x00 Quaternion y Data <7:0>
SB
QUA_Data_x_
23 0x00 Quaternion x Data <15:8>
MSB
QUA_Data_x_L
22 0x00 Quaternion x Data <7:0>
SB
QUA_Data_w_
21 0x00 Quaternion w Data <15:8>
MSB
QUA_Data_w_
20 0x00 Quaternion w Data <7:0>
LSB
Register Default
Register Name bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Address Value
EUL_Pitch_MS
1F 0x00 Pitch Data <15:8>
B
1E EUL_Pitch_LSB 0x00 Pitch Data <7:0>
1D EUL_Roll_MSB 0x00 Roll Data <15:8>
1C EUL_Roll_LSB 0x00 Roll Data <7:0>
EUL_Heading_
1B 0x00 Heading Data <15:8>
MSB
EUL_Heading_
1A 0x00 Heading Data <7:0>
LSB
GYR_DATA_Z_
19 0x00 Gyroscope Data Z <15:8>
MSB
GYR_DATA_Z_
18 0x00 Gyroscope Data Z <7:0>
LSB
GYR_DATA_Y
17 0x00 Gyroscope Data Y <15:8>
_MSB
GYR_DATA_Y
16 0x00 Gyroscope Data Y <7:0>
_LSB
GYR_DATA_X
15 0x00 Gyroscope Data X <15:8>
_MSB
GYR_DATA_X
14 0x00 Gyroscope Data X <7:0>
_LSB
MAG_DATA_Z
13 0x00 Magnetometer Data Z <15:8>
_MSB
MAG_DATA_Z
12 0x00 Magnetometer Data Z <7:0>
_LSB
MAG_DATA_Y
11 0x00 Magnetometer Data Y <15:8>
_MSB
MAG_DATA_Y
10 0x00 Magnetometer Data Y <7:0>
_LSB
MAG_DATA_X
F 0x00 Magnetometer Data X <15:8>
_MSB
MAG_DATA_X
E 0x00 Magnetometer Data X <7:0>
_LSB
ACC_DATA_Z_
D 0x00 Acceleration Data Z <15:8>
MSB
ACC_DATA_Z_
C 0x00 Acceleration Data Z <7:0>
LSB
ACC_DATA_Y_
B 0x00 Acceleration Data Y <15:8>
MSB
ACC_DATA_Y_
A 0x00 Acceleration Data Y <7:0>
LSB
ACC_DATA_X_
9 0x00 Acceleration Data X <15:8>
MSB
ACC_DATA_X_
8 0x00 Acceleration Data X <7:0>
LSB
7 Page ID 0x00 Page ID
6 BL_Rev_ID NA Bootloader Version
SW_REV_ID_
5 NA SW Revision ID <15:8>
MSB
SW_REV_ID_L
4 NA SW Revision ID <7:0>
SB
3 GYR_ID 0x0F GYRO chip ID
2 MAG_ID 0x32 MAG chip ID
1 ACC_ID 0xFB ACC chip ID
0 CHIP_ID 0xA0 BNO055 CHIP ID
Register Default
Register Name bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Address Value
7F-60 Reserved 0x00
5F - 50 UNIQUE_ID n.a. BNO unique ID
4F - 20 Reserved 0x00
Awake Duration
1F GYR_AM_SET 0x0A Slope Samples <1:0>
<1:0>
GYR_AM_THR
1E 0x04 Gyro Any Motion Threshold <6:0>
ES
1D GYR_DUR_Z 0x19 HR_Z_Duration
GYR_HR_Z_S HR_Z_THRES_
1C 0x01 HR_Z_Threshold <4:0>
ET HYST <1:0>
1B GYR_DUR_Y 0x19 HR_Y_Duration
GYR_HR_Y_S HR_Y_THRES_
1A 0x01 HR_Y_Threshold <4:0>
ET HYST <1:0>
19 GYR_DUR_X 0x19 HR_X_Duration
GYR_HR_X_S HR_X_THRES_
18 0x01 HR_X_Threshold <4:0>
ET HYST <1:0>
GYR_INT_SET HR_FIL AM_FI HR_Z_ HR_Y_A HR_X_A AM_Z_A AM_Y_A
17 0x00 AM_X_AXIS
ING T LT AXIS XIS XIS XIS XIS
16 ACC_NM_SET 0x0B NO/SLOW Motion Duration <5:0> SMNM
ACC_NM_THR
15 0x0A Accelerometer NO/SLOW motion threshold
E
ACC_HG_THR
14 0xC0 Accelerometer High G Threshold
ES
ACC_HG_DUR
13 0x0F Accelerometer High G Duration
ATION
ACC_INT_Setti HG_Z_ HG_Y_ HG_X_ AM/NM_ AM/NM_ AM/NM_
12 0x03 AM_DUR <1:0>
ngs AXIS AXIS AXIS Z_AXIS Y_AXIS X_AXIS
ACC_AM_THR
11 0x14 Accelerometer Any motion threshold
ES
GYR_HI
ACC_N ACC_A ACC_H GYRO_A
10 INT_EN 0x00 GH_RAT
M M IGH_G M
E
GYR_HI
ACC_N ACC_A ACC_H GYRO_A
F INT_MSK 0x00 GH_RAT
M M IGH_G M
E
E Reserved 0x00
GYR_Sleep_C AUTO_SLP_DURATION
D 0x00 SLP_DURATION <2:0>
onfig <2:0>
ACC_Sleep_C
C 0x00 SLP_DURATION <3:0> SLP_MODE
onfig
B GYR_Config_1 0x00 GYR_Power_Mode <2:0>
A GYR_Config_0 0x38 GYR_Bandwidth <2:0> GYR_Range <2:0>
MAG_Power_mo MAG_OPR_Mode
9 MAG_Config 0x6D MAG_Data_output_rate <2:0>
de <1:0> <1:0>
8 ACC_Config 0x0D ACC_PWR_Mode <2:0> ACC_BW <2:0> ACC_Range <1:0>
7 Page ID 0x01 Page ID
6-0 Reserved n.a.
Reset
Content SW Revision ID <7:0>
For more details on how to calibrate the sensors in the BNO055 please contact your local
Bosch Sensortec sales representative and ask for the BNO055 calibration application note
document.
Read : 0 No error
1 Peripheral initialization error
2 System initialization error
3 Self test result failed
4 Register map value out of range
5 Register map address out of range
6 Register map write error
7 BNO low power mode not available for selected operation mode
8 Accelerometer power mode not available
9 Fusion algorithm configuration error
A Sensor configuration error
Registers reserved for soft iron calibration (SIC) matrix data, this feature is described in a
separate application note and should only be used when a distortion free magnetic
environment is available to create the required calibration matrix data.
For more details please refer to the appropriate soft iron correction application note.
Reset
Content Magnetometer Data X <7:0>
Reset
Content Gyroscope Offset X <15:8>
The only restriction for the use of the power save mode comes from the configuration of the
digital filter bandwidth of gyroscope. For each bandwidth configuration, minimum auto sleep
duration must be ensured. For example, for bandwidth = 47Hz, the minimum auto sleep
duration is 5ms. This is specified in the table below. For sleep duration, there is no
restriction.
slo_no_mot_dur<5:4>=b00 [slo_no_mot_dur<3:0> + 1]
slo_no_mot_dur<5:4>=b01 [slo_no_mot_dur<3:0> * 4 + 20]
slo_no_mot_dur<5>=1 [slo_no_mot_dur<4:0> * 8 + 88]
AM_FILT 6 1 (0) selects unfiltered (filtered) data for any motion interrupt
GYR_HR_Z_SET 0x1C
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Access r r r r r r r r
Reset 0 0 0 0 0 0 0 1
Content HR_Z_THRES_HYST
reserved HR_Z_Threshold <4:0>
<1:0>
The active interface is selected by the state of the protocol select pins (PS1 and PS0), Table
4-4 shows the mapping between the protocol select pins and the selected interface mode.
Both digital interfaces share partially the same pins, the pin mapping for each interface is
shown in Table 4-5.
Table 4-5: Mapping of digital interface pins
The following table shows the electrical specifications of the interface pins:
The IC interface of the BNO055 is compatible with the IC Specification UM10204 Rev. 03
(19 June 2007), available at http://www.nxp.com. The BNO055 supports IC standard mode
and fast mode, only 7-bit address mode is supported. The BNO055 IC interface uses clock
stretching.
The default IC address of the BNO055 device is 0101001b (0x29). The alternative address
0101000b (0x28), in I2C mode the input pin COM3 can be used to select between the
primary and alternative I2C address as shown in Table 4-7.
The timing specification for IC of the BNO055 is given in Table 4-8: IC timings:
Figure 5: IC timing diagram shows the definition of the IC timings given in Table 4-8:
SDA
tBUF
tf
tLOW
SCL
tHIGH
tHDSTA tr tHDDAT
tSUDAT
SDA
tSUSTA
tSUSTO
START: Data transmission on the bus begins with a high to low transition on the SDA line
while SCL is held high (start condition (S) indicated by IC bus master). Once the START
signal is transferred by the master, the bus is considered busy.
STOP: Each data transfer should be terminated by a Stop signal (P) generated by master.
The STOP condition is a low to HIGH transition on SDA line while SCL is held high.
S Start
P Stop
ACKS Acknowledge by slave
ACKM Acknowledge by master
NACKM Not acknowledge by master
RW Read / Write
A START immediately followed by a STOP (without SCL toggling from VDDIO to GND) is
not supported. If such a combination occurs, the STOP is not recognized by the device.
IC write access:
IC write access can be used to write a data byte in one sequence.
The sequence begins with start condition generated by the master, followed by 7 bits slave
address and a write bit (RW = 0). The slave sends an acknowledge bit (ACK = 0) and
releases the bus. Then the master sends the one byte register address. The slave again
acknowledges the transmission and waits for the 8 bits of data which shall be written to the
specified register address. After the slave acknowledges the data byte, the master generates
a stop signal and terminates the writing protocol.
dummy
ACKS
ACKS
ACKS
Stop
Start Slave address RW Register address (0x00 .. 0x7F) Data
S 0 0 1 0 1 0 0 0 A x x x x x x x x A x x x x x x x x A P
Figure 6: IC write
IC read access:
IC read access also can be used to read one or multiple data bytes in one sequence.
A read sequence consists of a one-byte IC write phase followed by the IC read phase. The
two parts of the transmission must be separated by a repeated start condition (Sr). The IC
write phase addresses the slave and sends the register address to be read. After slave
acknowledges the transmission, the master generates again a start condition and sends the
slave address together with a read bit (RW = 1). Then the master releases the bus and waits
for the data bytes to be read out from slave. After each data byte the master has to generate
an acknowledge bit (ACK = 0) to enable further data transfer. A NACKM (ACK = 1) from the
master stops the data being transferred from the slave. The slave releases the bus so that
the master can generate a STOP condition and terminate the transmission.
The register address is automatically incremented and, therefore, more than one byte can be
sequentially read out. Once a new data read transmission starts, the start address will be set
to the register address specified in the latest IC write command. By default the start address
is set at 0x00. In this way repetitive multi-bytes reads from the same starting address are
possible.
dummy
ACKS
ACKS
Start Slave address RW Register address (0x08)
S 0 0 1 0 1 0 0 0 A x 0 0 0 1 0 0 0 A
ACKM
ACKM
ACKS
Start Slave address RW Read data (0x08) Read data (0x09)
Sr 0 0 1 0 1 0 0 1 A x x x x x x x x A x x x x x x x x A
ACKM
ACKM
ACKS
Read data (0x0A) Read data (0x0B)
A x x x x x x x x A x x x x x x x x A
NACKM
ACKM
ACKS
Stop
Read data (0x0C) Read data (0x0D)
A x x x x x x x x A x x x x x x x x NA P
Command:
Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 .. Byte (n+4)
Start Byte Write Reg addr Length Data 1 .. Data n
0xAA 0x00 <..> <..> <..> .. <..>
Acknowledge Response:
Byte 1 Byte 2
Response Header Status
0xEE 0x01: WRITE_SUCCESS
0x03: WRITE_FAIL
0x04: REGMAP_INVALID_ADDRESS
0x05: REGMAP_WRITE_DISABLED
0x06: WRONG_START_BYTE
0x07: BUS_OVER_RUN_ERROR
0X08: MAX_LENGTH_ERROR
0x09: MIN_LENGTH_ERROR
0x0A: RECEIVE_CHARACTER_TIMEOUT
Command:
Byte 1 Byte 2 Byte 2 Byte 3
Start Byte Read Reg addr Length
0xAA 0x01 <..> <..>
For more details on the using the BNO055 in HID over I2C mode please contact your local
Bosch Sensortec sales representative and ask for the appropriate BNO055 HID-I2C
application note.
5.1 Pin-out
The pin-out of the LGA package is shown in Figure 8 and the pin function is described in
Table 5-1.
2
Figure 9: I C connection diagram
The internal clock can be selected by clearing bit CLK_SEL in the SYSTEM_TRIGGER
register. When an internal clock is used, both pins XIN32 and XOUT32 can be left open.
8
These values are given only as typical example.
9
Decoupling capacitor should be placed close to the device for each supply pin pair in the signal group.
BST-BNO055-DS000-10 | Revision 1.0 | July 2014 Bosch Sensortec
Bosch Sensortec GmbH reserves all rights even in the event of industrial property rights. We reserve all rights of disposal such as copying and passing on
to third parties. BOSCH and the symbol are registered trademarks of Robert Bosch GmbH, Germany.
Note: Specifications within this document are subject to change without notice.
BNO055
Data sheet Page 112
6. Package
The default device axis orientation is shown in Figure 13 below; this orientation is valid for all
sensor outputs (physical and virtual).
Z; z; z
X; x; x
Y; y; y
6.4 Marking
The sensor fulfils the lead-free soldering requirements of the above-mentioned IPC/JEDEC
standard, i.e. reflow soldering with a peak temperature up to 260C.
We recommend avoiding g-forces beyond the specified limits during transport, handling and
mounting of the sensors in a defined and qualified installation process.
This device has built-in protections against high electrostatic discharges or electric fields
(e.g. 2kV HBM); however, anti-static precautions should be taken as for any other CMOS
component. Unless otherwise specified, proper operation can only occur when all terminal
voltages are kept within the supply voltage range. Unused inputs must always be tied to a
defined logic voltage level.
For more details on recommended handling, soldering and mounting please contact your
local Bosch Sensortec sales representative and ask for the Handling, soldering and
mounting instructions document.
While Bosch Sensortec took care that all of the technical packages parameters are
described above are 100% identical for all sources, there can be differences in the chemical
content and the internal structural between the different package sources.
However, as secured by the extensive product qualification process of Bosch Sensortec, this
has no impact to the usage or to the quality of the BMNO55 product.
7. Legal disclaimer
The resale and/or use of products are at the purchasers own risk and his own responsibility.
The examination of fitness for the intended use is the sole responsibility of the Purchaser.
The purchaser shall indemnify Bosch Sensortec from all third party claims arising from any
product use not covered by the parameters of this product data sheet or not approved by
Bosch Sensortec and reimburse Bosch Sensortec for all costs in connection with such
claims.
The purchaser must monitor the market for the purchased products, particularly with regard
to product safety, and inform Bosch Sensortec without delay of all security relevant incidents.
[email protected]
www.bosch-sensortec.com
Authorized Distributor
Bosch Sensortec:
0330.SBO.184