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

Настройка MCP23017

В стандартную конфигурацию контроллеров Lavritech входит поддержка микросхемы 16-канального расширителя портов с I2C интерфейсом MCP23017. Эта микросхема имеет 16 каналов, которые могут работать как на вход, так и на выход и применяется в различных подключаемых блоках и модулях, например во внешнем блоке на DIN рейку Wiren Board WBIO-DI-WD-14 на 14 цифровых входов.

Этот раздел содержит информацию по настройке 16-канального расширителя портов с I2C интерфейсом MCP23017. Сама настройка производится в несколько этапов, а опции MCP23017 содержатся на нескольких страницах прошивки Lavritech.

  1. Предварительная настройка в конструкторе прошивок
  2. I2C_Scanner
  3. Настройка I2C интерфейса и включение MCP23017
  4. Настройка виртуальных GPIO MCP23017
  5. Пример прикладной функции

Предварительная настройка в конструкторе прошивок

К пользователю контроллеры Lavritech поступают с уже установленной и настроенной прошивкой. На этапе компиляции прошивки производителем устанавливаются следующие параметры для расширителя портов с I2C интерфейсом MCP23017:

constructor

Основными параметрами тут являются адрес на I2C шине (по умолчанию для MCP23017 это 0x27) и начальный номер для пула из 16 виртуальных GPIO, который для MCP23017 равен 205 (всего 205-221). Из самой прошивки эти параметры изменить нельзя, если вам необходимо их изменение, то для этого нужно собрать в конструкторе новую прошивку и изменить в ней эти данные (см. соответствующий раздел этой документации).

I2C_Scanner

Для определения адресов подключённых на I2C шине устройств в прошивке Lavritech существует т. н. «I2C_Scanner» — это специальная страница (утилита) на которой показываются найденные на I2C шине компоненты (устройства).

scanner

Если к вашему контроллеру (материнской плате) Lavritech подключён модуль (внутренний) или блок (внешний) с I2C интерфейсом, то I2C_Scanner покажет это на своей странице.

scan

Здесь адрес 0x27 — это реально определённый адрес устройства на шине I2C, а надпись «MCP23017» — это название микросхемы, взятое из предустановок в конструкторе прошивок. Другими словами, если реально определённый I2C адрес совпадает с заданным в конструкторе прошивок, то система автоматически подставляет предопределённое название устройства.

Примечание. Если вы подключили I2C модуль или блок, а I2C_Scanner ничего не находит и не показывает, значит произошла какая-то ошибка — либо вы что-то неправильно подключили, либо подключаемое I2C устройство неисправно.

Настройка I2C интерфейса и включение MCP23017

После того, как вы убедились, что блок с MCP23017 реально подключён и определяется I2C сканером, причём с правильным адресом 0x27, можно переходить к дальнейшим настройкам на странице «Hardware»:

hardware

На этой странице находятся настройки различных датчиков и прочего подключаемого оборудования (блоки ввода/вывода и т. п.), а также интервал опроса датчиков и настройки интерфейса I2C. Вам нужно разрешить работу MCP23017, поставив соответствующую галочку.

on

Обратите внимание! Кнопка «Set» в секции «Interval sensors read» относится также и к списку оборудования. То есть установив галочку напротив MCP23017, вам нужно не забыть нажать на кнопку «Set» в этой секции, чтобы ваши изменения вступили в силу.

В секции «I2C GPIO Selected» находятся определения номеров GPIO для интерфейса I2C. Для контроллеров Lavritech по умолчанию это SDA:33, SCL:32. При необходимости вы можете изменить эти значения на нужные вам (обычно этого не требуется).

i2c

Вы можете также изменить интервал опроса датчиков. Ниже находится установка периода опроса датчиков. По умолчанию это 10 секунд. Общий принцип такой: чем меньше интервал, тем сильнее нагружает систему опрос датчиков. Поэтому рекомендуется устанавливать наибольший из возможных (по условиям проекта) интервал.

set

Настройка виртуальных GPIO MCP23017

Далее нужно настроить режим работы (вход/выход) восьми каналов MCP23017. Эти установки находятся на странице «MCP_GPIO».

mcp_gpio

Шестнадцати каналам (0-15) соответствуют восемь виртуальных GPIO с номерами 205-220. По умолчанию все каналы сконфигурированы на вход (INPUT).

options

На этом настройку работы MCP23017 можно считать законченной, далее вы можете переходить непосредственно к программированию прикладного функционала подключённого блока на MCP23017.

Пример прикладной функции

В этом примере мы подключали к контроллеру Lavritech внешний блок на DIN рейку Wiren Board WBIO-DI-WD-14, который содержит 14 цифровых входов. Попробуем реализовать простейшую задачу: индикацию состояния первого входа блока WBIO-DI-WD-14.

web_key

Для этого открываем страницу «Web_Key» («Кнопки в веб-интерфейсе») и задаём номер нашего виртуального GPIO205 (первый канал). Значения прочих GPIO («255») означают «номер GPIO не установлен».

in1

В результате на главной странице отображается состояние первого входа подключённого I2C блока Wiren Board WBIO-DI-WD-14.

Исходное состояние:

off

Первый контакт замкнут:

on

Таким образом можно задействовать и все остальные каналы расширителя блока WBIO-DI-WD-14.

Обратите внимание: главная страница контроллера может не перезагружаться автоматически (или перезагружаться с задержкой) и для изменения состояния индикатора может понадобиться вручную перезагрузить страницу.

Связанные темы

Настройка опций
ModBus
LoRa
MCP23008

Где купить

Купить оборудование Lavritech можно в официальном интернет-магазине.