# 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](https://github.com/adom-inc/bosch-molecules/tree/main/BMA400) — imported 2026-04-17
- **KiCad project:** `BMA400.kicad_pro`
- **Wiki page:** [molecules/bma400-1-593000](https://wiki-ufypy5dpx93o.adom.cloud/wiki/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.
