pca9674a — Driver pentru expander I2C

Modulul pca9674a oferă un driver pentru expanderul de I/O cvasi-bidirecțional pe 8 biți NXP PCA9674A. Cipul expune un port de I/O pe 8 biți prin I2C și o linie INT activă pe nivel scăzut care emite un impuls ori de câte ori vreun pin de intrare își schimbă starea.

Fiecare pin este cvasi-bidirecțional: scrierea valorii 1 eliberează pinul către un pull-up intern slab, astfel încât acesta să acționeze ca o intrare pe care un driver extern o poate trage la nivel scăzut; scrierea valorii 0 trage activ pinul la nivel scăzut. Nu există un registru de direcție separat – PCA9674A.read() returnează nivelul extern curent al fiecărui pin indiferent de ce a fost scris ultima dată.

Adresa I2C pe 7 biți este 0x380x3F în funcție de pinii de configurare A0/A1/A2; 0x3F (63) este valoarea implicită (toți pinii de configurare la nivel înalt).

class PCA9674A – expander de I/O pe 8 biți

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

Creează o interfață către un expander de I/O PCA9674A.

  • bus este magistrala machine.I2C la care este conectat expanderul.

  • irq_pin este eticheta pinului de pe MCU-ul gazdă conectat la ieșirea INT a expanderului. Driverul îl configurează ca intrare cu pull-up și urmărește muchia sa descendentă.

  • address este adresa I2C pe 7 biți a expanderului (0x380x3F). Valoarea implicită este 0x3F.

  • callback este invocat pe muchia descendentă a irq_pin atunci când vreo stare de pin se schimbă. Primește instanța PCA9674A ca singur argument; noua stare a pinilor poate fi citită cu read(). Treceți None (valoarea implicită) pentru utilizarea prin interogare.

write(value: int) None

Scrie valoarea value pe 8 biți la pinii expanderului de I/O.

read() int

Returnează valoarea pe 8 biți a pinilor expanderului de I/O.

reset() None

Resetează și reinițializează expanderul de I/O și reatașează funcția de retroapelare IRQ callback dacă a fost furnizată una.