Универсальный асинхронный приемопередатчик (universal asynchronous receiver/transmitter - UART) - это устройство для последовательной связи между двумя устройствами. Omega поставляется с двумя устройствами UART: UART0 и UART1. UART0 в основном используется для вывода командной строки Omega, а UART1 свободно общается с другими устройствами.
Эта статья будет охватывать:
Через соединение UART могуть общаться только два устройства. Оно отличается от других протоколов связи, таких как I2C или SPI, где может быть 3, 10 или еще больше устройств, подключенных к одним и тем же линиям связи.
UART используется для последовательной связи между устройствами. UART не имеет архитектуры «ведущий-ведомый» и позволяет вам устанавливать скорость передачи ваших данных. Скорость передачи данных (baud rate) представляет собой время, проведенное каждым битом на высоком или низком уровне.
Если вы подключились к Omega через последовательный порт и установили скорость передачи 115200 бит/с, это означает, что время, проведенное каждым битом на высоком или низком уровне, составляет 1/115200 с или 8,6 мкс на бит.
UART на Omega форматирует данные, используя конфигурацию 8N1, в которой имеется 8 бит данных, бит без четности и один стоповый бит.
UART использует линию TX для передачи данных и RX для получения данных. При обмене данными TX устройства A будет отправлять данные на RX устройства B и наоборот.
Чтобы установить последовательную линии связи между двумя устройствами:
Взаимодействие UART с Omega2 осуществляется с использованием файлов виртуальных устройств /dev/ttyS0 и /dev/ttyS1. Это стало возможным благодаря sysfs, псевдо-файловой системе, которая хранит информацию об оборудовании Omega в файлах и позволяет пользователю управлять оборудованием, редактируя файлы.
Выводы UART выделены на Omega2, плате расширения и макетной беспаечной плате.
Контакты 12 и 13 используются для UART0 (в основном для командной строки на Omega).
UART1 использует контакты 45 и 46. Они помечены как TX1 и RX1 для обозначения того, что они используются для UART1.
На Expansion Dock и Power Dock отключен только UART1:
На Expansion Dock UART0 подключен к встроенному чипу USB-to-Serial, обеспечивая прямой доступ к командной строке Omega через USB-соединение.
На мини док-станции нет разъемов GPIO, поэтому ни один из UART на ней не доступен. Однако, как и в случае с Expansion Dock, UART0 подключен к встроенному чипу USB-to-Serial, обеспечивая прямой доступ к командной строке Omega через USB-соединение.
И UART0, и UART1 доступны в док-станции Arduino Dock 2:
Arduino Dock соединяет порт встроенного микроконтроллера с UART1 на Omega, обеспечивая прямую связь между микроконтроллером и Omega. Это позволяет пользователям свободно определять и проектировать связь между двумя устройствами.
И UART0, и UART1 доступны на макетной плате:
ВАЖНО: контакты 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-соединение уже используется для контактов.
Теперь откройте две отдельные сессии командной строки на вашем Omega. Проще всего подключиться через SSH в двух отдельных терминалах с вашего компьютера.
Описанный выше метод является отличным способом ознакомления с использованием UART, но он не настолько практичен. Используя команду screen, мы можем отправлять команды другим Omega или подключенным устройствам.
Вам нужно начать с установки screen с помощью менеджера пакетов Omega opkg. Начнем с обновления нашего списка пакетов:
opkg update
Теперь установим экран:
opkg install screen
Теперь вы готовы использовать экран с UART!
Чтобы использовать UART с screen, введите следующую команду:
screen /dev/ttyS1
Терминал погаснет, и команда будет работать следующим образом:
Чтобы проверить это, используя всего 1 Omega, войдите в 2 отдельные сессии SSH, как в предыдущем разделе. В обоих сеансах выполните следующую команду из примера:
screen /dev/ttyS1 9600
Оба терминала погаснут, ожидая вашего ввода.
Теперь начните печатать «Hello, world!» в первом терминале, и слова начнут появляться во втором!
Это также можно сделать с помощью двух Omega, подключив их контакты TX1, RX1 и GND, как описано в разделе «Подключение UART-устройств».
Отсоединение от screen не останавливает процесс. Если вы запустите несколько процессов и отсоединитесь, они свяжут память вашего Omega.
Чтобы убить все процессы экрана, скопируйте и вставьте следующую команду:
for pid in $(ps | grep "screen" | awk ’{print $1}’); do kill -9 $pid; done
Эта длинная команда делает следующее:
Вы можете использовать Python для последовательной связи через UART. Для этого используется модуль PySerial, который можно установить с помощью opkg.
Чтобы продолжить, вам нужно установить Python или Python-light. Если вы установили полную версию Python, у вас уже есть PySerial.
Вы можете прочитать наше руководство по установке и использованию Python на Omega для получения дополнительной информации.
Сначала обновите opkg:
opkg update
А затем установите python-pyserial:
opkg install python-pyserial
Теперь вы можете использовать PySerial!
Вы можете использовать PySerial, подключив устройство к UART1 вашего Omega. Подробнее об использовании PySerial вы можете прочитать в документации PySerial.
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru