pca9674a — I2C-expanderdriver

De pca9674a-module biedt een driver voor de NXP PCA9674A 8-bits quasi-bidirectionele I/O-expander. De chip stelt een 8-bits I/O-poort beschikbaar via I2C en een actief-lage INT-lijn die pulseert telkens wanneer een invoerpin van toestand verandert.

Elke pin is quasi-bidirectioneel: het schrijven van 1 geeft de pin vrij naar een zwakke interne pull-up, zodat hij fungeert als een invoer die door een externe driver laag kan worden getrokken; het schrijven van 0 drijft de pin actief laag. Er is geen apart richtingsregister – PCA9674A.read() geeft het huidige externe niveau van elke pin terug, ongeacht wat er als laatste is geschreven.

Het 7-bits I2C-adres is 0x380x3F afhankelijk van de A0/A1/A2 strap-pins; 0x3F (63) is de standaard (alle straps hoog).

class PCA9674A – 8-bits I/O-expander

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

Maakt een interface naar een PCA9674A I/O-expander aan.

  • bus is de machine.I2C-bus waarop de expander is aangesloten.

  • irq_pin is het pinlabel op de host-MCU dat is verbonden met de INT-uitgang van de expander. De driver configureert dit als een invoer met een pull-up en let op de neergaande flank ervan.

  • address is het 7-bits I2C-adres van de expander (0x380x3F). Standaard 0x3F.

  • callback wordt aangeroepen op de neergaande flank van irq_pin wanneer een pintoestand verandert. Het ontvangt de PCA9674A-instantie als enige argument; de nieuwe pintoestand kan met read() worden gelezen. Geef None (de standaard) door voor gepold gebruik.

write(value: int) None

Schrijft de 8-bits value naar de pins van de I/O-expander.

read() int

Geeft de 8-bits waarde van de pins van de I/O-expander terug.

reset() None

Reset en herinitialiseert de I/O-expander en koppelt de IRQ-callback opnieuw aan als er een was opgegeven.