Меню

Что такое настройка уарт

UART-интерфейс: описание, использование

Помните, когда у принтеров, мышей и модемов были толстые кабели с этими огромными неуклюжими разъемами? Те, которые буквально должны были ввинчиваться в компьютер? Мало кто знает, что эти UART-компоненты использовались для связи с вашим компьютером. Почти полностью заменила эти старые кабели и разъемы технология USB. UART-интерфейсы, описание которых найдете в этой статье, не ушли в прошлое. Их используют во многих проектах электроники DIY для подключения GPS, Bluetooth и модулей считывания карт RFID к Pi, Arduino или другим микроконтроллерам.

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

UART означает универсальный асинхронный приемник/передатчик. Это не коммуникационный протокол, такой как SPI и I2C, а физическая схема в микроконтроллере. Основной целью является передача и получение информации. Одно из лучших достижений технологии заключается в том, что он использует только два провода.

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

Введение в коммуникацию UART

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

Когда принимающий UART обнаруживает стартовый бит, он начинает считывать входящие биты с определенной частотой, известной как скорость передачи. Скорость передачи данных является мерой скорости, выраженной в единице измерения, — бит/с. Оба устройства должны работать примерно с одинаковой скоростью передачи. Скорость передачи между передающим и принимающим устройствами может отличаться на 10%.

Оба прибора также должны быть сконфигурированы для передачи и получения той же структуры пакета.

UART — что это и как это работает?

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

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

Технические особенности

Базовая система UART обеспечивает надежную, умеренную скорость, полнодуплексную связь с тремя сигналами: Tx (переданные последовательные данные), Rx (полученные последовательные данные) и земля. В отличие от других протоколов, таких как SPI и I2C, никакого тактового сигнала не требуется, поскольку пользователь предоставляет аппаратному обеспечению UART необходимую информацию о времени.

Типичный сигнал данных в описании UART-интерфейса — это просто напряжение, которое переходит между логическим низким и логическим высоким значением. Приемник может корректно преобразовывать эти логические состояния в цифровые данные только в том случае, если он знает, когда пробовать сигнал. Это можно легко выполнить с использованием отдельного тактового сигнала. Например, передатчик обновляет сигнал данных на каждом фронте фронта, а затем приемник производит выборку данных на каждом заднем фронте.

Читайте также:  Как сбросить айфон до заводских настроек без потери данных

Ключевые термины

Пошаговая процедура

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

Описание интерфейса UART:

Передающий UART принимает данные параллельно от шины данных и добавляет начальный бит, бит четности и стоп-бит(-ы) в кадр данных.

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

Принимающий UART отбрасывает начальный бит, бит четности и стоповый бит из кадра данных, преобразует последовательные данные обратно в параллель, передает их на шину данных на принимающей стороне.

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

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

Добавляет бит четности (если он был выбран) исходящих передач, проверяет четность входящих байтов (если выбрано), отбрасывает бит четности.

Добавляет разделители начала и окончания исходящих, удаляет их из входящих передач.

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

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

Используется только два провода.

Нет сигнала синхронизации.

Имеет бит четности для проверки ошибок.

Структура пакета данных может быть изменена, если для нее настроены обе стороны.

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

Размер кадра данных ограничен максимумом в 9 бит.

Не поддерживает нескольких подчиненных или нескольких мастер-систем.

Кроме того, скорость передачи данных каждого UART-интерфейса Arduino должна находиться в пределах 10% друг от друга.

Источник

Урок 10. Работа с UART интерфейсом

В этом уроке я расскажу про UART интерфейс в микроконтроллерах AVR и про работу с ним в BASCOM-AVR. UART это универсальный асинхронный приёмопередатчик. Сам интерфейс достаточно распространён и имеется практически во всех AVR микроконтроллерах, исключения лишь составляет микроконтроллер Attiny13 и еще некоторые. Передача данных осуществляется по биту в равные промежутки времени, этот промежуток времени задаётся скоростью в бодах, вот например стандартные скорости: 4800 бод, 9600 бод, 19200 бод, 38400 бод и т.д. Следует также учесть, что скорость должна быть одинаковой с обеих сторон подключения. Кстати приёмник и передатчик работают независимо. Подключение UART осуществляется по трём линиям: RXD – приём, TXD – передача и GND – общий (минус). Подключать UART надо, так сказать «наоборот» RXD к TXD, а TXD к RXD как на картинке ниже:

Работа с UART в BASCOM-AVR

В этом окне настроек вы можете указать скорость работы UART, тактовую частоту тактового генератора и посмотреть процент ошибок при выбранной тактовой частоте. Но лучше указывать скорость и тактовую частоту непосредственно в самой программе. Кстати процент ошибок при тактовой частоте в 4МГц очень мал (0.16%), но все, же есть. Если вы хотите чтобы процент ошибок был нулевой надо подобрать такую тактовую частоту, которая будет кратна скорости работы UART. Например, при тактовой частоте 3.6864 МГц и скорости работы UART в 115 200 бод процент ошибок будет нулевым.

Читайте также:  Огнем и мечом настройки

Работа с UART на практике

Ну а теперь попробуем «порулить» UART на практике, сначала соберём простую схему:

Потом наберём простую программку, (используя полученные знания) и откомпилируем её. Вот и она:

А работать эта программка будет так: сначала будет посылать в UART текст, а потом будет ждать приёма данных (в данном случае числа) которые запишутся в переменную a и позже пошлёт текст вместе с переменой. Для тех, кому лень компилировать, в файлах к уроку есть готовая прошивка. Прошиваем микроконтроллер, подключаем выводы микроконтроллера RXD, TXD (подключаем, как я писал выше) и GND к COM порту компьютера (через конвертер уровней) или к USB (USB – UART переходник), открываем на компьютере программу для работы с COM портами, например: Terminal by Bray, Hyper Terminal или Terminal emulator в BASCOM-AVR, указываем COM порт к которому подключились, указываем скорость в бодах, смотрим в окно программы, подаём питание на микроконтроллер и радуемся. Необходимо также учесть, что после прошивки микроконтроллера необходимо установить фьюз биты на нужную нам тактовую частоту генератора в данном случае (для программки выше) на 8МГц. На 8МГц можно использовать внутренний тактовый генератор микроконтроллера и установить фьюз биты вот так (для PonyProg2000):

На фотографии у меня плата для программирования Attiny2313, USB-UART переходник и программатор USBtiny. Ниже вы можете посмотреть видео, как это работает

Файлы для урока (проект в Proteus, исходник, прошивка) прилагаются

Источник

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

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

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

UART на Arduino:

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

Arduino UNO/Piranha UNO

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

Пример:

Piranha ULTRA

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

В 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:

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

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

Пример:

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

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

Читайте также:  Настройка ie8 для госзакупок

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

UART на Raspberry Pi:

Пример работы с последовательным портом на 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 позволяет одновременно передавать и принимать данные, однако не всегда это возможно или нужно. Например, если Вам нужно только получать не критические данные (которые можно проверить следующим пакетом, например расстояние, посылаемое лидаром каждые несколько сотен миллисекунд) от цифрового датчика или любого другого устройства и не нужно ничего передавать, такой метод называется симплексным. Всего различают три метода связи:

Источник