pca9674a --- I2C 扩展器驱动

pca9674a 模块为 NXP PCA9674A 8 位准双向 I/O 扩展器提供了一个驱动。该芯片通过 I2C 公开一个 8 位 I/O 端口,以及一个低电平有效的 INT 线,每当任何输入引脚状态改变时该线就会发出脉冲。

每个引脚都是准双向的:写入 1 会将引脚释放到一个弱内部上拉,使其充当一个输入,外部驱动器可将其拉低;写入 0 则主动将引脚驱动为低电平。没有单独的方向寄存器 —— PCA9674A.read() 返回每个引脚当前的外部电平,无论上次写入的是什么。

7 位 I2C 地址为 0x38 —— 0x3F,取决于 A0/A1/A2 选通引脚;0x3F63)为默认值(所有选通引脚均为高电平)。

class PCA9674A —— 8 位 I/O 扩展器

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

创建一个到 PCA9674A I/O 扩展器的接口。

  • bus 是扩展器所连接的 machine.I2C 总线。

  • irq_pin 是主机 MCU 上连接到扩展器 INT 输出的引脚标签。驱动会将其配置为带上拉的输入,并监视其下降沿。

  • address 是扩展器的 7 位 I2C 地址(0x38 —— 0x3F)。默认为 0x3F

  • callback 在任何引脚状态改变时于 irq_pin 的下降沿被调用。它接收 PCA9674A 实例作为其唯一参数;可以用 read() 读取新的引脚状态。对于轮询用法,传入 None(默认值)。

write(value: int) None

将 8 位 value 写入 I/O 扩展器引脚。

read() int

返回 I/O 扩展器引脚的 8 位值。

reset() None

复位并重新初始化 I/O 扩展器,如果提供了 IRQ callback,则重新附加它。