MMA8451Q Accelerometer
Three-axis I2C accelerometer with a selectable address and two interrupt outputs
The MMA8451Q is a three-axis accelerometer with 14-bit resolution, read over I2C. Tilt it in the simulator and firmware reads the new orientation from the same registers it would on real hardware.
Datasheet
Section titled “Datasheet”The MMA8451Q datasheet documents the register map, the mode state machine, and the interrupt sources.
The breakout has a single 8-pin header. Names below are the silkscreen, left to right:
| Pin | Simulator name | Description |
|---|---|---|
| VIN | VDD | Supply |
| GND | GND | Ground |
| 3Vo | VDDIO | I/O rail |
| I2 | INT2 | Interrupt 2 |
| I1 | INT1 | Interrupt 1 |
| SCL | SCL | I2C clock |
| SDA | SDA | I2C data |
| A | SA0 | Address select |
SA0 chooses the I2C address: 0x1C when low, 0x1D when high. Leave it unwired to take the default.
Behaviour
Section titled “Behaviour”| Feature | Support | Notes |
|---|---|---|
| I2C register interface | ✅ | |
| 3-axis acceleration | ✅ | X, Y, Z in g |
| Mode state machine | ✅ | Standby / wake / sleep, gated the way the part gates it |
| Address select (SA0) | ✅ | |
| Interrupt outputs | ⚠️ | Pins exist; interrupt sources are not driven |
| Orientation / tap / freefall detection | ❌ | Not modelled |
- ✅ Fully supported ⚠️ Partial / stub ❌ Not supported
The part will not acknowledge on the bus until it is powered and has finished booting — the same gate real silicon applies, so firmware that probes too early sees the same NACK it would on a bench.
Controlling it
Section titled “Controlling it”Drag the 3D control in the editor to tilt the sensor, and firmware reads the change immediately. From the SDK, the current reading is a sample channel:
run.stream("accel1").subscribe(({ value }) => { console.log(value); // { acceleration_x_g, acceleration_y_g, acceleration_z_g, mode }});Limitations
Section titled “Limitations”- INT1/INT2 are wirable but never asserted
- No tap, orientation, freefall or transient detection
- No FIFO