molecule
BMA580
Public Made by Adomby adom
Compact 8×8 mm I²C-only breakout for the Bosch BMA580 accelerometer (fixed 0x18, on-chip hardware AI step counter / classifier).
← Commit history
README.mdadded+72@@ -0,0 +1,72 @@+# BMA580 Molecule — Hardware Reference++Tiny (~8×8 mm) 4-corner-pin breakout for the Bosch BMA580 next-gen 3-axis accelerometer with hardware AI step counter.++- **Source:** [adom-inc/bosch-molecules/BMA580](https://github.com/adom-inc/bosch-molecules/tree/main/BMA580) — imported 2026-04-17+- **KiCad project:** `BMA580.kicad_pro`+- **Wiki page:** [molecules/bma580-561000](https://wiki-ufypy5dpx93o.adom.cloud/wiki/molecules/bma580-561000)+- **Board:** 7 contacts (4 corner mount-pins carry power/I²C, 3 side contacts carry INTs + extra V+ tap), single-sided assembly, silk revision `V1.0 8/29/25`+- **IC:** BMA580 (Bosch BMA580 LGA, 2.0 × 2.0 × 0.65 mm, AC1)++## Component summary++| Ref | Part | Function |+|---|---|---|+| AC1 | BMA580 | 3-axis accelerometer — I²C only on this breakout (no SPI jumper) |+| C1 | 100 nF 0402 | V+ decoupling |+| D1 | LED 0402 | Power indicator |+| R1 | LED current-limit 0402 | — |++No address-select jumper. **Silk on the PCB calls out `BMA580 I2C: 0x18` — the address is fixed at 0x18** on this molecule (SDO strap hard-tied on-board).++## External contact map++| Ref | Silk | Net | Kind | Role |+|---|---|---|---|---|+| MP1 | `V+` | `V+` | mount | VDD / VDDIO (shared 3.3 V) |+| MP2 | `GND` | `GND` | mount | Ground |+| MP3 | `SDA` | `SDA` | mount | I²C SDA |+| MP4 | `SCL` | `SCL` | mount | I²C SCL |+| MC1 | `INT2` *(silk typo — actually INT2)* | `INT2` | contact | Interrupt output 2 |+| MC2 | `INT2` *(silk typo — actually **INT1**)* | `INT1` | contact | Interrupt output 1 |+| MC3 | `V+` | `V+` | contact | Extra V+ tap (power distribution, useful when daisy-chaining) |++### Silk misprint on v1++Both interrupt castellations are silk-labelled `INT2`, but the netlist (and the IC pin map) confirm **MC1 is INT2** and **MC2 is INT1**. The BMA580 pinout is: pin 2 = INT1, pin 3 = INT2. Use the position in the `.kicad_pcb` coordinate frame to disambiguate:++- MC1 @ (24.0, 20.0) → Y = 20 → upper edge (near V+ silk) = **INT2**+- MC2 @ (24.0, 28.0) → Y = 28 → lower edge (near GND silk) = **INT1**++Worth taping a small label onto physical boards if you end up actually using the INT lines.++## Power++| Rail | Voltage | Source |+|---|---|---|+| V+ (VDD = VDDIO tied) | 1.71–3.6 V (3.3 V in demo) | Host, via MP1 (or MC3 as an alternate tap) |++Single rail. Typical active current 145 µA in normal mode (datasheet).++## Interrupts++INT1 and INT2 are push-pull active-low by default; both are software-configurable for features like any-motion, data-ready, FIFO watermark, or the BMA580's hardware step counter / classifier. Unused → leave MC1/MC2 floating.++## Wiring to the Arm RM2 I²C bus++```+BMA580 MP1 (V+) ──── RM2 +3V3+BMA580 MP2 (GND) ──── RM2 GND+BMA580 MP3 (SDA) ──── RM2 GPIO4 (I²C0 SDA)+BMA580 MP4 (SCL) ──── RM2 GPIO5 (I²C0 SCL)+BMA580 MC1 (INT2) ──── (optional)+BMA580 MC2 (INT1) ──── (optional) ← silk says INT2, it's INT1+BMA580 MC3 (V+) ──── (optional — second power tap)+```++## Gotchas for firmware bring-up++- **Address is fixed at 0x18** — no jumper to mis-set. If the bus doesn't see 0x18 it's a wiring / pull-up problem, not an address problem.+- **Silk misprint on both INT contacts** (see above). If interrupts matter for your use case, trust the netlist / board position rather than the silk.+- **4.7 kΩ bus pull-ups are off-board** — provided by the RM2 carrier.+- The BMA580 has a stricter VDD minimum (1.71 V) than the BMA400 (1.2 V). If you're running the whole bus on 1.8 V for some reason, the BMA580 still works but has less margin.
page.jsonadded+38@@ -0,0 +1,38 @@+{+ "schema_version": 1,+ "type": "component",+ "slug": "bma580-561000",+ "title": "BMA580",+ "brief": "Compact 8×8 mm I²C-only breakout for the Bosch BMA580 accelerometer (fixed 0x18, on-chip hardware AI step counter / classifier).",+ "version": "1.0.0",+ "tags": [],+ "license": "MIT",+ "component": {+ "mpn": "BMA580",+ "manufacturer": "",+ "package": "",+ "pin_count": null,+ "category": "other",+ "subcategory": "",+ "body_size": null,+ "parts": {},+ "distributor_links": {},+ "molecule_id": 15078774497312561000+ },+ "readme": "# BMA580 Molecule — Hardware Reference\n\nTiny (~8×8 mm) 4-corner-pin breakout for the Bosch BMA580 next-gen 3-axis accelerometer with hardware AI step counter.\n\n- **Source:** [adom-inc/bosch-molecules/BMA580](https://github.com/adom-inc/bosch-molecules/tree/main/BMA580) — imported 2026-04-17\n- **KiCad project:** `BMA580.kicad_pro`\n- **Wiki page:** [molecules/bma580-561000](https://wiki-ufypy5dpx93o.adom.cloud/wiki/molecules/bma580-561000)\n- **Board:** 7 contacts (4 corner mount-pins carry power/I²C, 3 side contacts carry INTs + extra V+ tap), single-sided assembly, silk revision `V1.0 8/29/25`\n- **IC:** BMA580 (Bosch BMA580 LGA, 2.0 × 2.0 × 0.65 mm, AC1)\n\n## Component summary\n\n| Ref | Part | Function |\n|---|---|---|\n| AC1 | BMA580 | 3-axis accelerometer — I²C only on this breakout (no SPI jumper) |\n| C1 | 100 nF 0402 | V+ decoupling |\n| D1 | LED 0402 | Power indicator |\n| R1 | LED current-limit 0402 | — |\n\nNo address-select jumper. **Silk on the PCB calls out `BMA580 I2C: 0x18` — the address is fixed at 0x18** on this molecule (SDO strap hard-tied on-board).\n\n## External contact map\n\n| Ref | Silk | Net | Kind | Role |\n|---|---|---|---|---|\n| MP1 | `V+` | `V+` | mount | VDD / VDDIO (shared 3.3 V) |\n| MP2 | `GND` | `GND` | mount | Ground |\n| MP3 | `SDA` | `SDA` | mount | I²C SDA |\n| MP4 | `SCL` | `SCL` | mount | I²C SCL |\n| MC1 | `INT2` *(silk typo — actually INT2)* | `INT2` | contact | Interrupt output 2 |\n| MC2 | `INT2` *(silk typo — actually **INT1**)* | `INT1` | contact | Interrupt output 1 |\n| MC3 | `V+` | `V+` | contact | Extra V+ tap (power distribution, useful when daisy-chaining) |\n\n### Silk misprint on v1\n\nBoth interrupt castellations are silk-labelled `INT2`, but the netlist (and the IC pin map) confirm **MC1 is INT2** and **MC2 is INT1**. The BMA580 pinout is: pin 2 = INT1, pin 3 = INT2. Use the position in the `.kicad_pcb` coordinate frame to disambiguate:\n\n- MC1 @ (24.0, 20.0) → Y = 20 → upper edge (near V+ silk) = **INT2**\n- MC2 @ (24.0, 28.0) → Y = 28 → lower edge (near GND silk) = **INT1**\n\nWorth taping a small label onto physical boards if you end up actually using the INT lines.\n\n## Power\n\n| Rail | Voltage | Source |\n|---|---|---|\n| V+ (VDD = VDDIO tied) | 1.71–3.6 V (3.3 V in demo) | Host, via MP1 (or MC3 as an alternate tap) |\n\nSingle rail. Typical active current 145 µA in normal mode (datasheet).\n\n## Interrupts\n\nINT1 and INT2 are push-pull active-low by default; both are software-configurable for features like any-motion, data-ready, FIFO watermark, or the BMA580's hardware step counter / classifier. Unused → leave MC1/MC2 floating.\n\n## Wiring to the Arm RM2 I²C bus\n\n```\nBMA580 MP1 (V+) ──── RM2 +3V3\nBMA580 MP2 (GND) ──── RM2 GND\nBMA580 MP3 (SDA) ──── RM2 GPIO4 (I²C0 SDA)\nBMA580 MP4 (SCL) ──── RM2 GPIO5 (I²C0 SCL)\nBMA580 MC1 (INT2) ──── (optional)\nBMA580 MC2 (INT1) ──── (optional) ← silk says INT2, it's INT1\nBMA580 MC3 (V+) ──── (optional — second power tap)\n```\n\n## Gotchas for firmware bring-up\n\n- **Address is fixed at 0x18** — no jumper to mis-set. If the bus doesn't see 0x18 it's a wiring / pull-up problem, not an address problem.\n- **Silk misprint on both INT contacts** (see above). If interrupts matter for your use case, trust the netlist / board position rather than the silk.\n- **4.7 kΩ bus pull-ups are off-board** — provided by the RM2 carrier.\n- The BMA580 has a stricter VDD minimum (1.71 V) than the BMA400 (1.2 V). If you're running the whole bus on 1.8 V for some reason, the BMA580 still works but has less margin.\n",+ "author": {+ "id": "695820315b5f1e4db2fcf602",+ "name": "Kyle Bergstedt",+ "email": "[email protected]"+ },+ "visibility": {+ "public": true+ },+ "hero": null,+ "sample_prompts": [],+ "discovery_triggers": [],+ "discovery_pitch": null,+ "metadata": {},+ "created_at": "2026-05-28T05:31:13.452Z",+ "updated_at": "2026-05-28T05:31:13.452Z"+}