Чем отличается uart от usart
Перейти к содержимому

Чем отличается uart от usart

  • автор:

USART vs UART

Могут ли pin’ы USART_TX/USART_RT работать как UART_TX/UART_RX? Наоборот явно нет. Ну а если мне нужен UART, а свободные выходы USART, могу ли я их ипользовать и если да, что дополнительно в них необходимо сконфигурировать?

dissident ★★
03.11.20 16:32:17 MSK

Теоретически да, на практике нужно читать документацию твоего девайса, можно там или нет

Harald ★★★★★
( 03.11.20 16:40:02 MSK )
Ответ на: комментарий от Harald 03.11.20 16:40:02 MSK

Зависит от реализации в общем

Harald ★★★★★
( 03.11.20 16:40:33 MSK )

USART — Universal Synchronous/Asynchronous Receiver/Transmitter т.е. в зависимости от настроек должен реализовывать и синхронную и асинхронную приемопередачу.
читай тех.описание реализуется ли необходимый тебе режим/протокол.

pfg ★★★★★
( 03.11.20 16:52:22 MSK )
Последнее исправление: pfg 03.11.20 16:52:48 MSK (всего исправлений: 1)

О какой платформе собственно идет речь? Какой микроконтроллер? На некоторых МК это чуть ли не синонимы…

что дополнительно в них необходимо сконфигурировать

STM32? Дефолт-контроллеры теперь это stm32?

I-Love-Microsoft ★★★★★
( 04.11.20 01:03:25 MSK )
Последнее исправление: I-Love-Microsoft 04.11.20 01:04:14 MSK (всего исправлений: 1)

Ответ на: комментарий от I-Love-Microsoft 04.11.20 01:03:25 MSK

А что есть разница, асинхронный везде есть, а синхронный, про него помнит вообще кто-то

ilovewindows ★★★★★
( 04.11.20 01:12:09 MSK )
Ответ на: комментарий от I-Love-Microsoft 04.11.20 01:03:25 MSK

У него просто мало pin’ов UART (всего два кажется), а USART аж пять. Мне тут напаяли «pin headers» (сам я паяльщик с двумя левыми руками), но больше у меня свободных pin’ов USART. А я хочу их использовать как UART. Что именно в datasheet смотреть?

Вот datasheet, refence manual, pinout:

dissident ★★
( 06.11.20 13:44:31 MSK ) автор топика
Ответ на: комментарий от ilovewindows 04.11.20 01:12:09 MSK

Насколько я понял USART можно использовать как UART, только не знаю, нужны ли для этого какие-нибудь телодвижения.

dissident ★★
( 06.11.20 13:45:11 MSK ) автор топика
Ответ на: комментарий от dissident 06.11.20 13:45:11 MSK

Биты в регистрах управления, что то типа этого делает на stm8 9600 по прерываниям, что есть что, короче надо вкуривать доки

UART2_CR2_REN=1; UART2_CR2_TEN=1; UART2_BRR2 = 0x03; UART2_BRR1 = 0x68; UART2_CR3_STOP=0; UART2_CR1=0; UART2_CR2_RIEN=1;

ну не умею форматировать и не собираюсь

ilovewindows ★★★★★
( 06.11.20 14:08:40 MSK )
Последнее исправление: ilovewindows 06.11.20 14:09:19 MSK (всего исправлений: 1)

Ответ на: комментарий от ilovewindows 06.11.20 14:08:40 MSK

То я сформатирую

UART2_CR2_REN=1; UART2_CR2_TEN=1; UART2_BRR2 = 0x03; UART2_BRR1 = 0x68; UART2_CR3_STOP=0; UART2_CR1=0; UART2_CR2_RIEN=1; 

Проблема только в том, что я ничего не понял. Мне надо UART. А свободные pin’ы с припаянными pin headers есть от USART. Какие манимуляции в коде мне надо сделать, что UЫART pin’ы использовать как UART pin’ы. Вот это UARTn-BRRn соответствующие выставить?

dissident ★★
( 06.11.20 14:41:14 MSK ) автор топика
Последнее исправление: dissident 06.11.20 14:42:28 MSK (всего исправлений: 1)

Ответ на: комментарий от dissident 06.11.20 14:41:14 MSK

Синхронный режим включается битом в регистре и задействуется дополнительная линия ввода-вывода, просто забудь про него пока не понадобится, здесь вроде нормально написано http://dimoon.ru/obuchalka/stm32f1/programmirovanie-stm32-chast-16-usart.html

ilovewindows ★★★★★
( 06.11.20 14:57:51 MSK )
Ответ на: комментарий от ilovewindows 06.11.20 14:57:51 MSK

Спасибо. Не отмечаю, как решенную, поскольку еще толком не взялся, возьмусь во вторник, тогда проверю. Так или иначе огромное спасибо. В Интернете трудно найти информацию как это переключать.

USART

USART – это универсальный синхронный последовательный интерфейс, UART же является его облегчённым вариантом – универсальным асинхронным последовательным интерфейсом. Разница состоит в том, что USART, в отличии от UART, использует, помимо линий данных, так же линию тактового сигнала, с которыми синхронизируются данные. USART микроконтроллера AVR позволяет использовать одновременную двухстороннюю связь, от 5- до 9-битные информационные слова (в случае с 8 битами слово = байт), 1 или 2 стоп-бита, три режима чётности и широкий выбор скоростей передачи данных в бодах. В микроконтроллерах AVR обычно до двух USART интерфейсов, но у некоторых AVR USART отсутствует. Передача данных происходит по одному слову за раз, т.е. AVR переводит переданное пользователем слово в биты на уровне аппаратного обеспечения и передаёт его самостоятельно и наоборот. Пользователь руководит работой USART, записывая и считывая регистры данных, конфигурации и состояния.

Каждый параметр конфигурации имеет соответствующий регистр, который легко настроить с помощью спецификации. Немного сложнее настроить скорость передачи в бодах. Тактовый сигнал для передачи данных генерируется из рабочего такта, и пользователь может выбрать коэффициент от 1 до 4096, на который будет поделен рабочий такт. Полученный сигнал дополнительно делится на 2, 8 или 16, в зависимости от режима. Проблема состоит в том, что все тактовые частоты нельзя поделить так, чтобы получилась стандартная скорость передачи в бодах. Скорость передачи в бодах некоторых тактовых частот микроконтроллера отличается от стандартной на 10%. В спецификациях AVR приведены таблицы, в которых указаны тактовые частоты, стандартные скорости передачи данных в бодах и делитель, необходимый для их получения, а так же возможные ошибки.

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

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

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

Настроить интерфейс USART0 ATmega128, работающий на тактовой частоте 8 MHz , с бодовой скоростью 9600 bps, асинхронно передавать 8-битные слова, 1 стоп-бит и ни одного бита чётности. Отправить знак „X“.

#include  int main()  // Установление скорости передачи в бодах на 9600 bps. Формула: // Делитель = тактовая частота / 16 / скорость в бодах - 1 // UBRR = 8000000 / 16 / 9600 - 1 = ~51 UBRR0H = 0; UBRR0L = 51; // Разрешение передачи UCSR0B = (1  TXEN0); // Настройка асинхронного режима, длина слова 8 бит // 1 стоп-бит, запретить бит чётности. UCSR0C = (1  UCSZ01) 

USART и UART: в чем различие

Поправлял ли вас когда-нибудь коллега, говоря, что это не UART, а USART? Иногда взаимозаменяемость этих терминов может быть вполне допустимой, но во многих случаях будет ошибкой. Давайте же рассмотрим внимательнее, что представляют собой USART и UART, и в чем их основные различия.

Как измерить внутреннее сопротивление литиевого аккумулятора

Большинство разработчиков встраиваемых систем знают, что такое UART: Universal Asynchronous Receiver/Transmitter (универсальный асинхронный приемник/передатчик). Это периферийное устройство микроконтроллера, преобразующее входящие и исходящие байты в последовательный поток данных. Стартовый бит инициирует начало передачи потока битов, а стоповый бит (или два) завершает слово данных. Кроме того, для выявления ошибок при передаче данных UART может вставлять в поток контрольный бит. На Рисунке 1 показан стандартный пример того, что ожидают увидеть инженеры при передаче данных через UART.

USART – Universal Synchronous/Asynchronous Receiver/Transmitter (универсальный синхронный /асинхронный приемник/передатчик) – ‘это периферийное устройство микроконтроллера, преобразующее входящие и исходящие байты в последовательный поток данных. Хм. Определение USART ничем не отличается от UART, за исключением одного добавленного слова «синхронный». Но должны же быть какие-то более значимые различия? Иначе USART был бы известен просто как UART.

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

Напротив, USART может быть настроен для работы в синхронном режиме. В этом режиме отправляющая данные периферия генерирует сигнал синхронизации, который периферией приемной стороны может быть извлечен из потока данных без априорной информации о скорости передачи. Возможен и другой вариант, когда для сигнала синхронизации выделяется отдельная линия. Использование внешнего сигнала синхронизации позволяет USART работать на скоростях до 4 Мбит/с – недостижимых для стандартных UART.

Другое важное отличие USART от UART заключается в количестве поддерживаемых периферийных протоколов. UART прост, и может предложить лишь небольшие вариации базового формата – количество стоповых бит и способ контроля ошибок (по четности или нечетности). USART намного сложнее и способен формировать потоки данных, совместимые со многими стандартными протоколами; IrDA, LIN, Smart Card, Driver Enable для RS-485 и Modbus – лишь несколько из них. При этом USART может, как и UART, работать в асинхронном режиме, что позволяет ему генерировать точно такие же типы последовательных данных, какие показаны на Рисунке 1.

Рисунок 1. Поток последовательных данных UART.

Периферийные устройства USART и UART имеют определенно различные возможности и могут быть полезны в различных ситуациях, поэтому в стандартном микроконтроллере разработчик может обнаружить оба интерфейса. К примеру, возьмем микроконтроллеры семейства STM32, основной областью применения которых являются микромощные приложения. Среди периферийных устройств на кристаллах этих приборов есть как USART, так и UART. USART предназначен для выполнения «тяжелой работы» по последовательному обмену в периоды «большого» расхода энергии. Когда же микроконтроллер находится в спящем режиме или в режиме с пониженным потреблением, используется UART, способный выполнять низкоскоростной обмен, не выходя за рамки допустимого лимита энергии.

Так можно ли говорить, что USART и UART – это одно и тоже? Технически правильный ответ – «нет». USART, как правило, имеет набор функций, расширенный по сравнению с UART, и способен обрабатывать синхронизированные потоки данных на скоростях, во много раз превышающих скорости UART. Действительно, USART может выполнять все функции UART, и, возможно, поэтому во многих приложениях разработчики, имея в руках всю мощь USART, используют их как простые UART, игнорируя преимущества синхронного тактирования. Неудивительно, что очень многие используют эти термины так, будто они являются синонимами.

Перевод: AlexAAN по заказу РадиоЛоцман

Универсальный синхронно-асинхронный приемопередатчик USART

USART (Universal Synchronous Asynchronous Receiver Transmitter) – это модуль последовательного ввода-вывода, который может использоваться для работы с периферийными устройствами, такими как терминалы или персональные компьютеры, модемы, микросхемами ЦАП, АЦП, последовательными EEPROM и т.д.

USART может работать в трех режимах:

  • асинхронный, полный дуплекс;
  • ведущий синхронный, полудуплекс;
  • ведомый синхронный, полудуплекс.

Модуль приемо-передатчика обеспечивает полнодуплексный обмен по последовательному каналу, при этом скорость передачи данных может варьироваться в довольно широких пределах. Длина посылки может составлять от 5 до 9 битов. В модуле присутствует схема контроля и формирования бита четности.

Модуль USART может обнаруживать следующие внештатные ситуации:

  • переполнение;
  • ошибка кадрирования;
  • неверный старт-бит.

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

  • «передача завершена»;
  • «регистр данных передатчика пуст»;
  • «прием завершен».

Интерфейс USART задействует 3 линии ввода-вывода:

  • TxD – передача данных;
  • RxD – прием данных;
  • XCK – тактовый сигнал (используется только в синхронном режиме).

Соединение двух устройств по интерфейсу USART осуществляется по следующей схеме:

Соединение устройств по интерфейсу USART

Кадр – совокупность одного слова данных и сопутствующей информации. Кадр начинается со старт-бита, за которым следует младший бит слова данных. Слово данных может состоять из 5, 6, 7, 8 или 9 битов. После старшего бита слова данных следует один или два стоп-бита. Если включена схема формирования бита четности, он включается между старшим битом слова данных и первым стоп-битом.

Кадрирование USART

Схема контроля четности предполагает два возможных режима работы:

  • контроль четности (even parity) — исключающее ИЛИ всех битов слова данных:Контроль по четности
  • контроль нечетности (odd parity) — исключающее ИЛИ всех битов слова данных с логической единицей:
    Контроль по нечетности
Асинхронный режим работы

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

Скорость передачи данных, как правило, выбирается из стандартного ряда: 300; 600; 1200; 2400; 4800; 9600; 19200; 38400; 57600; 115200; 230400; 460800; 921600 бод.

Реальное значение скорости передачи может отличаться от стандартного ряда, поскольку определяется тактовой частотой микроконтроллера и ограничено разрядностью регистра конфигурации. При этом можно определить величину ошибки:

Ошибка скорости передачи USART

BaudRate — реальная скорость передачи;
BAUD — требуемая скорость передачи из стандартного ряда.

При использовании скоростей, дающих ошибку больше 0,5 %, снижается помехозащищенность линии передачи.

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

Обнаружение спадающего фронта на выводе RxD интерпретируется как возможное появление переднего фронта старт-бита. После этого проверяется значение заданных значений выборок входного сигнала. Если значение хотя бы двух выборок из указанных равно «1», старт-бит считается ложным (помеха), а приемник переходит к ожиданию следующего изменения входного сигнала с «1» в «0». В противном случае считается, что обнаружен старт-бит новой последовательности, с которым синхронизируется внутренний тактовый сигнал приемника. После этого начинает работать схема восстановления данных.

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

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

Синхронный режим работы

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

При работе модуля USART в синхронном режиме состояние вывода RxD считывается по одному из фронтов сигнала XCK, а выдача сигнала вывод TxD — по другому фронту.

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

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