pca9674a — Driver Expander I2C

Il modulo pca9674a fornisce un driver per l’espansore di I/O quasi-bidirezionale a 8 bit NXP PCA9674A. Il chip espone una porta di I/O a 8 bit tramite I2C e una linea INT attiva-bassa che genera un impulso ogni volta che un qualsiasi pin di input cambia stato.

Ogni pin è quasi-bidirezionale: scrivere 1 rilascia il pin a un debole pull-up interno in modo che agisca come input che un driver esterno può portare a livello basso; scrivere 0 porta attivamente il pin a livello basso. Non esiste un registro di direzione separato – PCA9674A.read() restituisce il livello esterno corrente di ogni pin indipendentemente da ciò che è stato scritto per ultimo.

L’indirizzo I2C a 7 bit è 0x380x3F a seconda dei pin di strap A0/A1/A2; 0x3F (63) è il valore predefinito (tutti gli strap alti).

class PCA9674A – espansore di I/O a 8 bit

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

Crea un’interfaccia verso un espansore di I/O PCA9674A.

  • bus è il bus machine.I2C a cui è collegato l’espansore.

  • irq_pin è l’etichetta del pin sull’MCU host collegato all’uscita INT dell’espansore. Il driver lo configura come input con pull-up e ne monitora il fronte di discesa.

  • address è l’indirizzo I2C a 7 bit dell’espansore (0x380x3F). Il valore predefinito è 0x3F.

  • callback viene invocato sul fronte di discesa di irq_pin quando lo stato di un qualsiasi pin cambia. Riceve l’istanza PCA9674A come unico argomento; il nuovo stato dei pin può essere letto con read(). Passa None (il valore predefinito) per l’uso in polling.

write(value: int) None

Scrive il value a 8 bit sui pin dell’espansore di I/O.

read() int

Restituisce il valore a 8 bit dei pin dell’espansore di I/O.

reset() None

Reimposta e re-inizializza l’espansore di I/O e ricollega il callback dell’IRQ se ne è stato fornito uno.