Настройка MCP23017
В стандартную конфигурацию контроллеров Lavritech входит поддержка микросхемы 16-канального расширителя портов с I2C интерфейсом MCP23017. Эта микросхема имеет 16 каналов, которые могут работать как на вход, так и на выход и применяется в различных подключаемых блоках и модулях, например во внешнем блоке на DIN рейку Wiren Board WBIO-DI-WD-14 на 14 цифровых входов.
Этот раздел содержит информацию по настройке 16-канального расширителя портов с I2C интерфейсом MCP23017. Сама настройка производится в несколько этапов, а опции MCP23017 содержатся на нескольких страницах прошивки Lavritech.
- Предварительная настройка в конструкторе прошивок
- I2C_Scanner
- Настройка I2C интерфейса и включение MCP23017
- Настройка виртуальных GPIO MCP23017
- Пример прикладной функции
Предварительная настройка в конструкторе прошивок
К пользователю контроллеры Lavritech поступают с уже установленной и настроенной прошивкой. На этапе компиляции прошивки производителем устанавливаются следующие параметры для расширителя портов с I2C интерфейсом MCP23017:
Основными параметрами тут являются адрес на I2C шине (по умолчанию для MCP23017 это 0x27) и начальный номер для пула из 16 виртуальных GPIO, который для MCP23017 равен 205 (всего 205-221). Из самой прошивки эти параметры изменить нельзя, если вам необходимо их изменение, то для этого нужно собрать в конструкторе новую прошивку и изменить в ней эти данные (см. соответствующий раздел этой документации).
I2C_Scanner
Для определения адресов подключённых на I2C шине устройств в прошивке Lavritech существует т. н. «I2C_Scanner» — это специальная страница (утилита) на которой показываются найденные на I2C шине компоненты (устройства).
Если к вашему контроллеру (материнской плате) Lavritech подключён модуль (внутренний) или блок (внешний) с I2C интерфейсом, то I2C_Scanner покажет это на своей странице.
Здесь адрес 0x27 — это реально определённый адрес устройства на шине I2C, а надпись «MCP23017» — это название микросхемы, взятое из предустановок в конструкторе прошивок. Другими словами, если реально определённый I2C адрес совпадает с заданным в конструкторе прошивок, то система автоматически подставляет предопределённое название устройства.
Примечание. Если вы подключили I2C модуль или блок, а I2C_Scanner ничего не находит и не показывает, значит произошла какая-то ошибка — либо вы что-то неправильно подключили, либо подключаемое I2C устройство неисправно.
Настройка I2C интерфейса и включение MCP23017
После того, как вы убедились, что блок с MCP23017 реально подключён и определяется I2C сканером, причём с правильным адресом 0x27, можно переходить к дальнейшим настройкам на странице «Hardware»:
На этой странице находятся настройки различных датчиков и прочего подключаемого оборудования (блоки ввода/вывода и т. п.), а также интервал опроса датчиков и настройки интерфейса I2C. Вам нужно разрешить работу MCP23017, поставив соответствующую галочку.
Обратите внимание! Кнопка «Set» в секции «Interval sensors read» относится также и к списку оборудования. То есть установив галочку напротив MCP23017, вам нужно не забыть нажать на кнопку «Set» в этой секции, чтобы ваши изменения вступили в силу.
В секции «I2C GPIO Selected» находятся определения номеров GPIO для интерфейса I2C. Для контроллеров Lavritech по умолчанию это SDA:33, SCL:32. При необходимости вы можете изменить эти значения на нужные вам (обычно этого не требуется).
Вы можете также изменить интервал опроса датчиков. Ниже находится установка периода опроса датчиков. По умолчанию это 10 секунд. Общий принцип такой: чем меньше интервал, тем сильнее нагружает систему опрос датчиков. Поэтому рекомендуется устанавливать наибольший из возможных (по условиям проекта) интервал.
Настройка виртуальных GPIO MCP23017
Далее нужно настроить режим работы (вход/выход) восьми каналов MCP23017. Эти установки находятся на странице «MCP_GPIO».
Шестнадцати каналам (0-15) соответствуют восемь виртуальных GPIO с номерами 205-220. По умолчанию все каналы сконфигурированы на вход (INPUT).
На этом настройку работы MCP23017 можно считать законченной, далее вы можете переходить непосредственно к программированию прикладного функционала подключённого блока на MCP23017.
Пример прикладной функции
В этом примере мы подключали к контроллеру Lavritech внешний блок на DIN рейку Wiren Board WBIO-DI-WD-14, который содержит 14 цифровых входов. Попробуем реализовать простейшую задачу: индикацию состояния первого входа блока WBIO-DI-WD-14.
Для этого открываем страницу «Web_Key» («Кнопки в веб-интерфейсе») и задаём номер нашего виртуального GPIO205 (первый канал). Значения прочих GPIO («255») означают «номер GPIO не установлен».
В результате на главной странице отображается состояние первого входа подключённого I2C блока Wiren Board WBIO-DI-WD-14.
Исходное состояние:
Первый контакт замкнут:
Таким образом можно задействовать и все остальные каналы расширителя блока WBIO-DI-WD-14.
Обратите внимание: главная страница контроллера может не перезагружаться автоматически (или перезагружаться с задержкой) и для изменения состояния индикатора может понадобиться вручную перезагрузить страницу.
Связанные темы
Настройка опций
ModBus
LoRa
MCP23008
Где купить
Купить оборудование Lavritech можно в официальном интернет-магазине.