pca9674a — Driver do 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 por I2C e uma linha INT ativa em nível baixo que pulsa sempre que qualquer pino de entrada muda de estado.

Cada pino é quase bidirecional: escrever 1 libera o pino para um pull-up interno fraco, fazendo com que ele atue como uma entrada que um driver externo pode puxar para o nível baixo; escrever 0 aciona ativamente o pino para o nível baixo. Não há um registrador de direção separado – PCA9674A.read() retorna 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 (strap) A0/A1/A2; 0x3F (63) é o padrão (todos os straps em nível 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)

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

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

  • irq_pin é o rótulo do pino no MCU host conectado à saída INT do expansor. O driver o configura como uma entrada com pull-up e monitora sua borda de descida.

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

  • callback é invocado na borda de descida de irq_pin quando qualquer estado de pino muda. Ele recebe a instância PCA9674A como seu único argumento; o novo estado dos pinos pode ser lido com read(). Passe None (o 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

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

reset() None

Reinicia e reinicializa o expansor de E/S, e reanexa o callback do IRQ se algum foi fornecido.