pca9674a — Sterownik ekspandera I2C

Moduł pca9674a dostarcza sterownik dla 8-bitowego quasi-dwukierunkowego ekspandera we/wy NXP PCA9674A. Układ udostępnia 8-bitowy port we/wy przez I2C oraz aktywną w stanie niskim linię INT, która generuje impuls za każdym razem, gdy zmieni się stan dowolnego pinu wejściowego.

Każdy pin jest quasi-dwukierunkowy: zapis 1 zwalnia pin do słabego wewnętrznego rezystora podciągającego, dzięki czemu działa on jako wejście, które zewnętrzny układ może ściągnąć do stanu niskiego; zapis 0 aktywnie steruje pinem w stan niski. Nie ma osobnego rejestru kierunku – PCA9674A.read() zwraca bieżący zewnętrzny poziom każdego pinu niezależnie od tego, co zostało ostatnio zapisane.

7-bitowy adres I2C wynosi od 0x38 do 0x3F w zależności od pinów konfiguracyjnych A0/A1/A2; 0x3F (63) jest wartością domyślną (wszystkie piny konfiguracyjne w stanie wysokim).

klasa PCA9674A – 8-bitowy ekspander we/wy

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

Tworzy interfejs do ekspandera we/wy PCA9674A.

  • bus to magistrala machine.I2C, do której podłączony jest ekspander.

  • irq_pin to etykieta pinu hosta MCU połączonego z wyjściem INT ekspandera. Sterownik konfiguruje go jako wejście z rezystorem podciągającym i obserwuje jego zbocze opadające.

  • address to 7-bitowy adres I2C ekspandera (od 0x38 do 0x3F). Domyślnie 0x3F.

  • callback jest wywoływane na zboczu opadającym irq_pin, gdy zmieni się stan dowolnego pinu. Otrzymuje instancję PCA9674A jako swój jedyny argument; nowy stan pinów można odczytać za pomocą read(). Podaj None (wartość domyślna) do użycia w trybie odpytywania.

write(value: int) None

Zapisuje 8-bitową wartość value do pinów ekspandera we/wy.

read() int

Zwraca 8-bitową wartość pinów ekspandera we/wy.

reset() None

Resetuje i ponownie inicjalizuje ekspander we/wy oraz ponownie podłącza wywołanie zwrotne IRQ callback, jeśli zostało podane.