BST Bno055
BST Bno055
BST Bno055
BNO055
Intelligent 9-axis absolute orientation sensor
Bosch Sensortec
• Quaternion
• Linear Acceleration
User Motion
• Rotation
• Gravity
• Robust Heading
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), I²C, UART
VDDIO voltage range: 1.7V to 3.6V
Consumer electronics suite MSL1, RoHS compliant, halogen-free
Operating temperature: -40°C ... +85°C
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 ±1300µT (x-, y-axis);
±2500µT (z-axis)
Magnetic field resolution of ~0.3µT
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 BNO055 is a System in Package (SiP), integrating a triaxial 14-bit accelerometer, a triaxial
16-bit gyroscope with a range of ±2000 degrees per second, a triaxial geomagnetic sensor and
a 32-bit cortex M0+ microcontroller running Bosch Sensortec sensor fusion software, in a
single package.
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-
directional I2C and UART interfaces. The I2C 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.
Table of Contents
BASIC DESCRIPTION .............................................................................................................. 2
SPECIFICATION...................................................................................................................... 13
1.1 ELECTRICAL SPECIFICATION .......................................................................................... 13
1.2 ELECTRICAL AND PHYSICAL CHARACTERISTICS, MEASUREMENT PERFORMANCE ................ 14
2. ABSOLUTE MAXIMUM RATINGS ..................................................................................... 18
3. FUNCTIONAL DESCRIPTION ............................................................................................ 19
3.1 ARCHITECTURE............................................................................................................. 19
3.2 POWER MANAGEMENT ................................................................................................... 19
3.2.1 NORMAL MODE ....................................................................................................................... 20
3.2.2 LOW POWER MODE ................................................................................................................. 20
3.2.3 SUSPEND MODE ..................................................................................................................... 21
3.3 OPERATION MODES ...................................................................................................... 21
3.3.1 CONFIG MODE ........................................................................................................................ 23
3.3.2 NON-FUSION MODES .............................................................................................................. 23
3.3.3 FUSION MODES ....................................................................................................................... 23
3.4 AXIS REMAP.................................................................................................................. 26
3.5 SENSOR CONFIGURATION.............................................................................................. 28
3.5.1 DEFAULT SENSOR CONFIGURATION .......................................................................................... 28
3.5.2 ACCELEROMETER CONFIGURATION .......................................................................................... 29
3.5.3 GYROSCOPE CONFIGURATION.................................................................................................. 30
3.5.4 MAGNETOMETER CONFIGURATION............................................................................................ 31
3.6 OUTPUT DATA ............................................................................................................... 32
3.6.1 UNIT SELECTION...................................................................................................................... 32
3.6.2 DATA OUTPUT FORMAT ............................................................................................................ 32
3.6.3 FUSION OUTPUT DATA RATES .................................................................................................. 33
3.6.4 SENSOR CALIBRATION DATA..................................................................................................... 33
3.6.5 OUTPUT DATA REGISTERS ....................................................................................................... 35
3.7 DATA REGISTER SHADOWING ......................................................................................... 39
3.8 INTERRUPTS ................................................................................................................. 40
3.8.1 INTERRUPT PIN ....................................................................................................................... 40
3.8.2 INTERRUPT SETTINGS ............................................................................................................. 40
3.9 SELF-TEST ................................................................................................................... 50
3.9.1 POWER ON SELF TEST (POST) ............................................................................................... 50
3.9.2 BUILT-IN SELF-TEST (BIST) .................................................................................................... 50
3.10 BOOT LOADER ............................................................................................................ 51
3.11 CALIBRATION .............................................................................................................. 51
3.11.1 ACCELEROMETER CALIBRATION ............................................................................................. 51
3.11.2 GYROSCOPE CALIBRATION .................................................................................................... 51
3.11.3 MAGNETOMETER CALIBRATION .............................................................................................. 51
3.11.4 SOFT-IRON CALIBRATION (SIC) ............................................................................................. 52
3.11.5 REUSE OF CALIBRATION PROFILE .......................................................................................... 53
4. REGISTER DESCRIPTION ................................................................................................. 54
Table of Figures
Figure 1: system architecture ...............................................................................................19
Figure 2: Principle of any-motion detection ...........................................................................44
Figure 3: High rate interrupt ..................................................................................................46
Figure 4: Principle of any-motion detection ...........................................................................48
Figure 5: I²C timing diagram ...............................................................................................101
Figure 6: I²C write ...............................................................................................................102
Figure 7: I²C multiple read ..................................................................................................102
Figure 8: Pin-out bottom view .............................................................................................105
Figure 9: I2C connection diagram .......................................................................................107
Figure 10: UART connection diagram .................................................................................108
Figure 11 : HID via IC connection diagram .........................................................................109
Figure 12 : External 32kHz Crystal Oscillator with Load Capacitor .....................................110
Figure 13: Outline dimensions ............................................................................................112
List of Tables
Specification
If not stated otherwise, the given values are over lifetime and full performance temperature
and voltage ranges, minimum/maximum values are ±3 sigma.
Voltage Output VDDIO_VOH VDDIO > 3V , IOH =10mA 0.8 VDDIO 0.9 VDDIO -- V
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 -- -- 12.3 mA
normal mode at TA
(9DOF @100Hz output
data rate)
Total supply current IDD_LPM VDD = 3V, VDDIO = 2.5V 0.33 2.72# mA
Low power mode at TA
Total supply current IDD_SuM VDD = 3V, VDDIO = 2.5V -- -- 0.04* mA
suspend mode at TA
# 80% suspend mode and 20% normal mode with 9DOF @100Hz output data rate
* using I2C as communication protocol
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
Sensitivity Change over TCS Nominal VDD supplies -40°C ±0.03 ±0.07 %/K
Temperature ≤ T ≤ +85°C RFS2000
A
RFS1000, RFS2000
Zero- Offset Change TCO Nominal VDD supplies -40°C ±0.015 ±0.03 °/s per K
≤ T ≤ +85°C 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-16 | Revision 1.6 | February 2020 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 17
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
The following figure shows the basic building blocks of the BNO055 device.
Power Modes
The BNO055 support three different power modes: Normal mode, Low Power Mode, and
Suspend mode.
The power mode can be selected by writing to the PWR_MODE register as defined in the table
below. As default at start-up the BNO055 will run in Normal mode.
It is recommended not to configure the invalid power mode, writing multiple register along with
PWR_MODE register and no specific value is guaranteed when read.
3.2.1 Normal Mode
In normal mode all sensors required for the selected operating mode (see section 3.3) are
always switched ON. The register map and the internal peripherals of the MCU are always
operative in this mode.
Additionally, the interrupt pins can also be configured to provide HW interrupt to the host.
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:
BST-BNO055-DS000-16 | Revision 1.6 | February 2020 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 21
Only No and Any motion interrupts are applicable and High-G and slow motion
interrupts are not applicable in low power mode.
Low power mode is not applicable where accelerometer is not employed.
The BNO055 provides a variety of output signals, which can be chosen by selecting the
appropriate operation mode. The table below lists the different modes and the available sensor
signals.
GYROONLY - - X - -
ACCMAG X X - - -
ACCGYRO X - X - -
MAGGYRO - X X - -
AMG X X X - -
IMU X - X X -
Fusion modes
COMPASS X X - - X
M4G X X X -
NDOF_FMC_OFF X X X - X
NDOF X X X - X
When the user changes to another operation mode, the sensors which are required in that
particular sensor mode are powered, while the sensors whose signals are not required are set
to suspend mode.
The BNO055 sets the following default settings for the sensors. The user can overwrite these
settings in the register map when in CONFIGMODE.
Accelerometer 4G 62.5 Hz
Magnetometer NA 10 Hz
In any mode, the 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.
The operating mode can be selected by writing to the OPR_MODE register, possible register
values and the corresponding operating modes are shown in the table below.
Table 3-6 below shows the time required to switch between CONFIGMODE and the other
operating modes.
Table 3-6: Operating mode switching time
As being said, this mode is the default operation mode after power-on or RESET. Any other
mode must be chosen to be able to read any sensor data.
All fusion modes provide the heading of the sensor as quaternion data or in Euler angles (roll,
pitch and yaw angle). The acceleration sensor is both exposed to the gravity force and to
accelerations applied to the sensor due to movement. In fusion modes it is possible to separate
the two acceleration sources, and thus the sensor fusion data provides separately linear
acceleration (i.e. acceleration that is applied due to movement) and the gravity vector.
For all Fusion modes, the sensors are configured with the default settings as defined in Table
3-7: Default sensor configuration at power-on in Chapter 3.5.1.
Note 1: The sensor fusion algorithm performs automatic background calibration of all sensors.
This feature cannot be disabled.
Note 2: The sensor fusion algorithm uses the accelerometer data to compensate for the
gyroscope drift over time. When the device is in motion, the accelerometer data is temporarily
ignored and the fusion relies on the gyroscope for pitch and roll. If the accelerometer data
cannot be used for an extended period of time (e.g. due to vibration, or to constant movement),
then this may cause the pitch and roll values to drift over time. Likewise, if the magnetometer
data is detected to be distorted, it will automatically be ignored by the algorithm and this may
cause the heading to drift over time (as in IMU mode).
Note 3: The sensor fusion algorithm was primarily designed to track human motion. If the
device is subjected to large accelerations for an extended period of time (e.g. in a vehicle
cornering at high speed or braking over a long distance), the device may incorrectly interpret
this large acceleration as the gravity vector. For applications where the sensor may be exposed
to significant velocities, it is recommended to test the device for the specific use-case.
3.3.3.2 COMPASS
The COMPASS mode is intended to measure the magnetic earth field and calculate the
geographic direction.
The earth magnetic field is a vector with the horizontal components x,y and the vertical z
component. It depends on the position on the globe and natural iron occurrence. For heading
calculation (direction of compass pointer) only the horizontal components x and y are used.
Therefore the vector components of the earth magnetic field must be transformed in the
horizontal plane, which requires the knowledge of the direction of the gravity vector. To
summarize, the heading can only be calculated when considering gravity and magnetic field
at the same time.
However, the measurement accuracy depends on the stability of the surrounding magnetic
field. Furthermore, since the earth magnetic field is usually much smaller than the magnetic
fields that occur around and inside electronic devices, the compass mode requires calibration
(see chapter 3.10)
However, as for compass mode, the measurement accuracy depends on the stability of the
surrounding magnetic field.
For this mode no magnetometer calibration is required and also not available.
BST-BNO055-DS000-16 | Revision 1.6 | February 2020 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 25
3.3.3.4 NDOF_FMC_OFF
This fusion mode is same as NDOF mode, but with the Fast Magnetometer Calibration turned
‘OFF’.
3.3.3.5 NDOF
This is a fusion mode with 9 degrees of freedom where the fused absolute orientation data is
calculated from accelerometer, gyroscope and the magnetometer. The advantages of
combining all three sensors are a fast calculation, resulting in high output data rate, and high
robustness from magnetic field distortions. In this mode the Fast Magnetometer calibration is
turned ON and thereby resulting in quick calibration of the magnetometer and higher output
data accuracy. The current consumption is slightly higher in comparison to the
NDOF_FMC_OFF fusion mode.
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
Z; Ωz; z
X; Ωx; x
Y; Ωy; y
P0 P1 P2 P3
TOP VIEW
P4 P5 P6 P7
BOTTOM VIEW
P0
For the above described placements, following would be the axis configuration parameters.
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.
The output data format is based on the following convention regarding the rotation angles for
roll, pitch and heading / yaw (compare also section 3.4):
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
The gyroscope offset can be configured in the following registers, shown in the table below
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 for Gyroscope is +/-2000 in LSB.
Unit Representation
Dps 1 Dps = 16 LSB
Rps 1 Rps = 900 LSB
3.6.4.4 Radius
The radius of accelerometer and magnetometer can be configured in the following registers,
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 +/-2048 in LSB,
magnetometer is from 144 to 1280 in LSB 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. Refer table below for information regarding the data types
for the acceleration data.
In non-fusion 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. Refer table below for information regarding the data
types for the magnetic field strength.
In non-fusion 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. Refer table below for information regarding the data
types for the angular velocity.
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. Refer table below for information regarding
the data types and the unit representation for the Euler angle format.
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. Refer table below for
information regarding the data types and the unit representation for the Orientation output.
Unit Representation
Quaternion (unit less) 1 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.
Refer to the table below for further information regarding the data types and the unit
representation for Linear acceleration.
Note: The linear acceleration signal typically cannot be integrated to recover velocity, or
double-integrated to recover position. The error typically becomes larger than the signal within
less than 1 second if other sensor sources are not used to compensate this integration error.
Unit Representation
2
m/s 1 m/s2 = 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. Refer
table below for further information regarding the data types and the unit representation for the
Gravity vector.
Unit Representation
2
m/s 1 m/s2 = 100 LSB
mg 1 mg = 1 LSB
Temperature
The temperature output data can be read from the TEMP register. The table below describes
the output data type and data representation (depending on selected unit).
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 below.
Unit Representation
°C 1°C = 1 LSB
F 2 F = 1 LSB
3.8 Interrupts
3.8.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.
Interrupts can be enabled by setting the corresponding bit in the interrupt enable register
(INT_EN) and disabled when it is cleared.
Interrupt Pin Masking
Interrupts can be routed to the INT pin by setting the corresponding interrupt bit in the
INT_MSK register.
Interrupt Status
Interrupt occurrences are stored in the interrupt status register (INT_STA). All bits in this
register are cleared on read.
Note: Data ready interrupt is only available on software versions 03.14 and above
Data Ready Interrupt is a signal to host about the data availability in the register map, so that
host can read the sensor data immediately when the sensor data is available in the register
map.
In Non-fusion mode:
In Non-fusion mode the data ready interrupt is signaled based on individual sensor
data rate configured to the sensors.
The data ready interrupt “ACC_BSX_DRDY“ is set/triggered when the Accelerometer
data is available in the register map at the configured data rate of sensor in the
operation mode where Accelerometer is ON.
The data ready interrupt “MAG_DRDY“ is set/triggered when the Magnetometer data
is available in the register map at the configured data rate of sensor in the operation
mode where Magnetometer is ON.
The data ready interrupt “GYR_DRDY“ is set/triggered when the Gyroscope data is
available in the register map at the configured data rate of sensor in the operation
mode where Gyroscope is ON.
In fusion mode:
In fusion mode the data ready interrupt is signaled based on primary sensor data rate.
The data ready interrupt “ACC_BSX_DRDY“ is set/triggered when the
calibrated/fusion data available in the register map at the primary rate of the sensor.
Here, the data ready interrupt ”ACC_BSX_DRDY” is shared between non-fusion and fusion
mode for Accelerometer and fusion data respectively.
Data Ready Interrupt behavior when host reads the interrupt status:
Data Ready Interrupt behavior when the interrupt status is not read:
Slow-motion 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-39 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(t0−1/(2*bw))
time
slope(t0)=acc(t0)−acc(t0−1/(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.
Any-motion detection can be enabled (disabled) for each axis separately by writing ´1´ (´0´) to
bits AM/NM_X_AXIS, AM/NM_Y_AXIS, AM/NM_Z_AXIS. The criteria for any-motion 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.
BST-BNO055-DS000-16 | Revision 1.6 | February 2020 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 47
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(t0−1/(4*fs))
time
slope(t0)=gyro(t0)−gyro(t0−1/(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.9 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
Table 3-45: Power on Self Test
The results of the POST are stored at register ST_RESULT, where 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.
It is recommended to only trigger the self-test config mode.
During the self-test:
When triggering the BIST, the SYS_STATUS changes to “executing selftest”, but the
SYS_STATUS will be updated only in case of failure, not in case of success.
To know if the BIST succeeded/failed you should:
o Trigger BIST
o Wait for 400ms
o Read SYS_ERROR register (0x3A):
SYS_ERROR will remain at 0 in case of success (0 = No error)
SYS_ERROR will show 3 in case of self-test failure (3 = Self-test result
failed)
o In case of failed BIST (SYS_ERROR != 0 above), you can see which sensor
failed by reading the ST_RESULT (0x36) register (bit of the corresponding
sensor is ‘1’ if self-test was successful, but will show ‘0’ if the self-test failed).
The boot loader is located at the start of the program memory and it is executed at each reset
/ power-on sequence. It first checks the status of the nBOOT_LOAD_PIN.
In case there is a firmware update, then an application note would be available in time with the
necessary information to upgrade at the host side. Nevertheless it is recommended that the
nBOOT_LOAD_PIN is connected as shown in section 5.
3.11 Calibration
Though the sensor fusion software runs the calibration algorithm of all the three sensors
(accelerometer, gyroscope and magnetometer) in the background to remove the offsets, some
preliminary steps had to be ensured for this automatic calibration5 to take place.
The accelerometer and the gyroscope are relatively less susceptible to external disturbances,
as a result of which the offset is negligible. Whereas the magnetometer is susceptible to
external magnetic field and therefore to ensure proper heading accuracy, the calibration steps
described below have to be taken.
Depending on the sensors been selected in the fusion mode, the following simple steps had
to be taken after every ‘Power on Reset’ for proper calibration of the device.
5
It is not possible to disable the automatic calibration which runs in the background
BST-BNO055-DS000-16 | Revision 1.6 | February 2020 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 52
NDOF:
The same random movements have to be made to calibrate the sensor as in the FMC_OFF
mode, but here it takes relatively less calibration movements (and slightly higher current
consumption) to get the magnetometer calibrated.
The register CALIB_STAT can be read to see the calibration status of the magnetometer.
The BNO055 supports SIC via a 3x3 calibration matrix. At startup, the identity matrix is used
as coefficients to the magnetometer signal. An SIC compensation matrix can efficiently
compensate for distortions due to soft magnetic material in close vicinity of the sensor. The
magnetometer data is first multiplied by this SIC matrix, before being used in the sensor fusion
algorithm.
Each value of the matrix is represented by a 16-bit signed integer, and can represents a value
in the range of -2.0000 to 1.9999 by using the conversion factor (1/214).
Once the device is calibrated, the calibration profile can be reused to get the correct orientation
data immediately after ‘Power of Reset’ (prior to going through the steps mentioned in the
above section). However, once the sensor enters the internal calibration routine, the calibration
profile is overwritten with the newly obtained sensor offsets and sensor radius. Depending on
the application, necessary steps had to be ensured for proper calibration of the sensor.
4. Register description
4.1 General Remarks
The entire communication with the device is performed by reading from and writing to registers.
Registers have a width of 8 bits. There are several registers which are either completely or
partially marked as ‘reserved’. Any reserved bit is ignored when it is written and no specific
value is guaranteed when read. It is recommended not to use registers at all which are
completely marked as ‘reserved’. Furthermore it is recommended to mask out (logical and with
zero) reserved bits of registers which are partially marked as reserved.
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 N/A
MAG_RADIUS_
6A 0x01 Magnetometer Radius
MSB
MAG_RADIUS_
69 0xE0 Magnetometer Radius
LSB
ACC_RADIUS_
68 0x00 Accelerometer Radius
MSB
ACC_RADIUS_
67 0x00 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
Register Default
Register Name bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Address Value
SIC_MATRIX_
54 0x40 SIC_MATRIX_MSB8
MSB8
SIC_MATRIX_L
53 0x00 SIC_MATRIX_LSB8
SB8
SIC_MATRIX_
52 0x00 SIC_MATRIX_MSB7
MSB7
SIC_MATRIX_L
51 0x00 SIC_MATRIX_LSB7
SB7
SIC_MATRIX_
50 0x00 SIC_MATRIX_MSB6
MSB6
SIC_MATRIX_L
4F 0x00 SIC_MATRIX_LSB6
SB6
SIC_MATRIX_
4E 0x00 SIC_MATRIX_MSB5
MSB5
SIC_MATRIX_L
4D 0x00 SIC_MATRIX_LSB5
SB5
SIC_MATRIX_
4C 0x40 SIC_MATRIX_MSB4
MSB4
SIC_MATRIX_L
4B 0x00 SIC_MATRIX_LSB4
SB4
SIC_MATRIX_
4A 0x00 SIC_MATRIX_MSB3
MSB3
SIC_MATRIX_L
49 0x00 SIC_MATRIX_LSB3
SB3
SIC_MATRIX_
48 0x00 SIC_MATRIX_MSB2
MSB2
SIC_MATRIX_L
47 0x00 SIC_MATRIX_LSB2
SB2
SIC_MATRIX_
46 0x00 SIC_MATRIX_MSB1
MSB1
SIC_MATRIX_L
45 0x00 SIC_MATRIX_LSB1
SB1
SIC_MATRIX_
44 0x40 SIC_MATRIX_MSB0
MSB0
SIC_MATRIX_L
43 0x00 SIC_MATRIX_LSB0
SB0
Remappe Remappe Remappe
AXIS_MAP_SI
42 0x00 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 0x24
NFIG value value value
TEMP_SOURC
40 0x00 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 0x10 Operation Mode <3:0>
3C Reserved
ORI_An
TEMP_U
3B UNIT_SEL 0x80 droid_W EUL_Unit GYR_Unit ACC_Unit
nit
indows
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_DR GYR_HIG GYRO_A MAG_DR ACC_BS
37 INT_STA 0x00
M M GH_G DY6 H_RATE M DY6 X_DRDY6
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
6
This field is only available with software versions 03.14 and above
BST-BNO055-DS000-16 | Revision 1.6 | February 2020 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 57
Register Default
Register Name bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Address Value
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_L
30 0x00 Gravity Vector Data Y <7:0>
SB
GRV_Data_X_
2F 0x00 Gravity Vector Data X <15:8>
MSB
GRV_Data_X_L
2E 0x00 Gravity Vector Data X <7:0>
SB
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_LS
2A 0x00 Linear Acceleration Data Y <7:0>
B
LIA_Data_X_M
29 0x00 Linear Acceleration Data X <15:8>
BS
LIA_Data_X_LS
28 0x00 Linear Acceleration Data X <7:0>
B
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_L
20 0x00 Quaternion w Data <7:0>
SB
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
Register Default
Register Name bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Address Value
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 0x15 Bootloader Version
SW_REV_ID_M
5 0x037 SW Revision ID <15:8>
SB
SW_REV_ID_L
4 0x118 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
5F - 50 UNIQUE_ID N/A BNO unique ID
4F - 20 Reserved
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_FIL HR_Z_ HR_Y_A HR_X_A AM_Z_A AM_Y_A
17 0x00 AM_X_AXIS
ING T T 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
7
The current pre-programmed software version is 3.11 and therefore the SW_REV_ID_MSB is 0x03. However the
register default value is subject to change with respect to the updated software.
8
The current pre-programmed software version is 3.11 and therefore the SW_REV_ID_LSB is 0x11. However the
register default value is subject to change with respect to the updated software.
Register Default
Register Name bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
Address Value
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 GYR_DR GYRO_A MAG_DR ACC_BSX_D
10 INT_EN 0x00 GH_RAT
M M IGH_G DY6 M DY6 RDY6
E
GYR_HI
ACC_N ACC_A ACC_H GYR_DR GYRO_A MAG_DR ACC_BSX_D
F INT_MSK 0x00 GH_RAT
M M IGH_G DY6 M DY6 RDY6
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 0x0B 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 0x00 Page ID
6-0 Reserved
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
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
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 I²C interface of the BNO055 is compatible with the I²C Specification UM10204 Rev. 03 (19
June 2007), available at http://www.nxp.com. The BNO055 supports I²C standard mode and
fast mode, only 7-bit address mode is supported. The BNO055 I²C interface uses clock
stretching.
The default I²C 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 I²C of the BNO055 is given in Table 4-8: I²C timings:
Figure 5: I²C timing diagram shows the definition of the I²C 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 I²C 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.
ACK: Each byte of data transferred must be acknowledged. It is indicated by an acknowledge
bit sent by the receiver. The transmitter must release the SDA line (no pull down) during the
acknowledge pulse while the receiver must then pull the SDA line low so that it remains stable
low during the high period of the acknowledge clock cycle.
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.
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.
Example of an I²C write access to the BNO055 (i2c address in this case: 0101000b = 0x28):
dummy
ACKS
ACKS
ACKS
Stop
Start Slave address RW Register address (0x00 .. 0x7F) Data
S 0 1 0 1 0 0 0 0 A x x x x x x x x A x x x x x x x x A P
ACKS
S 0 1 0 1 0 0 0 0 A x 0 0 0 1 0 0 0 A
ACKM
ACKM
ACKS
Sr 0 1 0 1 0 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
… A x x x x x x x x A x x x x x x x x A …
NACKM
ACKM
ACKS
Stop
… A x x x x x x x x A x x x x x x x x NA P
Register write
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
Register read
Command:
Byte 1 Byte 2 Byte 2 Byte 3
Start Byte Read Reg addr Length
0xAA 0x01 <..> <..>
Limitation:
The command is rejected and no acknowledgement is sent when an invalid start byte
is sent. The maximum character timeout is 30ms when receiving successive
characters.
VDDIO VDD
Optional
OSC input RPULL SDA
Optional
OSC input 120nF
XOUT32
GNDIO
VDDIO
COM0
PIN24
PIN23
PIN22
PIN21
XIN32
PIN1
Pull-up
10kΩ
25
28
27
26
24
23
22
21
20
1
RPULL
GND COM1 SCL
2 19
100nF
VDD
3 BNO 055 18
COM2
nBOOT_LOAD_PIN
Top View I²C_ADDR_SEL
COM3
4 17
(Pads not visible!)
PS1 PIN16
5 16
10
11
12
13
14
15
6
9
(GNDIO)
SWCLK
SWDIO
INT
nRESET
PIN10
PIN13
PS0
PIN12
CAP
PIN15
Optional INT
1uF
10kΩ
BL_IND
nRESET
Optional
Debugger
Connection
VDDIO VDD
Optional
OSC input
Optional
OSC input 120nF
XOUT32
TX
GNDIO
VDDIO
COM0
PIN24
PIN23
PIN22
PIN21
XIN32
PIN1
Pull-up
10kΩ
25
28
27
26
24
23
22
21
20
1
GND COM1 RX
2 19
100nF
VDD
3 BNO 055 18
COM2
nBOOT_LOAD_PIN
Top View
COM3
4 17
(Pads not visible!)
PS1 PIN16
5 16
10
11
12
13
14
15
6
9
(GNDIO)
SWCLK
SWDIO
nRESET
INT
PIN10
PIN13
PS0
PIN12
CAP
PIN15
INT
Optional
1uF
10kΩ
BL_IND
nRESET
Optional
Debugger
Connection
VDDIO VDD
Optional
OSC input RPULL SDA
Optional
OSC input 120nF
XOUT32
GNDIO
VDDIO
COM0
PIN24
PIN23
PIN21
PIN22
XIN32
PIN1
Pull-up
10kΩ
25
28
27
26
24
23
22
21
20
1
RPULL
GND COM1 SCL
2 19
100nF
VDD
3 BNO 055 18
COM2
nBOOT_LOAD_PIN
Top View
COM3
4 17
(Pads not visible!)
PS1 PIN16
5 16
10
11
12
13
14
15
6
9
(GNDIO)
SWCLK
SWDIO
INT
PIN10
PIN13
PS0
PIN12
CAP
nRESET
PIN15
Optional INT
1uF
10kΩ
BL_IND
nRESET
Optional
Debugger
Connection
When switching to the external clock source, the BNO055 will check for integrity of the crystal’s
signal. In case of improper signal (e.g. crystal damaged, broken/missing…), the BNO055 will
automatically switch back to its internal clock source and clear the CLK_SEL bit in
SYS_TRIGGER register.
It takes minimum ~600ms to configure the external crystal and startup the BNO055.
9
These values are given only as typical example.
10
Decoupling capacitor should be placed close to the device for each supply pin pair in the signal group.
BST-BNO055-DS000-16 | Revision 1.6 | February 2020 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 111
Then read the bit CLK_SEL in the register SYS_TRIGGER which will be set if
external crystal is configured successfully otherwise the internal crystal is configured
and CLK_SEL bit is cleared due to some error with external crystal.
5.5.2 Internal clock mode
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. The
internal clock of the BNO055 can have clock deviation up to +3%
6. Package
6.1 Outline dimensions
The sensor package is a standard LGA package; dimensions are shown in the following
diagram. Units are in mm. Note: Unless otherwise specified tolerance = decimal ±0.1mm.
The chapter 3.4 provides information regarding the sensor axis orientation.
6.2 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 260°C.
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 BNO55 product.
7. Legal disclaimer
7.1 Engineering samples
Engineering Samples are marked with an asterisk (*) or (e). Samples may vary from the valid
technical specifications of the product series contained in this data sheet. They are therefore
not intended or fit for resale to third parties or for use in end products. Their sole purpose is
internal client testing. The testing of an engineering sample may in no way replace the testing
of a product series. Bosch Sensortec assumes no liability for the use of engineering samples.
The Purchaser shall indemnify Bosch Sensortec from all claims arising from the use of
engineering samples.
The resale and/or use of Bosch Sensortec products are at the purchaser’s 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 accepts the responsibility to monitor the market for the purchased products,
particularly with regard to product safety, and to inform Bosch Sensortec without delay of all
safety-critical incidents.
[email protected]
www.bosch-sensortec.com