Как работать с универсальными линиями ввода-вывода GPIO в LT5x?

Как работать с универсальными линиями ввода-вывода GPIO в LT5x?

В роутере LT5x предусмотрены 3 универсальных порта ввода-вывода GPIO (маркировка I1, I2, I3).


Выводы являются независимыми, могут быть сконфигурированы в Операционной системе и предполагают три режима использования:

  • Подключение резистивных датчиков

  • Управление нагрузкой. В данном режиме выводы I1 - I3 можно объединять для увеличения нагрузочной способности выхода. Питание можно использовать как внешне

  • Измерение напряжения (режим работы по умолчанию

PULLUP - "Подтягивающий" резистор к питанию.

PULLDOWN - "Подтягивающий" резистор к заземлению.

ADC - АЦП.


1. Конфигурирование GPIO через WEB

Необходимо перейти во вкладку Сервисы -> Линии I/O


Описание:

  • АЦП - Режим "Измерение напряжения"
  • Сухой контакт - Режим "Подключение резистивных датчиков"
  • Открытый коллектор - Режим "Управление нагрузкой"

Выбирая нужные пункты, включаются необходимые режимы.

Чтобы измененные через WEB-интерфейс настройки сохранились при следующем включении роутера, поставьте флажок в столбце "Сохранять настройки при загрузке". Чтобы прочитать текущие значения с роутера, нажмите кнопку "Обновить" в колонке "Обновить замеры".


2. Конфигурирование GPIO через Консоль

Каждый GPIO имеет определенный индекс и направление по умолчанию, в операционной системе, приведем таблицу соответствий:

Порт Назначение Индекс в ОС Направление по умолчанию
IO1 IO1PULLUP# /dev/pu1 OUT
IO1PULLDOWN /dev/pd1 OUT
IO2 IO2PULLUP# /dev/pu2 OUT
IO2PULLDOWN /dev/pd2 OUT
IO3 IO3PULLUP# /dev/pu3 OUT
IO3PULLDOWN /dev/pd3 OUT

  • PULLDOWN— “нижний ключ”, притягивающий линии I/O к земле. Может принимать следующие состояния:
    • 1 – PULLDOWN включен
    • 0 – PULLDOWN выключен
  • PULLUP# — “верхний ключ”, включает источник тока в линии I/O. Обратите внимание: сигнал инвертирован, поэтому команды подаются следующим образом:
    • 1 – PULLUP# выключен
    • 0 – PULLUP# включен

Узнать состояние сигналов PULLUP и PULLDOWN на каждом входе можно с помощью команды:

cat /dev/pux/value, где x - номер входа I/O.

3. Считывание значений с линий I/O

Считать непреобразованные значения с каждого входа АЦП можно с помощью команды:

getinfo adcx, где x - номер входа I/O

Получить непреобразованные значения с АЦП в формате .json можно с помощью системного сервиса ubus.

  • Запрос всех значений:
    ubus call iolines raw '{"adc": "all"}'
  • Запрос одиночного значения:
    ubus call iolines raw '{"adc": "adc2"}'

Вычислить значение напряжения для режима АЦП (в мВ), используя непреобразованное значение, можно по следующей формуле:

Vin = N * 38

где

  • N – непреобразованное значение АЦП
  • 38 – коэффициент для пересчёта непреобразованных значений АЦП в напряжение в мВ

Получить преобразованные значения напряжения со входа АЦП (в мВ) также можно с помощью следующих команд:

  • Запрос всех значений:
    ubus call iolines voltage '{"adc": "all"}'
  • Запрос одиночного значения:
    ubus call iolines voltage '{"adc": "adc2"}'

Внимание:

  • Если мы работаем с PULLDOWN, PULLUP# должен быть выключен!
  • Если мы работаем с PULLUP#, PULLDOWN должен быть выключен