Каталог товаров

Связь с последовательными устройствами

Универсальный асинхронный приемопередатчик (universal asynchronous receiver/transmitter - UART) - это устройство для последовательной связи между двумя устройствами. Omega поставляется с двумя устройствами UART: UART0 и UART1. UART0 в основном используется для вывода командной строки Omega, а UART1 свободно общается с другими устройствами.

Эта статья будет охватывать:

  • что делает UART
  • где его найти на оборудовании
  • использование UART на Omega:
    • через командную строку
    • через экранную команду
    • используя Python

Через соединение UART могуть общаться только два устройства. Оно отличается от других протоколов связи, таких как I2C или SPI, где может быть 3, 10 или еще больше устройств, подключенных к одним и тем же линиям связи.

Что такое UART?

UART используется для последовательной связи между устройствами. UART не имеет архитектуры «ведущий-ведомый» и позволяет вам устанавливать скорость передачи ваших данных. Скорость передачи данных (baud rate) представляет собой время, проведенное каждым битом на высоком или низком уровне.

Если вы подключились к Omega через последовательный порт и установили скорость передачи 115200 бит/с, это означает, что время, проведенное каждым битом на высоком или низком уровне, составляет 1/115200 с или 8,6 мкс на бит.

UART на Omega форматирует данные, используя конфигурацию 8N1, в которой имеется 8 бит данных, бит без четности и один стоповый бит.

формат данных UART

Подключение устройств UART

UART использует линию TX для передачи данных и RX для получения данных. При обмене данными TX устройства A будет отправлять данные на RX устройства B и наоборот.

передача данных UART

Чтобы установить последовательную линии связи между двумя устройствами:

  1. Подключите TX-линию устройства A к RX-линии устройства B.
  2. Подключите RX-линию устройства A к TX-линии устройства B.
  3. Соедините GND-линии двух устройств.

Omega и UART

Взаимодействие UART с Omega2 осуществляется с использованием файлов виртуальных устройств /dev/ttyS0 и /dev/ttyS1. Это стало возможным благодаря sysfs, псевдо-файловой системе, которая хранит информацию об оборудовании Omega в файлах и позволяет пользователю управлять оборудованием, редактируя файлы.

Оборудование

Выводы UART выделены на Omega2, плате расширения и макетной беспаечной плате.

выходы uart omega2

Контакты 12 и 13 используются для UART0 (в основном для командной строки на Omega).

UART1 использует контакты 45 и 46. Они помечены как TX1 и RX1 для обозначения того, что они используются для UART1.

Expansion Dock и Power Dock

На  Expansion Dock и Power Dock отключен только UART1:

выходы uart omega2

На Expansion Dock UART0 подключен к встроенному чипу USB-to-Serial, обеспечивая прямой доступ к командной строке Omega через USB-соединение.

Mini Dock

На мини док-станции нет разъемов GPIO, поэтому ни один из UART на ней не доступен. Однако, как и в случае с Expansion Dock, UART0 подключен к встроенному чипу USB-to-Serial, обеспечивая прямой доступ к командной строке Omega через USB-соединение.

Arduino Dock2

И UART0, и UART1 доступны в док-станции Arduino Dock 2:

uart arduino

Arduino Dock соединяет порт встроенного микроконтроллера с UART1 на Omega, обеспечивая прямую связь между микроконтроллером и Omega. Это позволяет пользователям свободно определять и проектировать связь между двумя устройствами.

Макетная беспаечная плата

И UART0, и UART1 доступны на макетной плате:

uart breadboard

ВАЖНО: контакты TX +/- и RX +/- используются для расширения Ethernet. Не подключайте ваши последовательные линии к этим контактам!

Использование командной строки

Мы будем использовать некоторые инструменты командной строки для записи (отправки) и чтения (получения) данных из /dev/ttyS1, как если бы это был любой другой файл.

Отправка данных

Чтобы отправить данные в UART1, просто откройте /dev/ttyS1 следующим образом:

echo "my message" > /dev/ttyS1

Эта команда не будет отображать текст на экране при вводе, так как вы просто пишете в файл.

Получение данных

Чтобы прочитать данные из UART1, просто запустите на нем команду cat следующим образом:

cat /dev/ttyS1

                # ждет данные на входе

Эта команда будет ожидать и распечатывать любые данные, полученные Omega, пока вы не выйдете из программы (Ctrl-C).

Отправка и печать полученных данных

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

Просто соедините контакты RX и TX Omega вместе, как показано ниже; GND-соединение уже используется для контактов.

uart tx и rx соединены

Теперь откройте две отдельные сессии командной строки на вашем Omega. Проще всего подключиться через SSH в двух отдельных терминалах с вашего компьютера.

  • В одном терминале запустите cat /dev/ttyS1, чтобы начать чтение последовательного порта.
  • В другом запускается echo "Hello, world!" > /dev/ttyS1 для записи сообщения в последовательный порт.

UART два терминала

Использование команды screen

Описанный выше метод является отличным способом ознакомления с использованием UART, но он не настолько практичен. Используя команду screen, мы можем отправлять команды другим Omega или подключенным устройствам.

Установка screen

Вам нужно начать с установки screen с помощью менеджера пакетов Omega opkg. Начнем с обновления нашего списка пакетов:

opkg update

Теперь установим экран:

opkg install screen

Теперь вы готовы использовать экран с UART!

Запуск screen

Чтобы использовать UART с screen, введите следующую команду:

screen /dev/ttyS1

Терминал погаснет, и команда будет работать следующим образом:

  • Любые введенные вами ключи или буквы немедленно отправляются в UART (на подключенное к нему устройство)
  • Терминал немедленно отобразит любые данные, полученные от UART (от устройства, подключенного к нему).

Чтобы проверить это, используя всего 1 Omega, войдите в 2 отдельные сессии SSH, как в предыдущем разделе. В обоих сеансах выполните следующую команду из примера:

screen /dev/ttyS1 9600

Оба терминала погаснут, ожидая вашего ввода.

Теперь начните печатать «Hello, world!» в первом терминале, и слова начнут появляться во втором!

Это также можно сделать с помощью двух Omega, подключив их контакты TX1, RX1 и GND, как описано в разделе «Подключение UART-устройств».

Работа с сеансами screen

  • Чтобы отсоединиться от сеанса screen и оставить его включенным, чтобы можно было вернуться к нему позже, введите «Ctrl-a», а затем «d».
    • Для получения подробной информации о том, как работать с прикреплением экрана, см. руководство пользователя экрана.
  • Чтобы завершить сеанс, введите «Ctrl-a», а затем «k».

Отсоединение от screen не останавливает процесс. Если вы запустите несколько процессов и отсоединитесь, они свяжут память вашего Omega.

Чтобы убить все процессы экрана, скопируйте и вставьте следующую команду:

for pid in $(ps  | grep "screen" | awk ’{print $1}); do kill -9 $pid; done

Эта длинная команда делает следующее:

  1. Получает список запущенных процессов, используя ps
  2. Передает его команде grep и найдите ищет имена процессов, содержащие слово «screen»
    • grep - мощная утилита для анализа текста с использованием регулярных выражений.
  3. Передает информацию об этих процессах в awk, который выводит их идентификаторы
  4. Убивает (kill) каждый идентификатор процесса, содержащий «screen»

Использование Python

Вы можете использовать Python для последовательной связи через UART. Для этого используется модуль PySerial, который можно установить с помощью opkg.

Установка модуля

Чтобы продолжить, вам нужно установить Python или Python-light. Если вы установили полную версию Python, у вас уже есть PySerial.

Вы можете прочитать наше руководство по установке и использованию Python на Omega для получения дополнительной информации.

Сначала обновите opkg:

opkg update

А затем установите python-pyserial:

opkg install python-pyserial

Теперь вы можете использовать PySerial!

PySerial

Вы можете использовать PySerial, подключив устройство к UART1 вашего Omega. Подробнее об использовании PySerial вы можете прочитать в документации PySerial.

 

Контакты

г. Москва, Пятницкое ш. д. 18, пав. 566

zakaz@compacttool.ru

8-495-752-55-22

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !

© Все права защищены 2021г https://compacttool.ru