MCP23017 — расширитель портов на 16 выводов с интерфейсом I2C: два независимых восьмиразрядных порта, у каждого вывода свой бит направления, свой бит подтяжки и своя полярность, а адрес выбирается тремя выводами и даёт восемь адресов от 0x20 до 0x27 — то есть до восьми таких приборов на одной шине. Главная практическая проблема здесь не в самом приборе, а в том, что его адресное поле совпадает с PCF8574, PCF8575 и XL9535, а датчик освещённости BH1750 на 0x23 пересекается с ними, — и если на плате нужен и расширитель портов, и датчик, без мультиплексора I2C их не поставить. Второе, что стоит знать, — изменения в паспорте: в редакции 2022 года у выводов GPA7 и GPB7 убрана функция входа, они стали выходными, и схема, где на них стояли кнопки или датчики, после обновления паспорта выглядит исправной, но работать перестаёт.
Содержание руководства (9 разделов)
Что это за прибор
Логика работы с прибором простая и целиком программная. Направление каждого вывода задаётся битом в регистре направления, состояние входа читается из регистра ввода, инверсия логического уровня настраивается отдельно, и всё это меняется на ходу — то есть один и тот же вывод может работать входом в одном режиме работы и выходом в другом, без перепайки.
Встроенные подтяжки нужны для выводов, работающих входом с открытым коллектором: без них линия висит в неопределённом состоянии. Их наличие избавляет от лишних внешних резисторов, но задаёт сопротивление 100 кОм, которое для длинных линий или быстрых фронтов может оказаться слишком большим — тогда подтягивают внешним резистором, а встроенный отключают.
Прерывания — то, ради чего прибор чаще всего и берут. Каждый порт имеет свой выход прерывания, и когда состояние любого вывода настроенного на вход порта меняется, прибор сигнализирует об этом микроконтроллеру, а тот уже читает регистр состояния и определяет, какой именно вывод сработал. Такой подход снимает необходимость опрашивать все выводы по таймеру, что экономит и время микроконтроллера, и ток.
Дополнительно прибор запоминает состояние порта в момент возникновения прерывания, и это позволяет отличить изменение от состояния, которое уже было до обработки. Сами линии прерывания работают с открытым коллектором, что даёт возможность повесить на одну линию прерывания сразу несколько приборов.
| Параметр | Значение |
|---|---|
| Порты | два независимых восьмиразрядных: GPA0–GPA7 и GPB0–GPB7 |
| Интерфейс | I2C, 100 кГц стандарт, 400 кГц fast, до 1,7 МГц при питании 5 В |
| Адреса | 0x20–0x27 через выводы A0, A1, A2; до 8 приборов на шине |
| Питание | 1,8–5,5 В |
| Ток на вывод | 25 мА на приток и на отток |
| Суммарный ток | не более 150 мА в VSS и не более 125 мА в VDD |
| Подтяжки | встроенные 100 кОм на каждый вывод, отключаются программно |
| Прерывания | INTA и INTB, полярность настраивается, есть зеркальный режим |
| Корпус | SOIC-28, PDIP-28, QFN-28, SSOP-28 |
Распиновка и конфликт адресов
В корпусе на 28 выводов выводы порта B занимают первые восемь позиций, дальше идут питание, выводы I2C, выводы выбора адреса, сброс, линии прерывания и порт A. Два вывода — позиции 11 и 14 — у этого прибора не используются: в родственной микросхеме с интерфейсом SPI MCP23S17 на их месте стоят вывод выбора кристалла CS и выход данных SO, и при замене одного прибора на другой разводку проверяют.
Собственно конфликт адресов — это то, из-за чего прибор чаще всего и попадает в закупку как «расширитель на 16 выводов», а на плате потом не работает. Диапазон 0x20–0x27 одинаков у MCP23017, MCP23018, PCF8574 и PCF8575, а датчик освещённости BH1750 занимает 0x23 внутри этого же диапазона. Если на плате нужны и расширитель, и датчик, вариантов три: сдвинуть адрес расширителя выводами A0–A2, если свободен хотя бы один адрес в диапазоне; поставить мультиплексор I2C; либо выбрать расширитель из другого адресного поля.
Это ровно тот случай, для которого выпускаются мультиплексоры I2C на восемь каналов: один такой прибор разводит восемь устройств с одинаковым адресом по отдельным ветвям шины, и на каждой ветке адрес снова может совпадать. Подход с расширителями на разных адресах проще, но исчерпывается восемью устройствами, а подход с мультиплексором снимает ограничение, оставляя за собой единственный адрес на шине.
Что изменилось в выводах GPA7 и GPB7
В редакции паспорта 2022 года у прибора убрана функция входа у двух выводов — GPA7 и GPB7. Раньше они работали как полноценные выводы порта, а теперь это только выходы. Для большинства схем, где на этих выводах стоят светодиоды или силовые ключи, ничего не меняется, и прибор даже выигрывает в том, что выход нельзя случайно «замкнуть» внешним устройством.
Но схема, где на седьмом выводе порта был вход — кнопка, концевик, датчик с открытым коллектором, — после такой правки перестаёт видеть внешний сигнал. При этом внешне всё исправно: прибор отвечает по шине, читается, остальные выводы работают, и диагностика уводит в сторону программы. Поэтому при проверке партии или при переходе на новую ревизию паспорта этот вывод стоит проверить отдельно, а не по общему признаку «прибор отвечает».
Второе следствие того же изменения — вход на этих выводах больше не подтягивается внутренним резистором так, как раньше, и настройки режима ввода для них не имеют смысла.
Что проверять при заказе
- 01 Адресное поле 0x20–0x27: проверяют, не занято ли нужное место другим прибором или датчиком BH1750 на 0x23.
- 02 Питание 1,8–5,5 В: у части копий паспорта ошибочно указан диапазон от 2,7 В.
- 03 Корпус: SOIC-28, PDIP-28, QFN-28 или TSSOP-28 — под каждый своя разводка.
- 04 Ревизия паспорта: в редакции 2022 года GPA7 и GPB7 работают только на выход.
- 05 Выводы 11 и 14 у MCP23017 не используются, но у SPI-версии MCP23S17 на их месте вывод выбора кристалла и выход данных.
- 06 Потребление по выводам: 25 мА на вывод и не более 150 мА суммарно в землю.
Частые вопросы
- Сколько выводов у MCP23017 — 16, два порта по восемь.
- Какие адреса — от 0x20 до 0x27, выбираются выводами A0, A1, A2.
- Сколько приборов на одной шине — до восьми, всего 128 выводов.
- Конфликтует ли с PCF8575 — да, адресное поле совпадает полностью, и BH1750 на 0x23 тоже пересекается.
- Какое питание — от 1,8 до 5,5 В.
- Можно ли использовать GPA7 и GPB7 как входы — в редакции паспорта 2022 года нет, только выход.
Детали, названные в этом руководстве
КаталогКаждая позиция — это деталь или семейство, о которых идёт речь в руководстве, со ссылкой на карточку в каталоге: параметры, корпус, стадия жизненного цикла и datasheet, если он у нас локализован. Там, где в тексте названо семейство, в таблице стоит конкретный заказной партномер со склада. Если позиции из руководства в списке нет — значит, её у нас сейчас нет: пришлите номер, и она уйдёт в подбор вместе с остальными.
| Партномер | Производитель | Описание |
|---|---|---|
| MCP23017-E/SODatasheet | Microchip Technology | IC XPNDR 1.7MHZ I2C 28SOIC |
| MCP23017-E/SPDatasheet | Microchip Technology | IC I/O EXPANDER I2C 16B 28SDIP |
| MCP23S17T-E/MLDatasheet | Microchip Technology | IC I/O EXPANDER SPI 16B 28QFN |
| PCF8575PWRDatasheet | Texas Instruments | Texas Instruments PCF8575PWR I²C I/O Expander, 16-bit, 400 kHz, 2.5-5.5 V, -40 to 85°C, 24-TSSOP, Tape & Reel. |
| BH1750FVI-TR | Rohm Semiconductor | — |
Примените это к своей спецификации
Отправьте партномера или файл спецификации (Excel / CSV). По каждой строке проверим складские остатки в Шэньчжэне, наличие заводской упаковки и проверенные аналоги — с отгрузкой единой партией.
Запрос успешно отправлен!
Ваш запрос по позиции (ICBOMS) зарегистрирован. Номер заявки:
1. Служба закупок в Шэньчжэне проверяет реальные физические остатки на складах и Data Code.
2. Официальный расчет с ценами, сроками и условиями DDP будет отправлен на в течение 2-24 ч.
Как написано это руководство
Руководство написано службой поставок ICBOMS в Шэньчжэне и выверено по документам производителей и стандартам, на которые ссылается текст. Формулировки ограничены тем, что делает эта служба, и тем, как оценивают деталь — без ориентировочных цен, сроков поставки и остатков: всё это считается по каждой строке отдельно, по факту проверки. Дата последней вычитки стоит в начале страницы.