BMP388 / BMP390 Pressure & Temperature Sensor (U14)¶
Overview¶
Interface circuit for U14, a Bosch barometric pressure / temperature sensor. The V9 build assembles the BMP388 (LCSC C779278), which is pin-compatible with the newer BMP390 in the same 10-pin LGA package — both parts work in this footprint without rework. The page title and bmp390_documentation.md filename are kept for documentation continuity; verified part on the production board is BMP388.
The sensor is used for: - Cabin / engine-room ambient temperature (the BMP388 includes a built-in temperature element with ±0.5 °C accuracy at 25 °C) - Ambient pressure for elevation logging and as a basic weather/conditions trend input
It is not used for safety-critical alternator temperature monitoring — that role is handled by the DS18B20 (digital, on a separate 1-Wire bus that can be mounted directly on or near the alternator case).
Bus Sharing¶
The BMP388 shares a single I²C bus with two other devices on the 3.3 V rail:
| Address | Device | Function |
|---|---|---|
| 0x40 | INA228 (U20) | Battery shunt current and bus voltage |
| 0x6A | LSM6DSOX (U1) | 6-axis IMU (motion / vibration) |
| 0x76 | BMP388 (U14) | Pressure / temperature |
Bus pull-ups for the shared SDA/SCL lines are provided once on the board, not by each device:
- R92 = 2.2 kΩ 1 % — pull-up on I2C_SCL to 3V3
- R93 = 2.2 kΩ 1 % — pull-up on I2C_SDA to 3V3
The 2.2 kΩ value is chosen for 400 kHz fast-mode operation with the combined bus capacitance of three devices plus traces (~80 pF). A weaker pull-up (10 kΩ) would not meet the I²C rising-edge timing spec at 400 kHz; a stronger pull-up (1 kΩ) would exceed the sink-current rating of the open-drain output stages.
Bill of Materials¶
| Reference | Component | Value | Package | Function |
|---|---|---|---|---|
| U14 | BMP388 (BMP390 footprint-compatible) | — | 10-LGA, 2 × 2 × 0.75 mm | Barometric pressure + temperature sensor |
| C61 | Capacitor | 1 µF | 0603 | VDD decoupling capacitor |
| C62 | Capacitor | 1 µF | 0603 | VDDIO decoupling capacitor |
| R81 | Resistor | 10 kΩ 1 % | 0603 | CSB pull-up to 3V3 — selects I²C mode |
Pinout and Connections¶
BMP388 (U14) Pin Configuration¶
| Pin | Symbol | Function | Connection | Notes |
|---|---|---|---|---|
| 1 | VDDIO | I/O Supply | 3.3V via C61 | I2C interface power |
| 2 | SCK | Serial Clock | I2C_SCL | I2C clock input |
| 3 | VSS | Ground | GND | Ground reference |
| 4 | SDI | Serial Data In | I2C_SDA | I2C data line |
| 5 | SDO | Serial Data Out | GND | I2C address select (0x76) |
| 6 | CSB | Chip Select | 3.3V via R81 | I2C mode enable (HIGH) |
| 7 | INT | Interrupt | DNC | Do Not Connect per datasheet |
| 8 | VSS | Ground | GND | Ground reference |
| 9 | VDD | Core Supply | 3.3V via C62 | Main power supply |
| 10 | GND | Ground | GND | Ground reference |
Power Supply Configuration¶
- Supply Voltage: 3.3V common rail for both VDD and VDDIO
- VDD Range: 1.8V - 3.6V (core supply)
- VDDIO Range: 1.2V - 3.6V (I/O supply)
- Decoupling: 1µF ceramic capacitors on both supply pins
Power Consumption¶
| Operating Mode | Typical Current | Supply Voltage | Power |
|---|---|---|---|
| Sleep Mode | 0.2 µA | 3.3V | 0.66 µW |
| Standby Mode | 1.8 µA | 3.3V | 5.94 µW |
| Normal Mode @ 1Hz | 3.4 µA | 3.3V | 11.2 µW |
| Forced Mode (single conversion) | ~500 µA | 3.3V | 1.65 mW |
| Peak Current (during conversion) | 714 µA | 3.3V | 2.36 mW |
Additional Power Notes: - Startup Current: Brief spike during power-on (~1mA for ~2ms) - I2C Activity: Minimal additional current during communication - Pull-up Resistor (R81): 3.3V/10kΩ = 330µA when CSB active
I2C Interface Setup¶
- Protocol: I2C slave device
- Slave Address: 0x76 (SDO tied to GND)
- Alternative Address: 0x77 (if SDO tied to VDDIO)
- Bus Speed: Supports 100kHz (standard) and 400kHz (fast mode)
- Pull-up Resistors: Implemented elsewhere in system on SCL/SDA lines
- Mode Selection: CSB pulled high via R81 enables I2C communication
Interface Signals¶
- I2C_SCL: Serial clock line to microcontroller
- I2C_SDA: Serial data line to microcontroller
- BMP388_INT: Interrupt output (currently unused, DNC per datasheet)
Design Notes¶
- Thermal Placement: Component positioned away from heat sources for accurate readings
- Single Supply: VDD and VDDIO connected to same 3.3V rail (datasheet compliant)
- Address Configuration: SDO grounded for 7-bit address 0x76
- Unused Pins: INT pin left disconnected as recommended by datasheet
- Communication Mode: CSB high selects I2C over SPI interface
Operational Characteristics¶
- Pressure Range: 300 - 1250 hPa (equivalent to +9000m to -500m altitude)
- Temperature Range: -40°C to +85°C
- Resolution: 0.0016 hPa (0.013m altitude resolution)
- Interface: I2C up to 400kHz
- Power Modes: Sleep, forced, and normal measurement modes
Register Access¶
- Default State: Sleep mode after power-on reset
- Calibration: Factory calibration coefficients stored in NVM
- Configuration: All sensor parameters configurable via I2C registers
- Data Format: 20-bit pressure, 20-bit temperature values