[РУКОВОДСТВО] Аналоги и замена микросхем Практика поставок Проверено

MCP23017 — как добавить порты к микроконтроллеру?

IC
Служба поставок ICBOMS · Склад в Шэньчжэне, экспресс DDP и подбор аналогов
[ПРОВЕРЕНО] Экспертиза
Прямой ответ службы закупок

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. Раньше они работали как полноценные выводы порта, а теперь это только выходы. Для большинства схем, где на этих выводах стоят светодиоды или силовые ключи, ничего не меняется, и прибор даже выигрывает в том, что выход нельзя случайно «замкнуть» внешним устройством.

Но схема, где на седьмом выводе порта был вход — кнопка, концевик, датчик с открытым коллектором, — после такой правки перестаёт видеть внешний сигнал. При этом внешне всё исправно: прибор отвечает по шине, читается, остальные выводы работают, и диагностика уводит в сторону программы. Поэтому при проверке партии или при переходе на новую ревизию паспорта этот вывод стоит проверить отдельно, а не по общему признаку «прибор отвечает».

Второе следствие того же изменения — вход на этих выводах больше не подтягивается внутренним резистором так, как раньше, и настройки режима ввода для них не имеют смысла.

Что проверять при заказе

  1. 01 Адресное поле 0x20–0x27: проверяют, не занято ли нужное место другим прибором или датчиком BH1750 на 0x23.
  2. 02 Питание 1,8–5,5 В: у части копий паспорта ошибочно указан диапазон от 2,7 В.
  3. 03 Корпус: SOIC-28, PDIP-28, QFN-28 или TSSOP-28 — под каждый своя разводка.
  4. 04 Ревизия паспорта: в редакции 2022 года GPA7 и GPB7 работают только на выход.
  5. 05 Выводы 11 и 14 у MCP23017 не используются, но у SPI-версии MCP23S17 на их месте вывод выбора кристалла и выход данных.
  6. 06 Потребление по выводам: 25 мА на вывод и не более 150 мА суммарно в землю.

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

  • Сколько выводов у MCP23017 — 16, два порта по восемь.
  • Какие адреса — от 0x20 до 0x27, выбираются выводами A0, A1, A2.
  • Сколько приборов на одной шине — до восьми, всего 128 выводов.
  • Конфликтует ли с PCF8575 — да, адресное поле совпадает полностью, и BH1750 на 0x23 тоже пересекается.
  • Какое питание — от 1,8 до 5,5 В.
  • Можно ли использовать GPA7 и GPB7 как входы — в редакции паспорта 2022 года нет, только выход.

Детали, названные в этом руководстве

Каталог
Все производители →

Каждая позиция — это деталь или семейство, о которых идёт речь в руководстве, со ссылкой на карточку в каталоге: параметры, корпус, стадия жизненного цикла и datasheet, если он у нас локализован. Там, где в тексте названо семейство, в таблице стоит конкретный заказной партномер со склада. Если позиции из руководства в списке нет — значит, её у нас сейчас нет: пришлите номер, и она уйдёт в подбор вместе с остальными.

ПартномерПроизводительОписание
MCP23017-E/SODatasheetMicrochip TechnologyIC XPNDR 1.7MHZ I2C 28SOIC
MCP23017-E/SPDatasheetMicrochip TechnologyIC I/O EXPANDER I2C 16B 28SDIP
MCP23S17T-E/MLDatasheetMicrochip TechnologyIC I/O EXPANDER SPI 16B 28QFN
PCF8575PWRDatasheetTexas InstrumentsTexas 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-TRRohm Semiconductor—
[ЗАКАЗ] Комплектация BOM и экспресс-поставка

Примените это к своей спецификации

Отправьте партномера или файл спецификации (Excel / CSV). По каждой строке проверим складские остатки в Шэньчжэне, наличие заводской упаковки и проверенные аналоги — с отгрузкой единой партией.

Открыть форму запроса →

Как написано это руководство

Руководство написано службой поставок ICBOMS в Шэньчжэне и выверено по документам производителей и стандартам, на которые ссылается текст. Формулировки ограничены тем, что делает эта служба, и тем, как оценивают деталь — без ориентировочных цен, сроков поставки и остатков: всё это считается по каждой строке отдельно, по факту проверки. Дата последней вычитки стоит в начале страницы.