pca9674a — Driver Expansor I2C

O módulo pca9674a fornece um driver para o expansor de E/S quase-bidirecional de 8 bits NXP PCA9674A. O chip expõe uma porta de E/S de 8 bits via I2C e uma linha INT ativa-baixa que pulsa sempre que qualquer pino de entrada muda de estado.

Cada pino é quase-bidirecional: escrever 1 liberta o pino para um pull-up interno fraco, fazendo-o atuar como entrada que um driver externo pode colocar a baixo; escrever 0 conduz ativamente o pino a baixo. Não existe registo de direção separado – PCA9674A.read() devolve o nível externo atual de cada pino independentemente do que foi escrito por último.

O endereço I2C de 7 bits é 0x380x3F dependendo dos pinos de configuração A0/A1/A2; 0x3F (63) é o valor padrão (todos os pinos de configuração a alto).

classe PCA9674A – expansor de E/S de 8 bits

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

Cria uma interface para um expansor de E/S PCA9674A.

  • bus é o barramento machine.I2C ao qual o expansor está ligado.

  • irq_pin é o identificador do pino no MCU anfitrião ligado à saída INT do expansor. O driver configura-o como entrada com pull-up e monitoriza a sua aresta descendente.

  • address é o endereço I2C de 7 bits do expansor (0x380x3F). O valor padrão é 0x3F.

  • callback é invocado na aresta descendente de irq_pin quando o estado de qualquer pino muda. Recebe a instância PCA9674A como único argumento; o novo estado dos pinos pode ser lido com read(). Passe None (valor padrão) para uso por polling.

write(value: int) None

Escreve o value de 8 bits nos pinos do expansor de E/S.

read() int

Devolve o valor de 8 bits dos pinos do expansor de E/S.

reset() None

Repõe e reinicializa o expansor de E/S, e volta a ligar o callback de IRQ se um tiver sido fornecido.