ICM-42688-P
TDK InvenSense ICM-42688-P 6-axis IMU (accelerometer + gyroscope + temperature).
Live catalog
Prefer labwired_describe with the catalog id over guessing pins or addresses.
Status at a glance
| Aspect | Status |
|---|---|
| Catalog id | icm42688 |
| Bus | I²C |
| Address | 0x68 (AP_AD0 low); 0x69 (AP_AD0 high) |
| Source | configs/devices/icm42688.yaml (declarative, no Rust model) |
| Datasheet | TDK InvenSense DS-000347, User Bank 0 register map; cross-checked against Zephyr icm4268x_reg.h |
| Tier | smoke-proven (register-level tests: crates/core/tests/everyday_sensor_set.rs) |
Pins / attachment
| Pin / net | Role |
|---|---|
| SDA | I²C SDA |
| SCL | I²C SCL |
| VDD/GND | Power (digital twin) |
Support matrix
| Behavior | Status | Notes |
|---|---|---|
| WHO_AM_I 0x75 = 0x47 | ✅ | |
| Accel / gyro / temp data (0x1D..0x2A, int16 BE) | ✅ | Sensitivity follows ACCEL_FS_SEL / GYRO_FS_SEL; saturates at ±32767 |
| Sensor power modes (PWR_MGMT0) | ✅ | Data reads the datasheet's 0x8000 while a sensor is off |
| DATA_RDY_INT (INT_STATUS) | ✅ | 1 ms after power-on of a sensor; INT_STATUS clear-on-read; RESET_DONE at power-up |
| REG_BANK_SEL (0x76) | ⚠️ | Switches banks; only bank 0 is modelled |
| FIFO, APEX, timestamps, INT pins | ❌ | |
| SENSOR_DATA_ENDIAN = 0 | ❌ | Stored; data stays big-endian |
| Analog / power | ❌ | Bench |
Stimulus
Host inputs: accel_x/y/z (g), gyro_x/y/z (dps), temperature (°C).
How to run
- Place the part and an MCU in Playground, or add it to a system YAML:
- Agent:
labwired_list→labwired_describe id=icm42688→ wire →labwired_validate→labwired_run/labwired_verify. - Register-level smoke:
cargo test -p labwired-core --test everyday_sensor_set— WHO_AM_I 0x47; accel Z 0x8000 while off; 2048 counts at 1 g on ±16 g after PWR_MGMT0 = 0x0F. The same file's negative control proves the check fails against a part that answers only 0x00 or only 0xFF.
Limitations
- Banks 1–4 read 0x00.
- ODR / filter settings are stored but inert; data-ready period is always 1 ms.
See the YAML header for the full datasheet trace and every named approximation.