pca9674a — Драйвер I2C-расширителя

Модуль pca9674a предоставляет драйвер для 8-битного квазидвунаправленного расширителя ввода-вывода NXP PCA9674A. Чип предоставляет 8-битный порт ввода-вывода по I2C и активный по низкому уровню сигнал INT, который выдаёт импульс при изменении состояния любого входного вывода.

Каждый вывод является квазидвунаправленным: запись 1 отпускает вывод на слабый внутренний подтягивающий резистор, благодаря чему он работает как вход, который внешний драйвер может притянуть к низкому уровню; запись 0 активно притягивает вывод к низкому уровню. Отдельного регистра направления нет — PCA9674A.read() возвращает текущий внешний уровень каждого вывода независимо от того, что было записано последним.

7-битный адрес I2C составляет 0x380x3F в зависимости от состояния выводов A0/A1/A2; 0x3F (63) используется по умолчанию (все выводы притянуты к высокому уровню).

class PCA9674A — 8-битный расширитель ввода-вывода

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

Создаёт интерфейс к расширителю ввода-вывода PCA9674A.

  • bus — это шина machine.I2C, к которой подключён расширитель.

  • irq_pin — это метка вывода на главном MCU, подключённого к выходу INT расширителя. Драйвер настраивает его как вход с подтягивающим резистором и отслеживает его спадающий фронт.

  • address — это 7-битный адрес I2C расширителя (0x380x3F). По умолчанию 0x3F.

  • callback вызывается по спадающему фронту irq_pin при изменении состояния любого вывода. Он получает экземпляр PCA9674A в качестве своего единственного аргумента; новое состояние выводов можно прочитать с помощью read(). Передайте None (по умолчанию) для опросного режима.

write(value: int) None

Записывает 8-битное значение value в выводы расширителя ввода-вывода.

read() int

Возвращает 8-битное значение выводов расширителя ввода-вывода.

reset() None

Сбрасывает и повторно инициализирует расширитель ввода-вывода и повторно подключает IRQ callback, если он был предоставлен.