INA3221
TI INA3221 three-channel shunt and bus voltage monitor.
Live catalog
Prefer labwired_describe with the catalog id over guessing pins or addresses.
Status at a glance
| Aspect | Status |
|---|---|
| Catalog id | ina3221 |
| Bus | I²C |
| Address | 0x40 (0x40–0x43 by A0) |
| Source | configs/devices/ina3221.yaml (declarative, no Rust model) |
| Datasheet | TI SBOS576C, §8.1 Table 8-1 and §8.2 register descriptions |
| 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 |
|---|---|---|
| Manufacturer ID 0x5449 / Die ID 0x3220 | ✅ | |
| Configuration POR 0x7127, RST | ✅ | All registers back to POR |
| CHn shunt (40 µV/LSB) / bus (8 mV/LSB) | ✅ | 13-bit two's complement at D15:D3, D2:D0 = 0 |
| Shunt-voltage sum (SCC1..SCC3) | ✅ | Σ counts in D14:D1 |
| CVRF | ⚠️ | 6.6 ms after a Configuration write (3 × 2.2 ms) |
| Mask/Enable POR 0x0002 (TCF) | ⚠️ | TCF stays set; timing-control sequence not modelled |
| Averaging, channel disable, alerts, power-valid | ❌ | Not modelled |
Stimulus
Host inputs: ch1_bus_voltage, ch2_bus_voltage, ch3_bus_voltage (V), ch1_current, ch2_current, ch3_current (A through 0.1 Ω).
How to run
- Place the part and an MCU in Playground, or add it to a system YAML:
- Agent:
labwired_list→labwired_describe id=ina3221→ wire →labwired_validate→labwired_run/labwired_verify. - Register-level smoke:
cargo test -p labwired-core --test everyday_sensor_set— IDs, Configuration 0x7127, CH1 shunt 4000 and bus 5000 at 0.2 A / 5 V. The same file's negative control proves the check fails against a part that answers only 0x00 or only 0xFF.
Limitations
- D15 of the data words is SIGN (Tables 8-6 / 8-8), not don't-care.
See the YAML header for the full datasheet trace and every named approximation.