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.
Распиновка
| Вывод (DIP, SOIC) | Обозначение | Назначение |
|---|---|---|
| 1, 2, 3 | A0, A1, A2 | адрес; к питанию или общему проводу напрямую |
| 4–7, 9–12 | P0–P7 | выводы порта |
| 8 | GND | общий провод |
| 13 | INT | выход прерывания, открытый сток — к питанию через резистор |
| 14 | SCL | тактовая линия I²C — с подтяжкой к питанию |
| 15 | SDA | линия данных I²C — с подтяжкой к питанию |
| 16 | VCC | питание |
В корпусах TSSOP-20 и TVSOP-20 нумерация другая, а часть выводов не подключена — сверяйтесь с таблицей 4-1 даташита.
Адрес
Байт адреса — 0100 A2 A1 A0 и бит направления R/W:
| A2 A1 A0 | Семибитный адрес | Байт записи | Байт чтения |
|---|---|---|---|
| 000 | 0x20 | 0x40 | 0x41 |
| 001 | 0x21 | 0x42 | 0x43 |
| 010 | 0x22 | 0x44 | 0x45 |
| 011 | 0x23 | 0x46 | 0x47 |
| 100 | 0x24 | 0x48 | 0x49 |
| 101 | 0x25 | 0x4A | 0x4B |
| 110 | 0x26 | 0x4C | 0x4D |
| 111 | 0x27 | 0x4E | 0x4F |
Библиотеки 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 будет работать ненадёжно.
Источники
- 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, адрес и таблица адресов
- NXP Semiconductors. UM10204: I2C-bus specification and user manual, Rev. 7.0, 2021 — режим Standard-mode до 100 кГц, адресация, подтягивающие резисторы и ёмкость шины до 400 пФ
Нашли ошибку?
Смотрите также
- MCP2301716 выводов по I²C: адреса, регистры, подтяжки, прерывания, токи
- Интерфейсные микросхемыРасширители портов и приёмопередатчики: параметры, карточки
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек
- Адрес I²C7-битный адрес ведомого и байт адреса с битом R/W
- Подтягивающие резисторы I²CДиапазон Rp по напряжению, скорости и ёмкости шины
- HD44780 и LCD 1602Распиновка 1602, команды, инициализация, I²C, кириллица, CGRAM