pca9674a — I2C-Expander-Treiber

Das Modul pca9674a stellt einen Treiber für den NXP PCA9674A bereit, einen quasi-bidirektionalen 8-Bit-I/O-Expander. Der Chip stellt einen 8-Bit-I/O-Port über I2C sowie eine Low-aktive INT-Leitung bereit, die immer dann einen Impuls erzeugt, wenn ein Eingangspin seinen Zustand ändert.

Jeder Pin ist quasi-bidirektional: Das Schreiben einer 1 gibt den Pin auf einen schwachen internen Pull-up frei, sodass er als Eingang fungiert, den ein externer Treiber auf Low ziehen kann; das Schreiben einer 0 treibt den Pin aktiv auf Low. Es gibt kein separates Richtungsregister – PCA9674A.read() gibt den aktuellen externen Pegel jedes Pins zurück, unabhängig davon, was zuletzt geschrieben wurde.

Die 7-Bit-I2C-Adresse liegt je nach den A0/A1/A2-Strap-Pins zwischen 0x38 und 0x3F; 0x3F (63) ist der Standardwert (alle Straps High).

class PCA9674A – 8-Bit-I/O-Expander

class pca9674a.PCA9674A(bus: machine.I2C, irq_pin: str, address: int = 63, callback: Callable | None = None)

Erstellt eine Schnittstelle zu einem PCA9674A-I/O-Expander.

  • bus ist der machine.I2C-Bus, an den der Expander angeschlossen ist.

  • irq_pin ist das Pin-Label am Host-MCU, das mit dem INT-Ausgang des Expanders verbunden ist. Der Treiber konfiguriert es als Eingang mit Pull-up und überwacht seine fallende Flanke.

  • address ist die 7-Bit-I2C-Adresse des Expanders (0x380x3F). Standardwert ist 0x3F.

  • callback wird bei der fallenden Flanke von irq_pin aufgerufen, wenn sich der Zustand eines Pins ändert. Es erhält die PCA9674A-Instanz als einziges Argument; der neue Pin-Zustand kann mit read() gelesen werden. Übergeben Sie None (der Standardwert) für den abfragenden Betrieb.

write(value: int) None

Schreibt den 8-Bit-Wert value auf die Pins des I/O-Expanders.

read() int

Gibt den 8-Bit-Wert der Pins des I/O-Expanders zurück.

reset() None

Setzt den I/O-Expander zurück, initialisiert ihn neu und hängt den IRQ-callback erneut an, falls einer angegeben wurde.