pca9674a — Ovladač I2C expandéru

Modul pca9674a poskytuje ovladač pro 8bitový kvazi-obousměrný I/O expandér NXP PCA9674A. Čip zpřístupňuje 8bitový I/O port přes I2C a aktivní v nule linku INT, která pulzuje, kdykoli se změní stav libovolného vstupního pinu.

Každý pin je kvazi-obousměrný: zápis 1 uvolní pin na slabý interní pull-up, takže se chová jako vstup, který může externí budič stáhnout do nuly; zápis 0 aktivně stahuje pin do nuly. Neexistuje samostatný registr směru – PCA9674A.read() vrací aktuální externí úroveň každého pinu bez ohledu na to, co bylo naposledy zapsáno.

7bitová I2C adresa je 0x380x3F v závislosti na propojkových pinech A0/A1/A2; 0x3F (63) je výchozí (všechny propojky vysoko).

třída PCA9674A – 8bitový I/O expandér

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

Vytvoří rozhraní k I/O expandéru PCA9674A.

  • bus je sběrnice machine.I2C, ke které je expandér připojen.

  • irq_pin je štítek pinu na hostitelském MCU připojeného k výstupu INT expandéru. Ovladač jej nakonfiguruje jako vstup s pull-upem a sleduje jeho sestupnou hranu.

  • address je 7bitová I2C adresa expandéru (0x380x3F). Výchozí hodnota je 0x3F.

  • callback se vyvolá na sestupné hraně irq_pin, když se změní stav libovolného pinu. Jako jediný argument obdrží instanci PCA9674A; nový stav pinů lze přečíst pomocí read(). Pro dotazovaný režim předejte None (výchozí hodnota).

write(value: int) None

Zapíše 8bitovou hodnotu value na piny I/O expandéru.

read() int

Vrací 8bitovou hodnotu pinů I/O expandéru.

reset() None

Resetuje a znovu inicializuje I/O expandér a znovu připojí IRQ callback, pokud byl nějaký poskytnut.