Uart для чего нужен

Общие сведения:

Подключение:

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Пример соединения двух UNO:

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

UART на Arduino:

На Arduino и Arduino-совместимых платах аппаратный UART обозначается символами RX и TX рядом с соответствующими выводами. На Arduino UNO/Piranha UNO это 0 и 1 цифровые выводы:

Arduino UNO/Piranha UNO

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

В скетче инициализируется функцией begin() в коде функции setup():

Пример:

Piranha ULTRA

На Piranha ULTRA присутствуют два аппаратных UART. Один на тех же выводах, что и UNO, второй на 8 (RX) и 9 (TX) выводах:

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

В Arduino IDE второй аппаратный UART называется Serial1 (Сериал один), и инициализируется так же как и первый:

Простой пример для копирования буфера первого UART’а во второй и наоборот:

Arduino MEGA

У Arduino MEGA, помимо UART’a на цифровых выводах 0 и 1 как и у UNO, присутствуют ещё три аппаратных UART. На плате это выводы 19 (RX1), 18 (TX1), 17 (RX2), 16 (TX2) и 15 (RX3), 14 (TX3) соответственно. UART совместимый по расположению с UNO обозначен RX0, TX0:

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

На заметку: На многих Arduino и Arduino-совместимых платах UART0 используется для загрузки скетчей, так что если Ваш скетч не загружается, проверьте эти выводы. Во время загрузки скетча к ним ничего не должно быть подключено.

Отладка проектов при помощи UART

Пример:

Программный UART на Arduino

Помимо аппаратного UART в Arduino можно использовать программный. Программный порт хорошо подходит для простых проектов, не критичных к времени работы кода или для отладки проектов, позволяя не отключать модули использующие UART во время загрузки сетчей. При его использовании нужно лишь помнить что никакой другой код не может выполняться пока программа занимается считыванием данных из него и передача может осуществляться только в полудуплексном или симплексном режимах. Так же на программный RX можно назначать только те выводы, которые поддерживают прерывание по смене уровней. На UNO, например, это все цифровые выводы, кроме 13-го. Прежде чем собирать свой проект, проконсультируйтесь с инструкцией к конкретной плате.

Пример использования программного порта:

UART на Raspberry Pi:

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Пример работы с последовательным портом на Python:

Данный пример выводит строку «iArduino.ru» в последовательный порт Raspberry и ждёт данных из последовательного порта.

Подробнее о UART:

Параметры

При обозначении параметров UART принято использовать короткую запись ЦИФРАБУКВАЦИФРА

Таким образом, стандартные настройки в Arduino: 8-N-1

Кадрирование данных

При приёме-передаче данных каждое устройство ориентируется на своё внутреннее тактирование. Обычно это тактирование от 8 до 16 раз быстрее скорости передачи данных и обычно отсчитывается от стартового бита. Именно поэтому необходимо чтобы оба устройства были настроены на одну и ту же скорость передачи.

Так же при передаче данных присутствуют синхронизирующие биты, именуемые старт-бит и стоп-бит. Старт-бит сигнализирует о начале передачи данных и стоп-бит, соответственно об окончании.

Рассмотрим кадр данных:

Старт-бит:

При отсутствии передачи линия удерживается в состоянии логической единицы (в случае TTL Arduino это 5 вольт или Vcc). Как только передающее устройство притягивает линию к 0 (GND или 0 вольт в случае Arduino), это сигнализирует принимающему устройству о том что сейчас будет передача данных.

Данные:

При появлении старт-бита на линии принимающее устройство начинает отсчитывать время в соответствии с установленной скоростью и считывать состояния линии через определённые промежутки времени в соответствии с установленным количеством бит данных, после этого.

Стоп-бит:

По завершении передачи данных принимающее устройство ожидает стоп-бит, который должен быть на уровне логической единицы. Если по завершении кадра удерживается логический ноль, значит данные неверны. Если логический ноль удерживается время, превышающее длину кадра в 1,5 раза, такое состояние именуется break (разрыв линии, исторически пошло от устройств, использующих токовую петлю для передачи данных). Некоторые передатчики вызывают это состояния специально перед посылкой пакета данных. Некоторые приёмники считают такое состояние за неправильно выставленную скорость и сбрасывают свои настройки на установки «по умолчанию».

Скорость передачи данных

Скорость изменения логических уровней (импульсов) на линии принято измерять в бодах. Единица измерения названа так в честь французского изобретателя Жана Мориса Эмиля Бодо.

Скорость при использовании UART может быть любой, единственное требование — скорости передающего и принимающего должны быть одинаковы. Стандартная скорость UART принята за 9600 бод. Arduino без проблем и лишних настроек может принимать и передавать данные на скоростях до 115200 бод.

Так как при передаче данных присутствуют синхронизирующие биты, именуемые старт-бит и стоп-бит, не совсем корректно говорить, что скорость 9600 бод равна 9600 битам в секунду. Если речь идёт о полезных данных, то реальная скорость на 20% ниже. Например, если выставлены параметры 8-N-1 и 9600 бод, то на передачу одного байта уходит десять бит, и 9600/10 = 960 байт, что равно 7680 битам в секунду.

Методы связи

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

Источник

UART – Последовательный интерфейс передачи данных

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

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

Серьёзные среды разработки, типа IAR или ATMEL Studio, как правило, содержат в себе либо программный симулятор целевого микроконтроллера, либо имеют программные средства для работы с аппаратными отладчиками.

Среда Arduino IDE не имеет ни того, ни другого, что значительно усложняет поиск ошибок в программе. Компилятор выявляет только синтаксические ошибки, наряду с которыми существуют еще и логические (написано-то правильно, только не то делает), не говоря уж о подсчёте различных коэффициентов… Программы не пишутся без ошибок!

Существует множество методов отладки, но практически для всех необходимо физическое соединение с компьютером. Все платы Arduino (кроме Pro и Pro Mini) имеют «на борту» USB-разъём и специальную микросхему, которая преобразует интерфейс UART в USB. Так не будем же придумывать ничего лишнего и сделаем простейшую отладку с помощью интерфейса, который у нас уже есть!

Среда разработки Arduino IDE уже имеет в своём составе монитор последовательного порта, который позволяет просматривать данные, проходящие через порт, а также отправить свои данные. Таким образом, мы всегда можем передать данные из нашего устройства прямо в компьютер и вывести на экран.

Монитор порта – не единственное средство для работы с ним, в сети можно найти множество программ-мониторов, которые позволяют не только принимать данные, но и стоить графики на их основе, записывать данные в таблицу и многое другое! Это значительно упростит отладку программы.

Так как интерфейс UART выведен не только к преобразователю интерфейсов, его можно использовать и для связи между платами Arduino или, например, платой и датчиком, но это уже тема для другой статьи.

UART интерфейс — описание

UART в переводе с английского звучит как “Универсальный Асинхронный Приёмопередатчик”. Существует ещё его синхронная версия с дополнительной линией тактового сигнала, но она не интересна нам в рамках статьи.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Каждый бит каждого байта передаётся в равный отведённый промежуток времени (фактически, тайм-слот). Стандартным размером данных в посылке является 8 байт, но помимо данных каждый пакет несёт и служебную информацию, а именно:

Кратко параметры передаваемого сигнала записываются так:

[кол-во бит данных] [тип чётности] [кол-во стоп-битов], то есть запись 8N1 характеризует сигнал с 8 битами данных, без бита чётности (N – Not) с 1 стоп-битом.

Так как интерфейс асинхронный, то большую значимость имеет скорость передачи данных – и у приёмника, и у передатчика она должна быть одинаковой.

Скорость измеряется в битах в секунду, или коротко – в бодах. Стандарт RS232 подразумевает скорости от 1200 до 115200 бод, хотя по факту существуют скорости и ниже, и выше, причём до десятков мегабод!

Разумеется, точность везде относительна и скорость никогда не будет равняться 9600 бодам с точностью до единиц. Стандарт предусматривает возможную ошибку в скорости до 5% (не более 3% для уверенного приёма).

Далее сведены основные сведения о сигнале:

4800, 9600, 19200, 38400, 57600, 115200 бод.

Скорость передачи (бод)Время передачи одного бита (мкс)Время передачи байта (мкс)
48002082083
96001041042
1920052521
3840026260
5760017174
1152008,787

UART может быть запущен как в полудуплексном (только приём или только передача) режиме, так и в полнодуплексном режиме, так как линии приёма и передачи разделены. Линия TXD отвечает за передачу, RXD – за приём, соответственно, линии от приёмника к передатчику перекрещиваются (TX-RX, RX-TX).

Реализация UART в Arduino

Все платы Arduino, построенные на основе оригинальных, имеют минимум один интерфейс UART, продвинутые же платы, типа Arduino Mega 2560 Или Arduino Due, имею сразу 4 аппаратных интерфейса! Они не загружают контроллер, так как они отделены от ядра; всё, что необходимо – это сконфигурировать порт и запихать данные в буфер, после чего операции передачи пойдут независимо от вас.

Конечно, существуют и программные реализации UART, но они нагружают процессор. В любом случае, лучше использовать сначала аппаратные интерфейсы, а потом уже начинать придумывать что-то программное.

Контроллеры Arduino используют логические уровни такие же, каким является питание, то есть для самой популярной платы Arduino UNO уровни будут равны – ноль = 0В, 1 = 5В.

Выводы подключены к преобразователю интерфейсов через резисторы с сопротивлением 1 КОм, а к гребёнкам по бокам платы – напрямую, поэтому сигналы с гребёнок будут иметь больший приоритет. Периодически это мешает прошивать платы с подключенным датчиком по UART, так как для прошивки тоже используется UART.

Микросхема преобразователя интерфейсов не делает из себя ещё один COM-интерфейс для компьютера, она лишь эмулирует его. Несмотря на это, все программы, которые работают с COM-портом посредством Windows API (Win32 API), не отличат порт от физического порта компьютера.

Класс Serial – RS232 в лучших традициях Arduino

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Для удобной работы с последовательным портом разработчики Arduino написали целую библиотеку, которая значительно упрощает работу с портом, абстрагируя конечного пользователя от простой, «железной» работы с регистрами. Класс имеет множество функций, которые будут рассмотрены нами далее. Но сначала надо понять, как же компьютер примет и обработает, а точнее покажет то, что мы ему передали.

Всё дело в том, что каждый символ раскладки клавиатуры – это тоже байт. И если просто взять и отправить в порт число 65, он не выведет две цифры 6 и 5, а выведет заглавную латинскую букву А. Почему так? Потому что в таблице кодировки буква А имеет код 65. Класс позволяет выбрать между текстовым и бинарным методом передачи данных, то есть мы сможем отправить число 65 и как букву, и как число.

Источник

UART ПРОТОКОЛ: ОПИСАНИЕ РАБОТЫ

UART (Universal Asynchronous Transmitter Receiver) это наиболее распространенный протокол, используемый для полнодуплексной последовательной связи. Устройство отправляет и получает данные из одной системы в другую. В этом мануале мы подробно изучим основы связи и работу протокола UART, подробное описание интерфейса и распиновку разъёмов..

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Что такое UART

UART означает универсальный асинхронный приемник-передатчик. Это периферийное оборудование, которое находится внутри микроконтроллера. Функция UART заключается в преобразовании входящих и исходящих данных в последовательный двоичный поток. Восьмибитные последовательные данные, полученные от периферийного устройства, преобразуются в параллельную форму с использованием последовательного преобразования в параллельное, а параллельные данные, полученные от ЦП, преобразуются с помощью преобразования из последовательного в параллельный. Эти данные представлены в модулирующей форме и передаются с определенной скоростью передачи.

Почему используют UART

Для быстрой связи используются такие протоколы, как SPI (последовательный периферийный интерфейс) и USB (универсальная последовательная шина). Но когда высокоскоростная передача данных не требуется, применяют протокол UART. Это дешевое устройство связи с одним передатчиком и приемником. Тут требуется лишь один провод для передачи данных и один для приема. О конвертере USB-ART прочитайте по ссылке.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Его можно подключить к персональному компьютеру с помощью преобразователя RS232-TTL или USB-TTL. Сходство между RS232 и UART заключается в том, что им обоим не нужен таймер для передачи и приема данных. Кадр UART состоит из 1 стартового бита, 1 или 2 стоповых битов и бита четности для последовательной передачи данных.

Блок-схема UART

UART состоит из следующих основных компонентов: передатчик и приемник. Передатчик состоит из регистра удержания передачи, регистра сдвига передачи и логики управления. Точно так же приемник состоит из регистра удержания приема, регистра сдвига приемника и логики управления. Обычно и передатчик, и приемник снабжены генератором скорости передачи данных.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Генератор скорости передачи данных формирует скорость, с которой передатчик и приемник должны отправлять и получать данные. Регистр удержания передачи содержит передаваемый байт данных. Регистр сдвига передачи и регистр сдвига приемника сдвигают биты влево или вправо, пока байт данных не будет отправлен или получен.

В дополнение к этому, предусмотрена логика управления чтением или записью, указывающая когда читать и записывать. Генератор скорости передачи данных формирует скорости в диапазоне от 110 бит / с до 230400. В большинстве случаев микроконтроллеры предлагают более высокие скорости передачи, такие как 115200 и 57600 бит / с, но такие устройства как GPS и GSM, используют более низкую скорость в 4800 и 9600 бод.

Как работает UART

Передатчик и приемник используют стартовый бит, стоповый бит и параметры синхронизации для взаимодействия друг с другом. Исходные данные находятся в параллельной форме. Например есть 4-х битные данные, и чтобы преобразовать их в последовательную форму нужен преобразователь из параллельного в последовательный. Обычно для проектирования преобразователей используются D-триггеры.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

D-триггер, также известный как триггер данных, сдвигает один бит со стороны входа на сторону выхода только тогда, когда таймер изменяет переход из высокого состояния в низкое или из низкого состояния в высокое. Точно так же, если надо передать 4 бита данных, понадобится 4 триггера.

Теперь спроектируем преобразователь из параллельного в последовательный и из последовательного в параллельный.

Параллельное преобразование в последовательное

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Последовательное преобразование в параллельное

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Шаг 1: Возьмем 4 триггера. Количество триггеров совпадает с количеством передаваемых битов.

Шаг 2: Сначала отключим параллельную шину. Не включаем пока не будут загружены все биты. Сохраним данные на входе первого триггера. Теперь установим высокий уровень тактовой частоты, это сдвинет младший бит на вход второго триггера и выход первого. Точно так же сдвинем все биты один за другим, сделав тактовый импульс высоким. Преобразователь находится в состоянии удержания до тех пор, пока все биты не будут переданы на выход.

Шаг 3: Теперь каждый триггер содержит один бит последовательных данных. Пока все биты передаются на выход триггера, активируем шину. Это заставит конвертер отправлять все биты за раз.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Формат протокола UART

Начинается связь со стартовым битом «0». Стартовый бит инициирует передачу последовательных данных, а стоповый бит завершает транзакцию данных.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Он также имеет бит четности (четный или нечетный). Бит четности представлен как «0» (четное количество единиц), а бит нечетной четности представлен как «1» (нечетное количество).

Передача данных

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Передатчик отправляет по одному биту за раз. После отправки одного бита отправляется следующий. Таким образом, все биты данных отправляются на приемник с заранее определенной скоростью передачи. При передаче каждого бита будет определенная задержка. Например, чтобы отправить один байт данных со скоростью 9600 бод, каждый бит отправляется с задержкой 108 мкс. Данные добавляются с битом четности. Таким образом для отправки 7 бит требуется 10 бит данных.

Прием данных

Для приема данных используется приёмная линия RxD.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Пример интерфейса UART

Этот пример демонстрирует взаимодействие ESP8266 UART с MAX232. Микросхема MAX232 питается от источника 5 В, и включает в себя генератор емкостного напряжения для управления напряжением 232 уровня. Она поставляется с двумя передатчиками, также называемыми драйвером (Tin, Tout) и приемниками (Rin и Rout).

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Здесь использовался ESP8266 (32-битный микроконтроллер) со встроенным UART. Связь может осуществляться с ESP8266 с использованием AT-команд через преобразователь уровня RS232 в TTL (MAX232). На схеме показано подключение ESP8266 к компьютеру.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Запрашивая действительные AT-команды через ПК, микросхема Wi-Fi ответит подтверждением. Вот шаги для реализации последовательной связи с ПК.

Команды ESP8266

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Далее показан ответ модуля ESP8266.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

UART и USART

UARTUSART
Тайминги генерируются внутри микроконтроллера.Отправляющее устройство сгенерирует тайминг.
Скорость передачи данных низкая.Скорость передачи данных выше из-за внешних таймингов.
Автономный протоколПоддерживает несколько протоколов, таких как LIN, RS-485, IrDA, смарт-карта и т. д.
Перед передачей необходимо знать скорость передачи.Нет необходимости знать скорость передачи заранее.
Подходит для низкоскоростной связиПодходит для высокоскоростной связи.
Сниженный энергетический след.Обеспечивает последовательную связь при высоком энергопотреблении

Основное различие между UART и USART заключается в том, что UART поддерживает только асинхронную связь, тогда как USART поддерживает как синхронную, так и асинхронную. Вот сравнение между USART и UART:

RS232 и UART

Логические уровни представляют собой уровни рабочего напряжения, которые устройство может выдержать для работы в безопасной зоне. Вот уровни напряжения для RS232 и TTL:

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Логика TTL / CMOS

UART работает по TTL логике.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Преимущества и недостатки UART

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Области применения протокола

Последовательный порт отладки использует драйвер UART для печати данных, поступающих извне. Можем использовать этот протокол для отправки и получения команд на встроенные устройства и от них. Также выполняется связь в GPS, модеме GSM / GPRS, чипах Wi-Fi и других модулях работающих с UART. Используется в доступе к мэйнфрейму для подключения разных компьютеров.

Форум по обсуждению материала UART ПРОТОКОЛ: ОПИСАНИЕ РАБОТЫ

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нуженСамодельная полка-кассетница для хранения мелких деталей и других электрических компонентов.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нуженСамодельный 8-канальный PWM MOSFET LED Chaser на микроконтроллере 16F628A.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нуженСхема автоматического контроллера включения освещения в прихожей или во дворе. Основа: CD4001B и BT136-600D.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нуженСхема устройства цветодинамического сопровождения музыки, выполненного на базе драйвера LED индикатора LM3914.

Источник

UART или последовательные интерфейсы

Но для начала надо разобраться в чем разница между последовательными и параллельными интерфейсами. Слово «последовательный» означает, что данные передаются по одному проводу последовательно, бит за битом. А «параллельный» означает, что между устройствами есть шина из нескольких проводов, по которым части сообщения передаются одновременно.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

SyamilAshri at English Wikibooks [GFDL (http://www.gnu.org/copyleft/fdl.html) or CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], from Wikimedia Commons

Преимущества параллельной передачи данных в том, что за один шаг передаётся сразу группа битов. К тому внутри процессора используются параллельная передача, поэтому данные сразу, можно сказать, передаются и принимаются в удобной форме. Но есть и недостатки. Главный заключается в том, что биты по проводам могут приходить не одновременно и требуются дополнительные ухищрения для получения неискаженных сообщений. Это сильно ограничивает максимальную скорость передачи. (прим. Тут ничего удивительного. В силу физических причин биты по разных проводам не могут приходить со 100% одновременностью.)

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

Universal Asynchronous Receiver/Transmitter или просто UART используется с ранних 1960-х и с тех пор претерпевал постоянные изменения. Несмотря на то, что постоянно производятся попытки уничтожить UART, последовательные протоколы этого типа всё ещё представляют важный способ общения между устройствами встраиваемых систем.

UART представляет собой периферийное устройство в процессоре, с помощью которого осуществляется общение между устройствами по последовательному протоколу на небольшие расстояния. Кстати, UART является основой стандарта RS-232 (тот самый D-образный разъем с 9-ю пинами). В языке «С» вывод printf часто может передаваться напрямую через UART. Вообще порты работающие по UART чаще всего называются просто последовательными портами. В самой простой форме UART представляет собой три провода: земля, передача, приём.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Первая проблема UART в том, что нет возможности определить какое устройство ведущее, а какое ведомое (master/slave), так что непонятно к чему цеплять transmit? Обычно, это определяют за нас. Например, кто-то, кто проектирует печатную плату может назвать этот провод как TX и определить, что устройство должно соединяться так, тогда система будет выглядеть следующим образом:

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

В итоге получается вариант, когда процессор и принимает, и передаёт данные. Другой способ конфигурации выглядит вот так:

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Тогда получается вариант, где процессор всегда передаёт (TX) получателю (RX) и наоборот. Какой вариант правильный? Оказывается это решение принимает за нас производитель чипа и готовой платы/устройства. Я видел множество примеров использования обоих вариантов настолько часто, что без прочтения даташита невозможно было определить как именно следует производить конфигурацию устройств. Если бы я имел контроль над наименованием, то закрепил второй вариант, когда TX соединено с RX. На практике чаще всего TX, подсоединённый к TX, приводит к сгоранию чипов (тоже верно и для RX-RX), так что это хороший пример того, что надо читать документацию перед тем как соединять чипы по UART, так как существует несколько способов соединения.

Когда отправитель и получатель располагаются на одной плате, тогда уровень напряжения сигнала при передаче соответствует уровню напряжения питания процессора. К примеру, «1» будет передаваться с напряжением 3.3В, а «0», грубо говоря, с 0В. Это неочень полезно тогда, когда требуется передать сигнал более, чем на несколько дюймов (1 дюйм = 2.54 см), так как начинают появляться искажения сигнала и увеличивается падение напряжения. В итоге, чем дальше расстояние, тем количество ошибок передачи растет и в итоге становится невозможно передать сообщение, так как оно поступает до невозможности искаженным.

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

Начало и конец передачи данных

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

By Rs232_oscilloscope_trace.jpg: Ktnbn derivative work: Samuel Tardieu (Rs232_oscilloscope_trace.jpg) [CC SA 1.0 (http://creativecommons.org/licenses/sa/1.0/)], via Wikimedia Common

Биты передаются с заранее установленной скоростью передачи, которая измеряется в битах в секунду или, иначе, в бодах. Так что 9600 бод эквивалентно 9600 бит/сек. А так как у нас передаётся 10 бит за одно сообщение (старт-бит, данные, стоп-бит), это это значит, что мы можем передать 960 сообщений в секунду.

Так как значение скорости передачи не передаётся вместе с сообщением, то и приёмник и получатель должны заранее установить одинаковое значение скорости передачи/приёма. Конечно, скорости на обеих системах не будут совпадать со 100% точностью (опять же в силу чисто технических причин, так как таймеры на разных системах имеют погрешности), но UART допускает до 5% рассинхронизации таймеров. В этих пределах мы будем получать и принимать верные сообщения.

USARTS

Uart для чего нужен. Смотреть фото Uart для чего нужен. Смотреть картинку Uart для чего нужен. Картинка про Uart для чего нужен. Фото Uart для чего нужен

С помощью такой добавки устраняется необходимость иметь на обоих устройствах точные часы (с рассинхроном не более 5%), а также необходимость и приемнику, и передатчику устанавливать одну и ту же скорость передачи данных. В USART сигнал от CLOCK используется для синхронизации двух устройств. Передающая сторона выдаёт прямоугольные импульсы с частотой, соответствующей скорости передачи данных. А принимающая использует эти импульсы, чтобы правильно принять данные.

Clock-сигнал был довольно обычен несколько десятков лет назад, когда связь осуществлялась с помощью модемов. Этого сигнала, кстати, не было в 9-пиновом разъёме RS-232, которые появились на IBM PC в 1984г.

USART также поддерживает ещё два контрольных сигнала: CTS, RTS. Они используются для контроля передачи данных. Например, у получателя может заполниться буфер, в который поступали данные, тогда он выставляет RTS, сообщая, что надо приостановить передачу и подождать пока появится место в буфере.

RTS и CTS соединяются крест-накрест: RTS-CTS, CTS-RTS (показано на схеме выше). Таким образом, производится как бы «обмен рукопожатиями»: когда включен RTS получателя, выключается CTS отправителя и наоборот.

Следует использовать USART вместо UART, так как это позволяет проводить обмен рукопожатиями и синхронизировать передачу. В коде это будет означать постоянную проверку CTS значений, либо генерацию прерывания CTS-пином.

Кстати, для обратной совместимости USART может быть использован как простой UART с использованием только трёх проводников: RX, TX, Земля.

Где используются UART и USART?

Оба протокола используются в GPS модулях, flash-загрузчик в процессорах ATMEL, старой компьютерной периферии, а также в разнообразном промышленном оборудовании. В общем он все еще очень широко использхуется для обмена информацией между устройствами.

GPS модули поддерживают стандарт NMEA 0183, в котором определена поддержка модулями UART. Конечно, на подходе новый стандарт NMEA 2000, в котором будет использоваться протокол CAN, но пока ещё превалирует использование UART.

Несмотря на то, что ещё можно найти компьютеры с портами RS-232, эти порты уже не найти на ноутбуках и других малогабаритных устройствах. Для обмена информацией с промышленным оборудованием и, к примеру, процессорами ATMEL и устройствами на их основе, как например популярная ARDUINO, часто используются чипы для преобразования последовательного протокола в USB. Благодаря этому UART еще будет жив какое-то время.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *