A registered peripheral model runs in the engine: the firmware talks to it over the real bus and gets device-accurate responses.
Declarative I²C kit — model is core/configs/devices/pca9685.yaml (GenericI2cDevice register_file + servo_angle observable), no per-part Rust in the production path. The hand-written Pca9685 struct survives only as a byte-parity oracle.
Simulated device model
Built from the datasheet. Implemented from the part’s register documentation and exercised by automated tests. Nothing physical was ever placed next to it.
I²C
[object Object]
| Pin | Type | Role |
|---|---|---|
VCC | power_in | — |
GND | power_in | — |
SDA | open_drain | i2c_sda |
SCL | open_drain | i2c_scl |
OE | input | — |
LED0 | output | pwm |
LED1 | output | pwm |
LED2 | output | pwm |
LED3 | output | pwm |
LED4 | output | pwm |
LED5 | output | pwm |
LED6 | output | pwm |
LED7 | output | pwm |
LED8 | output | pwm |
LED9 | output | pwm |
LED10 | output | pwm |
LED11 | output | pwm |
LED12 | output | pwm |
LED13 | output | pwm |
LED14 | output | pwm |
LED15 | output | pwm |
Modelled from NXP PCA9685 16-channel PWM controller datasheet.