3D Model

BMI270 Molecule — Hardware Reference

~16×16 mm breakout for the Bosch BMI270 low-power 6-axis IMU (accelerometer + gyroscope). Brings out the full interface including the BMI270's auxiliary I²C master bus for slaving an external magnetometer.

  • Source: adom-inc/bosch-molecules/Moecule_BMI270_Bosch_V1 — imported 2026-04-17 (folder name misspelled Moecule upstream; we preserve that on disk)
  • KiCad project: Moecule_BMI270_Bosch_V1.kicad_pro
  • Wiki page: molecules/bmi270-bosch-v1-666000
  • Board: 17 contacts arranged as two rows at X=82 mm (west edge) and X=90 mm (east edge), single-sided, silk revision V1: 2025-09-04
  • IC: BMI270 (Bosch LGA-14, U1)

Component summary

Ref Part Function
U1 BMI270 6-axis IMU (accel + gyro), LGA-14
C1 100 nF 0402 VDDIO decoupling
C2 100 nF 0402 VDD decoupling
R1 10 kΩ 0402 Default pull-up on the I2C / 0x69 strap net → +VDDIO
Logo1 Adom logo silkscreen only

External contact map

Positions in mm on the front copper. Two columns: west edge (X=82, silk labels on the left side) and east edge (X=90, silk labels on the right side).

West edge (primary interface column)

Ref Silk Net Role
MP2 VDD +VDD Main rail — 1.71–3.6 V
MC13 VDD +VDD (duplicate — a second VDD tap)
MC11 VIO +VDDIO Logic rail — 1.2–3.6 V (typically tied to VDD)
MC3 CSB CSB Interface select: tie high for I²C (default via R1), tie low for SPI
MC12 I2C /0x69/I2C I²C/SPI mode strap (see below)
MC1 SDO SDO/0x68/0x69 I²C address strap (see below)
MC2 0x69 /0x69/I2C Strap option: bridge to MC1 for 0x69
MC10 0x68 GND Strap option: bridge to MC1 for 0x68
MP1 GND GND Ground

East edge (aux bus + interrupts + SPI lines)

Ref Silk Net Role
MP3 SDX SDX BMI270 primary serial data (I²C = SDA, SPI = MOSI)
MC6 INT1 INT1 Interrupt / data-ready output 1
MC5 (no silk) ASCX Aux I²C SCL (BMI270 as I²C master to external mag)
MC4 ASDX ASDX Aux I²C SDA (BMI270 as I²C master to external mag)
MC7 ASDX (silk overlap) OSCB OSCB — SPI aux-bus clock for 4-wire internal slave-SPI debug
MC9 OSCB (silk overlap) OSDO OSDO — SPI aux-bus data out
MC8 INT2 INT2 Interrupt / data-ready output 2
MP4 SCX SCX BMI270 primary serial clock (I²C = SCL, SPI = SCK)

Reading the silk

The silk is cramped on the east edge and labels overlap. Use the netlist (above) as ground truth; the .kicad_pcb coordinates give the true ordering top-to-bottom (Y=60 → Y=76) on that side:

Y=60  MP3  SDX                 (primary MOSI / SDA)
Y=62  MC6  INT1
Y=64  MC5  ASCX  (aux I²C SCL)
Y=66  MC4  ASDX  (aux I²C SDA)
Y=70  MC7  OSCB
Y=72  MC9  OSDO
Y=74  MC8  INT2
Y=76  MP4  SCX                 (primary SCK / SCL)

Interface strap (CSB — I²C vs SPI)

CSB net state Mode
Pulled high (default) I²C
Pulled low (bridge MC3 to GND) 4-wire SPI

Schematic text annotation: "CSB shares SDO pullup when high." In practice: leave MC3 floating and the default R1 pull-up holds the chip in I²C mode.

I²C address strap

BMI270 I²C slave address is set by the SDO pin at power-up. On this molecule, SDO is brought out as a 3-way strap:

Strap SDO tied to I²C address
Bridge MC1 ↔ MC10 (silk 0x68) GND 0x68 (demo firmware target ✓, Bosch default)
Bridge MC1 ↔ MC2 (silk 0x69) I2C/0x69 net (pulled up via R1) 0x69

Schematic text: "Jumper to GND (LOW): 0x68 (Default). Jumper to VDDIO (HIGH): 0x69."

CRITICAL for bring-up: the default with MC1 floating is undefined — SDO is weakly coupled through R1 (10 kΩ pull-up) to the I2C/0x69 net, which would resolve to 0x69 if the user hasn't bridged anything. The firmware expects 0x68, so MC1 must be solder-bridged to MC10 (the GND strap silk'd 0x68). Verify this physically on the board before flashing.

Aux I²C bus (for standalone BMM350 fusion)

The BMI270 can act as an I²C master to a single external sensor via its aux bus (ASCX / ASDX). On this molecule the aux pads are brought out to external contacts (MC4 / MC5) — they are NOT auto-wired to anything on the PCB. If you want the BMI270 to fuse with an external BMM350, you have to wire MC4/MC5 off-board to the BMM350 breakout's SDA/SCK pins.

For our demo firmware, the arm-side magnetometer fusion is handled by the BHI360/BHI385 combo molecules (which have the BMM350 on their own internal aux bus). The standalone BMI270 therefore runs in 6-DOF mode only; MC4/MC5 can be left unconnected.

Power

Rail Voltage Source
VDD 1.71–3.6 V Host via MP2 (or MC13 as alternate tap)
VDDIO 1.2–3.6 V Host via MC11

Datasheet annotation: "VDD/IO: 1.8 to 3.3. Typ: 685 µA." Typical active current is 685 µA with accelerometer + gyroscope in normal mode. For the demo: tie both VDD and VDDIO to +3.3 V.

Interrupts

INT1 (MC6) and INT2 (MC8) are push-pull active-low by default. Programmable for FIFO watermark, data-ready, any-motion, orientation, and the 8 kB feature engine (wrist-tilt, pickup, step counter). If unused → "If INT1,2 unused: DNC" (schematic note). Leave floating.

Wiring to the Arm RM2 I²C bus

BMI270 MP2 (VDD)  ──── RM2 +3V3
BMI270 MC11 (VIO) ──── RM2 +3V3           (tie VDDIO = VDD)
BMI270 MP1 (GND)  ──── RM2 GND
BMI270 MP3 (SDX)  ──── RM2 GPIO4 (I²C0 SDA, shared bus)
BMI270 MP4 (SCX)  ──── RM2 GPIO5 (I²C0 SCL, shared bus)
BMI270 MC6 (INT1) ──── (optional)
BMI270 MC8 (INT2) ──── (optional)
BMI270 MC4/MC5    ──── (unused — aux bus)
BMI270 MC7/MC9    ──── (unused — slave-SPI debug)

Bridge MC1 ↔ MC10 (solder blob or 0 Ω) to force SDO → GND → address 0x68.

Gotchas for firmware bring-up

  • SDO strap is not GND by default — on the bare v1 board, the default (unbridged) state is 0x69 via R1. Bridge MC1↔MC10 before powering up or the firmware will miss the 0x68 probe.
  • CSB must be high for I²C mode. The R1 pull-up handles this; just don't accidentally ground MC3.
  • BMI270 needs a config blob upload at boot (~8 KB) before accel/gyro work — already handled in firmware/sensors/bmi270.c, but it means a cold-boot read of raw registers before config upload returns garbage.
  • VDDIO must come up before or with VDD, otherwise the chip can latch up. Sequencing is fine if both rails are tied together on the carrier.
  • Silk is cramped on the east edge — when in doubt, trust the netlist above or probe with a multimeter.
  • Aux bus (ASCX/ASDX) is NOT connected on-board to any slave sensor on this molecule. If you expect magnetometer data, you need the BHI combo molecule instead (or wire an external BMM350 manually to MC4/MC5).

Files