BMA400 Molecule — Hardware Reference

Tiny (~8×8 mm) 4-corner-pin breakout for the Bosch BMA400 ultra-low-power 3-axis accelerometer.

  • Source: adom-inc/bosch-molecules/BMA400 — imported 2026-04-17
  • KiCad project: BMA400.kicad_pro
  • Wiki page: molecules/bma400-1-593000
  • Board: 6 castellated contacts (4 corner mount-pins carry power/I²C, 2 side contacts carry INTs), single-sided assembly
  • IC: BMA400 (BOSCH_LGA-12, 2.0 × 2.0 × 0.65 mm, AC1)

Component summary (from BOM + CPL)

Ref Part LCSC Function
AC1 BMA400 C437655 3-axis accelerometer (LGA-12)
C1, C2 100 nF 0402 C1525 VDD / VDDIO decoupling
R1 5.1 kΩ 0402 C25905 Power-LED current limit
D1 LED 0402 C130725 Power indicator
JP2 ADOM_JUMPER_4x2 Interface-mode strap — solder-bridged = I²C, left open = 3-wire SPI
JP3 ADOM_JUMPER_4x2_3Way_Selector SDO / I²C-address strap — see below

External contact map

Positions are in mm on the PCB's front copper layer (from .kicad_pcb). MP pads are through-hole, MC pads are castellated.

Ref Silk Net on board Kind Role
MP1 3.3V +3.3V mount VDD / VDDIO (shared)
MP2 GND GND mount Ground
MP3 SDA SDA/MOSI mount I²C SDA (also SPI MOSI)
MP4 SCK SCL/SCK mount I²C SCL (also SPI SCK)
MC1 INT1 INT1 contact Interrupt output 1
MC2 INT2 INT2 contact Interrupt output 2

Four corner through-hole mount-pins carry the primary interface. Two mid-side castellations carry the optional interrupt lines.

Interface strap (JP2 — I²C vs SPI)

JP2 state Mode CSB net
Bridged (default for our demo) I²C CSB pulled to +3.3V (→ I²C mode)
Open 3-wire SPI CSB floats / externally driven

Schematic text annotation: "Connected = I2C mode; NC = 3-Wire SPI Mode; NC = !(CS)"

I²C address strap (JP3 — 3-way selector)

BMA400 I²C slave address is set by SDO at power-up:

JP3 setting SDO tied to I²C address
1–2 bridged GND (I2C_ID.0 = 0) 0x14 (demo firmware target ✓)
2–3 bridged +3.3V (I2C_ID.0 = 1) 0x15
Center (MISO) Routed to external pad only SPI 4-wire mode

Bring-up note: confirm JP3 is in the 1–2 position before connecting the bus. Wrong strap → device acks at 0x15 instead of 0x14 and the firmware bails with a probe miss.

Power

Rail Voltage Source
VDD / VDDIO (shared) 1.71–3.6 V (3.3 V in demo) Host, via MP1

Single rail; VDD and VDDIO tied on-board. Typical active current 14.5 µA in normal mode (datasheet).

Interrupts

Line Silk Behavior
INT1 INT1 Datasheet default: any-motion / wake-up
INT2 INT2 Secondary — typically data-ready or step

Interrupts are push-pull active-low by default; polarity, drive, and mapping are software-programmable. If unused, leave the MC1/MC2 contacts unconnected — the BMA400 safely drives them tri-state between events.

Wiring to the Arm RM2 I²C bus (demo configuration)

BMA400 MP1 (3.3V) ──── RM2 +3V3
BMA400 MP2 (GND)  ──── RM2 GND
BMA400 MP3 (SDA)  ──── RM2 GPIO4 (I²C0 SDA, shared pull-up on arm bus)
BMA400 MP4 (SCK)  ──── RM2 GPIO5 (I²C0 SCL, shared pull-up on arm bus)
BMA400 MC1 (INT1) ──── (optional — wake/interrupt GPIO, not used in stream mode)
BMA400 MC2 (INT2) ──── (optional)

Gotchas for firmware bring-up

  • Double-check JP2 is bridged — an open JP2 puts the BMA400 in 3-wire SPI mode and it will not respond to I²C transactions.
  • JP3 must be position 1–2 (SDO→GND) to match the firmware's 0x14 probe.
  • 4.7 kΩ bus pull-ups are off-board — this molecule has no I²C pull-ups of its own. The RM2 carrier provides them.
  • No on-board voltage regulation — apply 3.3 V clean to MP1; the sensor will latch-up on brown-outs if an external rail sags below ~1.6 V during operation.