Перейти к содержанию

PCF8574 — расширитель портов на 8 выводов по I²C

PCF8574 добавляет микроконтроллеру восемь выводов через два провода шины I²C, и на одну шину можно поставить до восьми таких микросхем. У него нет регистров направления: каждый вывод одновременно и выход, и вход. Разбираем по даташиту Texas Instruments, как это работает, какие у выводов токи и как не ошибиться с адресом.

Обновлено Редакция GAW

PCF8574 — 8-битный расширитель портов для шины I²C с питанием 2,5–6 В. У него нет регистров конфигурации: микроконтроллер после адреса просто записывает байт, который появляется на выводах P0–P7, или читает байт с них. Если в записи после первого байта идут ещё, TI указывает, что они игнорируются.

Коротко

  • Питание — 2,5–6 В; ток 40 мкА типично при 100 кГц, 2,5 мкА в ожидании.
  • Шина — I²C до 100 кГц; адрес 0x20–0x27 (семибитный), задаётся выводами A0–A2.
  • Выводы — квазидвунаправленные: в нуле принимают до 25 мА, в единице отдают 30–310 мкА.
  • Прерывание — выход INT с открытым стоком, срабатывает по изменению любого входа.
  • Корпуса — PDIP-16, SOIC-16, TSSOP-20, TVSOP-20, VQFN-16, VQFN-20.

Распиновка

PCF8574, вид сверху: 1 A0, 2 A1, 3 A2, 4 P0, 5 P1, 6 P2, 7 P3, 8 GND, 9 P4, 10 P5, 11 P6, 12 P7, 13 INT, 14 SCL, 15 SDA, 16 VCCPCF85741A02A13A24P05P16P27P38GND9P410P511P612P713INT14SCL15SDA16VCCвид сверху
PCF8574 в корпусе PDIP-16 или SOIC-16, вид сверху
Вывод (DIP, SOIC)ОбозначениеНазначение
1, 2, 3A0, A1, A2адрес; к питанию или общему проводу напрямую
4–7, 9–12P0–P7выводы порта
8GNDобщий провод
13INTвыход прерывания, открытый сток — к питанию через резистор
14SCLтактовая линия I²C — с подтяжкой к питанию
15SDAлиния данных I²C — с подтяжкой к питанию
16VCCпитание

В корпусах TSSOP-20 и TVSOP-20 нумерация другая, а часть выводов не подключена — сверяйтесь с таблицей 4-1 даташита.

Адрес

Байт адреса — 0100 A2 A1 A0 и бит направления R/W:

A2 A1 A0Семибитный адресБайт записиБайт чтения
0000x200x400x41
0010x210x420x43
0100x220x440x45
0110x230x460x47
1000x240x480x49
1010x250x4A0x4B
1100x260x4C0x4D
1110x270x4E0x4F

Библиотеки Arduino и HAL обычно принимают семибитный адрес — 0x20–0x27, а в даташитах часто пишут восьмибитный байт. Чем они отличаются, рассказано на странице «Адрес I²C». Посылку целиком можно разобрать в калькуляторе транзакции I²C.

Выводы порта

Каждый вывод — квазидвунаправленный: выход в нуле тянет к общему проводу сильным транзистором, а в единице подтянут к питанию слабым источником тока. TI указывает:

СостояниеТокУсловия
Ноль, гарантированноот 10 мА, 25 мА типично5 В, выход 1 В
Ноль, рабочий пределдо 25 мАрекомендуемые условия
Единица30–310 мкАвыход замкнут на общий провод
Единица кратковременнооколо 1 мАпри записи единицы, до спада SCL
Предельно50 мА в нуле, 4 мА в единице, 100 мА через питание

Отсюда правила подключения:

  • Вход. Сначала записать в вывод единицу — TI требует, чтобы выводы были в единице перед использованием как входы. Внешняя кнопка или датчик с открытым коллектором тянет его к нулю. После включения питания все выводы уже в единице.
  • Светодиод подключают катодом к выводу, анодом через резистор к питанию — он горит, когда в выводе ноль. На общий провод светодиод не включают: в единице тока не хватит.
  • Нагрузка с потребляемым током — через транзистор или сборку ULN2003.

Прерывание

Выход INT — открытый сток, его подтягивают к питанию резистором и подключают ко входу прерывания микроконтроллера. Сигнал появляется при любом изменении входа и сбрасывается, когда микроконтроллер читает порт или пишет в него, либо когда вход возвращается в исходное состояние. Так микроконтроллеру не нужно постоянно опрашивать шину. TI предупреждает: изменение входа во время такта подтверждения может потеряться.

Шина I²C

PCF8574 работает только в режиме Standard-mode — до 100 кГц. Минимальные длительности такта — 4 мкс в единице и 4,7 мкс в нуле, ёмкость шины — до 400 пФ. Линиям SCL и SDA нужны подтягивающие резисторы — их подбирает калькулятор подтяжки I²C. Как устроена шина, рассказано в статье «Интерфейс I²C». Самое известное применение PCF8574 — переходник для символьного ЖК-модуля, его подключение разобрано в статье «Символьные ЖК-модули на HD44780».

Частые вопросы

Какой адрес у PCF8574?

Семибитный адрес — 0100 A2 A1 A0, то есть от 0x20 до 0x27 в зависимости от уровней на выводах A0–A2. В восьмибитной записи TI приводит адреса записи 0x40–0x4E и чтения 0x41–0x4F. Выводы адреса подключают прямо к питанию или общему проводу, подтягивающие резисторы им не нужны. У PCF8574A диапазон адресов другой — 0x38–0x3F, он приведён в статье о модулях HD44780.

Как читать кнопку через PCF8574?

Сначала записать в этот вывод единицу: TI требует, чтобы выводы были в единице перед использованием как входы. В единице вывод подтянут к питанию слабым током 30–310 мкА, и кнопка, замыкающая его на общий провод, легко переводит его в ноль. Затем прочитать байт порта. Выход INT сообщит микроконтроллеру об изменении входа без постоянного опроса.

Можно ли подключить светодиод к PCF8574?

Да, катодом к выводу, анодом через резистор к питанию: вывод в нуле принимает до 25 мА по рабочим условиям, а гарантированно 10 мА при напряжении 1 В. Подключать светодиод на общий провод бесполезно — в единице вывод отдаёт только 30–310 мкА. Суммарный ток через выводы питания не должен превышать 100 мА.

На какой частоте работает PCF8574?

Только до 100 кГц — это режим Standard-mode шины I²C. Если на той же шине работают устройства на 400 кГц, частоту приходится снижать до 100 кГц, иначе PCF8574 будет работать ненадёжно.

Источники

  1. Texas Instruments. PCF8574 Remote 8-Bit I/O Expander for I2C Bus (SCPS068K, revised September 2024) — разд. 4 — выводы; 5.1–5.6 — предельные режимы, рабочие условия, характеристики, временные параметры I²C; 7.1 — работа портов и прерывания; 7.3 — интерфейс I²C, адрес и таблица адресов
  2. NXP Semiconductors. UM10204: I2C-bus specification and user manual, Rev. 7.0, 2021 — режим Standard-mode до 100 кГц, адресация, подтягивающие резисторы и ёмкость шины до 400 пФ

Нашли ошибку?