pca9674a — Controlador de expansor I2C

El módulo pca9674a proporciona un controlador para el expansor de E/S cuasi-bidireccional de 8 bits PCA9674A de NXP. El chip expone un puerto de E/S de 8 bits a través de I2C y una línea INT activa a nivel bajo que emite un pulso cada vez que cualquier pin de entrada cambia de estado.

Cada pin es cuasi-bidireccional: escribir 1 libera el pin a una débil pull-up interna de modo que actúa como entrada que un controlador externo puede llevar a nivel bajo; escribir 0 lleva activamente el pin a nivel bajo. No hay un registro de dirección separado – PCA9674A.read() devuelve el nivel externo actual de cada pin independientemente de lo que se haya escrito por última vez.

La dirección I2C de 7 bits es 0x380x3F según los pines de configuración A0/A1/A2; 0x3F (63) es el valor predeterminado (todos los straps a nivel alto).

class PCA9674A – expansor de E/S de 8 bits

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

Crea una interfaz con un expansor de E/S PCA9674A.

  • bus es el bus machine.I2C al que está conectado el expansor.

  • irq_pin es la etiqueta del pin del MCU anfitrión conectado a la salida INT del expansor. El controlador lo configura como entrada con una pull-up y vigila su flanco de bajada.

  • address es la dirección I2C de 7 bits del expansor (0x380x3F). El valor predeterminado es 0x3F.

  • callback se invoca en el flanco de bajada de irq_pin cuando cambia el estado de cualquier pin. Recibe la instancia de PCA9674A como único argumento; el nuevo estado de los pines puede leerse con read(). Pasa None (el valor predeterminado) para uso por sondeo.

write(value: int) None

Escribe el value de 8 bits en los pines del expansor de E/S.

read() int

Devuelve el valor de 8 bits de los pines del expansor de E/S.

reset() None

Restablece y reinicializa el expansor de E/S, y vuelve a adjuntar el callback de IRQ si se proporcionó alguno.