Source: Bosch Sensortec Datasheet (BST-BMP390-DS002-07)
Manufacturer: Bosch Sensortec
Part Number: BMP390
Document: BST-BMP390-DS002-07 — Rev 1.7, March 2021

Description

The BMP390 is a high-performance digital barometric pressure sensor from Bosch Sensortec with both pressure and temperature measurement based on proven piezo-resistive sensing principles. The sensor module is housed in an extremely compact 10-pin metal-lid LGA package with a footprint of only 2.0 x 2.0 mm and a maximum height of 0.75 mm. Its small dimensions and low power consumption of 3.2 uA at 1 Hz make it ideal for battery-driven devices such as mobile phones, GPS modules, drones, and wearables.

The BMP390 consists of a piezo-resistive pressure sensing element and a mixed-signal ASIC that performs A/D conversions and provides compensation data through a digital interface (I2C or SPI). It offers best-in-class temperature coefficient of offset (TCO) between -20 to 65 degrees C for accurate altitude measurement over a wide temperature range. The sensor is more accurate than its predecessor BMP380, covering a measurement range from 300 hPa to 1250 hPa.

The BMP390 includes a 512-byte FIFO buffer, configurable IIR filter for suppressing short-term pressure disturbances, flexible oversampling settings from ultra-low power to highest resolution, and interrupt functionality including data-ready, FIFO watermark, and FIFO full interrupts. It supports hardware synchronization with external sensors such as Bosch IMUs (e.g., BMI260) for sensor data fusion applications.

Key Specifications

Parameter Value
Supply Voltage (VDD) 1.65V to 3.6V
Interface Voltage (VDDIO) 1.2V to 3.6V
Operating Temperature -40 to +85 deg C
Operating Pressure Range 300 to 1250 hPa
Relative Accuracy +/-3 Pa (+/-25 cm)
Absolute Accuracy +/-50 Pa (typ.)
Pressure Resolution 0.016 Pa (highest mode)
RMS Noise (lowest) 0.02 Pa
Temperature Accuracy +/-0.5 deg C at 25 deg C
Current (1 Hz, P+T) 3.2 uA
Sleep Current 1.4 uA (typ.)
Max Sampling Rate 200 Hz
Digital Interface I2C (up to 3.4 MHz), SPI (up to 10 MHz)
FIFO Size 512 bytes
Package 2.0 x 2.0 x 0.75 mm LGA-10
Pin Count 10

Features

  • Pressure range 300 to 1250 hPa with relative accuracy of +/-3 Pa (+/-25 cm)
  • Best-in-class TCO of +/-0.6 Pa/K for accurate altitude tracking over -20 to 65 deg C
  • Ultra-low power consumption: 3.2 uA at 1 Hz, 1.4 uA sleep mode
  • Configurable oversampling from 1x (ultra-low power) to 32x (highest resolution, 21-bit)
  • Built-in IIR filter with coefficients 0 (off) to 127 for suppressing short-term disturbances
  • 512-byte FIFO buffer with watermark, full, and data-ready interrupts
  • Dual digital interface: I2C up to 3.4 MHz and SPI (3-wire/4-wire) up to 10 MHz
  • Three power modes: sleep, forced (single-shot), and normal (continuous cycling)
  • Hardware data synchronization with external sensors (e.g., BMI260 IMU)
  • 24-bit pressure and temperature output data
  • Separate VDD and VDDIO power domains for flexible level shifting
  • RoHS compliant, halogen-free, MSL1
  • Compact 2.0 x 2.0 x 0.75 mm metal-lid LGA package
  • Chip ID register at 0x60 for device identification

Pin Configuration

Pin Name Type Description
1 VDDIO Supply Digital interface supply voltage (1.2V to 3.6V)
2 SCK Input Serial clock input (I2C SCL / SPI SCK)
3 VSS Supply Ground
4 SDI In/Out Serial data input (I2C SDA / SPI MOSI)
5 SDO In/Out Serial data output (SPI MISO / I2C address bit SA0)
6 CSB Input Chip select (SPI active-low / I2C not used, tie high)
7 INT Output Interrupt output (data ready, FIFO watermark, FIFO full)
8 VSS Supply Ground
9 VSS Supply Ground
10 VDD Supply Analog supply voltage (1.65V to 3.6V)

Absolute Maximum Ratings

Parameter Min Max Unit
Voltage at VDD / VDDIO pin -0.3 3.6 V
Voltage at any interface pin VSS - 0.3 VDDIO + 0.3 V
Storage temperature (<=65% RH) -45 +85 deg C
Overpressure survivability -- 2,000,000 Pa
Mechanical shock (MIL-STD-883H) -- 20,000 g
Max dust particle inside package -- 300 um
ESD CDM -- 500-750V Class C2a
ESD HBM -- 2 kV Class 2

Electrical Characteristics

Parameter Conditions Min Typ Max Unit
Supply voltage VDD -- 1.65 1.8 3.6 V
Interface voltage VDDIO -- 1.2 1.8 3.6 V
Operating temperature Full accuracy 0 -- +65 deg C
Operating pressure Full accuracy 300 -- 1250 hPa
Relative accuracy (700-1100 hPa, 25-40 deg C) 10 kPa steps -- +/-0.03 -- hPa
Absolute accuracy (300-1100 hPa, 0-65 deg C) @ 900 hPa, 25 deg C -- -- +/-0.50 hPa
Absolute accuracy (900-1100 hPa, 25-40 deg C) -- -- -- +/-0.40 hPa
Offset temperature coefficient 900 hPa, 25-40 deg C -- +/-0.62 -- Pa/K
Pressure resolution (highest mode) -- -- 0.016 -- Pa
RMS noise (lowest BW, highest res) -- -- 0.02 -- Pa
Temperature accuracy @ 25 deg C -- -- +/-0.5 deg C
Temperature accuracy 0 to +65 deg C -- -- +/-1.5 deg C
Long-term stability (12 months) -- -- -- +/-0.16 hPa
Solder drift Min 50 um solder height -- -- +/-0.8 hPa
Start-up time VDD/VDDIO > 1.8V -- -- 2 ms
Max sampling rate osrs_t = osrs_p = 1 -- -- 200 Hz
ODR accuracy -- -12 -- +12 %

Power Consumption

Parameter Conditions Typ Max Unit
Sleep current VDD = VDDIO = 1.8V 1.4 -- uA
Sleep current VDD = VDDIO = 3.6V 1.5 -- uA
Peak current (pressure) During P measurement 660 730 uA
Peak current (temperature) During T measurement 240 320 uA
Handheld low-power (x8 P, x1 T, IIR=2) Normal mode, 12.5 Hz 145 -- uA
Handheld dynamic (x4 P, x1 T, IIR=4) Normal mode, 50 Hz 310 -- uA
Weather monitoring (x1 P, x1 T, no IIR) Forced mode, 1/60 Hz 4 -- uA
Drop detection (x2 P, x1 T, no IIR) Normal mode, 100 Hz 358 -- uA
Indoor navigation (x16 P, x2 T, IIR=4) Normal mode, 25 Hz 560 -- uA
Drone (x8 P, x1 T, IIR=2) Normal mode, 50 Hz 570 -- uA

Communication Interface

The BMP390 supports two digital interfaces selected via the CSB pin state at power-on:

I2C Interface supports standard mode (up to 400 kHz), fast mode, and high-speed mode (up to 3.4 MHz). The 7-bit slave address is 0x76 when SDO is connected to GND, or 0x77 when SDO is connected to VDDIO. Multi-byte burst reads with auto-incrementing address are supported.

SPI Interface supports 3-wire and 4-wire modes at up to 10 MHz clock frequency. SPI mode is selected when CSB is toggled during power-on. The MSB of the register address byte is the R/W bit (0 = write, 1 = read). A dummy byte follows the address byte on reads before data is returned.

Parameter I2C SPI
Max clock frequency 3.4 MHz 10 MHz
Address / mode selection SDO pin (0x76 / 0x77) CSB toggle at boot
Wire count 2 (SCL, SDA) 3 or 4 (SCK, SDI, SDO, CSB)
Burst read Yes (auto-increment) Yes (auto-increment)
Internal CSB pull-up 75-125 kOhm 75-125 kOhm

Packages

Package Pins Body Size Height
Metal-lid LGA 10 2.0 x 2.0 mm 0.75 mm (max 0.80 mm)

Pad dimensions: 0.275 x 0.250 mm (6 pads), 0.250 x 0.275 mm (4 pads). Pin 1 indicator on top-right corner (top view). Vent hole diameter 0.250 mm on top surface. Tape and reel packaging: 10,000 pcs per reel, 2.0 mm pitch.

Software API

The BMP390 register map starts at address 0x00 (CHIP_ID = 0x60) and extends to 0x7E (CMD). Key registers:

Register Address Function
CHIP_ID 0x00 Chip identification (0x60)
ERR_REG 0x02 Error flags (fatal, cmd, conf)
STATUS 0x03 Data ready flags
DATA_0..2 0x04-0x06 24-bit pressure data
DATA_3..5 0x07-0x09 24-bit temperature data
SENSORTIME 0x0C-0x0E 24-bit sensor time counter
INT_STATUS 0x11 Interrupt status (drdy, fwm, ffull)
FIFO_LENGTH 0x12-0x13 FIFO byte counter (9-bit)
FIFO_DATA 0x14 FIFO data output
FIFO_WTM 0x15-0x16 FIFO watermark threshold
FIFO_CONFIG_1 0x17 FIFO mode, stop-on-full, channel enable
FIFO_CONFIG_2 0x18 FIFO subsampling, data select
INT_CTRL 0x19 Interrupt config (level, OD, latch, enable)
IF_CONF 0x1A Interface config (SPI3, I2C WDT)
PWR_CTRL 0x1B Power mode, press/temp enable
OSR 0x1C Oversampling for pressure and temperature
ODR 0x1D Output data rate prescaler
CONFIG 0x1F IIR filter coefficient
Calibration 0x31-0x45 NVM trimming coefficients (T1-T3, P1-P11)
CMD 0x7E Command register (soft reset = 0xB6)

Power modes are controlled via PWR_CTRL[1:0]: 00 = sleep, 01/10 = forced (single-shot), 11 = normal (continuous). Oversampling is set via OSR register: osr_p[2:0] for pressure (1x to 32x) and osr_t[5:3] for temperature (1x to 32x).

Bosch Sensortec provides an official open-source API driver: BMP3-Sensor-API on GitHub.

Applications

  • Indoor navigation and localization (floor detection, elevator detection)
  • Enhancement of GPS navigation (time-to-first-fix, dead-reckoning, slope detection)
  • Vertical velocity indication (rise/sink speed for drones and flying toys)
  • Drone altitude hold and precision barometric sensing
  • Weather monitoring and forecasting (home weather stations)
  • Health care applications (spirometry)
  • Fitness applications (calorie detection enhancement via altitude changes)
  • AR and VR applications
  • Context awareness and activity recognition
  • Drop detection
  • Target devices: smartphones, tablets, GPS modules, wearables, watches, navigation systems, white goods

Key Formulas

IIR Filter

data_filtered = (data_filtered_old * filter_coefficient + data_ADC) / (filter_coefficient + 1)

Normal Mode Sampling Period

tau_sampling = prescaler / f_sampling
f_sampling = 200 Hz (base)

Temperature Compensation (floating point)

partial1 = uncomp_temp - PAR_T1
partial2 = partial1 * PAR_T2
t_lin = partial2 + (partial1 * partial1) * PAR_T3
compensated_temp = t_lin  (in degrees C)

Pressure Compensation (floating point)

out1 = PAR_P5 + PAR_P6*t_lin + PAR_P7*t_lin^2 + PAR_P8*t_lin^3
out2 = uncomp_press * (PAR_P1 + PAR_P2*t_lin + PAR_P3*t_lin^2 + PAR_P4*t_lin^3)
out3 = uncomp_press^2 * (PAR_P9 + PAR_P10*t_lin)
out4 = uncomp_press^3 * PAR_P11
compensated_press = out1 + out2 + out3 + out4  (in Pa)

Calibration Coefficient Conversion (NVM to float)

PAR_T1 = NVM_PAR_T1 / 2^(-8)
PAR_T2 = NVM_PAR_T2 / 2^30
PAR_T3 = NVM_PAR_T3 / 2^48
PAR_P1 = (NVM_PAR_P1 - 2^14) / 2^20
PAR_P2 = (NVM_PAR_P2 - 2^14) / 2^29
PAR_P3 = NVM_PAR_P3 / 2^32
PAR_P5 = NVM_PAR_P5 / 2^(-3)
PAR_P6 = NVM_PAR_P6 / 2^6

Files