Чем отличается 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 по заказу РадиоЛоцман

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

UART (Universal Asynchronous Receiver/Transmitter) — универсальный асинхронный приёмопередатчик, интерфейс для связи цифровых устройств, предназначенный для передачи данных в последовательной форме.

USART (Universal Synchronous-Asynchronous Receiver/Transmitter) — универсальный синхронно-асинхронный приёмопередатчик — аналогичный UART интерфейс, но дополнительно к возможностям UART, поддерживает режим синхронной передачи данных — с использованием дополнительной линии тактового сигнала.

Оглавление
UART и USART. COM-порт. Часть 1

UART и USART: введение

Интерфейсы UART/USART, несмотря на их солидный возраст, до сих пор находят широкое применение, очень распространены и весьма востребованы. Имеют аппаратную реализацию во многих микроконтроллерах. Например, микроконтроллеры STM32 из семейства STM32F100xx, в зависимости от варианта исполнения, содержат 2 или 3 USART. Синхронная передача используется гораздо реже асинхронной и обычно USART используется в режиме UART.

UART может применяться как для осуществления взаимодействия компонентов внутри одного устройства, так и для подключения устройств между собой. Для внешних подключений сигналы с уровнями логики ТТЛ или КМОП подходят мало из-за низкой помехоустойчивости. Распространённым стандартом физического уровня для UART, который подходит для подключения внешних устройств является RS-232. Этому стандарту, в частности, соответствует последовательный порт (COM-порт) компьютера. Так что, микроконтроллер с помощью схемы преобразования уровней может обмениваться информацией с COM-портом компьютера, но об этом чуть позже.

Варианты подключения UART

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

Выход обозначают TD или TX (transmitted data), вход — RD или RX (received data). Для подключения двух устройств выход одного подключают ко входу другого и вход первого — к выходу второго.

Связь двух UART

Рис. %img:uc1

Возможен вариант использования UART для полудуплексной двунаправленной связи по одному проводу. В этом случае выводы TX и RX каждого устройства соединяют вместе. Всё время, пока устройства не передаёт данных, оно держит выход в отключённом состоянии (переводит в Z-состояние, состояние с высоким сопротивлением; можно использовать режим работы с открытым стоком — во время паузы в передаче на выходе UART формируется лог. 1, что равносильно переходу в Z-состояние). Устройство может иметь аппаратную поддержку полудуплексного обмена данными, тогда требуется лишь выбрать нужный режим работы. Если аппаратной поддержки нет, полудуплексный режим легко реализуется программно. Для этого нужно отключать передатчик, когда устройство не передаёт данных, чтобы освободить линию для осуществления передачи другими устройствами и отключать приёмник во время работы своего передатчика, чтобы не принимать собственную передачу (либо программно отбрасывать данные, передаваемые своим передатчиком).

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

Однопроводная сеть UART

Рис. %img:un

Как видим, объединять устройства с помощью UART очень просто. Для двунаправленного подключения требуются только три проводника (с учётом общего провода), а для однонаправленного или двунаправленного полудуплексного — всего два.

Формат передачи данных UART

В отсутствии передачи на выходе UART присутствует уровень лог. 1.

Данные передаются в виде посылок (фреймов), каждая из которых состоит из стартового бита, битов данных и одного или нескольких стоп-битов. Длительность всех битов одинакова, связана со скоростью передачи соотношением T=1/S. Существует ряд стандартных скоростей передачи: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 бод. Если внутри одного устройства связь можно осуществлять на произвольной скорости, то для связи с внешними устройствами следует придерживаться стандартных величин.

Формат передачи данных UART

Рис. %img:uf

Посылка начинается со стартового бита, он всегда имеет значение лог. 0. После стартового бита передаются биты данных. Количество битов данных может составлять 5-9 в зависимости от настроек UART. Обычно передаётся 8 бит данных или 9 бит (8 бит собственно данных и один бит чётности). Завершается посылка стоп-битами, их значение — всегда лог. 1, количество обычно составляет 1, 1.5 или 2. Под количеством стоп-битов понимается длительность соответствующего им единичного импульса по отношению к длительности битов данных и старт-бита. Этим объясняется возможность выражать количество битов дробным числом. Сразу же после стоп-битов может начинаться передача следующей посылки или может быть пауза произвольной длительности, во время которой на выходе также формируется уровень лог. 1.

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

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

Обнаружив начало старт-бита, приёмник ждёт в течение половины длительности передачи бита, после чего начинает считывать сигнал на входе с частотой, равной скорости передачи данных. В идеальном случае момент каждого считывания приходится на середину принимаемого бита. В реальности генераторы тактовых импульсов передатчика и приёмника имеют рассогласование по частоте, в результате каждое новое считывание всё больше смещается относительно середины очередного бита. Важно, чтобы за время передачи одной посылки, смещение не превысило половины длительности бита, а с учётом переходных процессов — смещению лучше не превышать четвёртой части длительности бита. Иначе вместо считывания бита произойдёт считывание соседнего бита (или считывание линии во время переходного процесса) и посылка будет принята неверно.

Согласование скоростей передатчика и приёмника UART

Рис. %img:ug

Управление потоком данных

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

Интерфейс UART предусматривает возможность использования дополнительных сигналов (CTS, RTS) для аппаратного управления потоком данных. Аппаратное управление может использоваться некоторыми медленными устройствами или устройствами с простой схемной реализацией. Однако оно потребует двух дополнительных линий для подключения устройства.

Аппаратное управление потоком данных UART

Рис. %img:ufc

Если в UART включён контроль состояния CTS, передатчик перед отправкой очередного фрейма проверяет вход CTS. Если на CTS низкий уровень, передача происходит, иначе — нет. Если сигнал CTS будет установлен во время передачи посылки (фрейма), текущая передача всё равно будет завершена перед остановкой.

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

COM-порт (интерфейс стандарта RS-232)

COM-порт — интерфейс компьютера, соответствующий стандарту RS-232. Раньше компьютеры, как правило, имели два COM-порта. Затем COM-порт начал вытесняться USB-интерфейсом и сейчас у компьютера может быть всего один COM-порт или вообще ни одного. Если в компьютере отсутствует COM-порт, то можно использовать переходник USB-COM.

Хотя он и считается устаревшим для использования в компьютерах, тем не менее, интерфейс стандарта RS-232 ещё не утратил полностью своего значения и существует оборудование, где он используется. Интерфейс не обеспечивает высокой скорости передачи данных (максимум 115200 бод), но зато прост и дёшев в реализации, надёжен.

RS-232 является стандартом физического уровня для интерфейса UART. Он определяет набор используемых сигнальных линий и уровни для сигналов. Используемые уровни сильно отличаются от традиционных ТТЛ или КМОП-уровней. Во-первых, используются двухполярные сигналы, во-вторых — сигнал положительной полярности соответствует логическому нулю. Для согласования уровней сигналов интерфейса RS-232 и остальной части схемы на обычной логике, используются специализированные микросхемы для преобразования уровней.

Для сигналов используются следующие уровни.

Для драйвера (выход):
+5..+15 В — лог. 0 (SPACE);
-5..-15 В — лог. 1 (MARK).

Вход должен иметь сопротивление в пределах 3..7 кОм и должен быть рассчитан на сигналы:
+3..+25 В — лог. 0;
-3..-25 В — лог. 1.

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

Сигналы интерфейса RS-232

COM RS-232 DB-9P DB-25P I/O Назначение
PG AA 5 1 Protective Ground — защитная земля, соединяется с корпусом прибора.
SG AB 5 7 Signal Ground — общий провод для сигнальных линий.
TD BA 3 2 O Transmitted data — передача данных из порта.
RD BB 2 3 I Received Data — приём данных в порт.
RTS CA 7 4 O Request to send — запрос COM-порта на передачу данных (сигнал COM-порта о готовности принимать данные).
CTS CB 8 5 I Clear to send — вход для разрешения COM-порту передавать данные.
DSR CC 6 6 I Data set ready — вход сигнала готовности от подключённого к порту устройства.
DTR CD 4 20 O Data terminal ready — сигнал готовности COM-порта к обмену данными.
CD CF 1 8 I Carrier Detected — сигнал обнаружения несущей (от модема).
RI CE 9 22 I Ring indicator — сигнал от модема о получении звонка.

В таблице указаны обозначения для сигналов принятые для COM-порта, обозначения в соответствии с RS-232, номера выводов в разъёмах и краткое описание назначения сигналов.

Для подключения к интерфейсу используются 25-контактные или 9-контактные разъёмы (DB25, DB9). Первоначально применялись 25-контактные разъёмы, но многие сигналы не использовались устройствами. В связи с этим произошёл переход к 9-контактным разъёмам. В оконечном оборудовании используются разъёмы типа вилка (Pin): DB-9P. В аппаратуре передачи данных (модемы, например) используются разъёмы типа розетка (Socket): DB-9S.

Гальваническая развязка для COM-порта

Схема гальванической развязки для интерфейса RS-232

Рис. %img:rss

Для преобразования сигналов между уровнями ТТЛ/КМОП логики и уровнями RS-232 существуют специализированные микросхемы.

Также есть варианты очень простых схем на оптронах, которые обеспечивают не только согласование уровней, но и гальваническую развязку между подключаемыми устройствами — очень ценное свойство схемы. Выше приведён пример такой схемы. С указанными номиналами элементов обеспечивает скорость передачи до 2400 бод. Уменьшая сопротивление резистора R5, можно увеличить быстродействие (скорость 9600 бод достижима практически на любых оптронах).

Аппаратный контроль потоком данных по линиям CTS/RTS здесь не используется. Питание схемы со стороны COM-порта осуществляется от сигнальных линий самого COM-порта, но для её работы требуется программная конфигурация COM-порта: на выходе RTS должен быть установлен уровень лог. 1 (-5..-15 В), а на выходе DTR — уровень лог. 0 (+5..+15 В). Это существенный недостаток схемы, требующий учёта в программе для компьютера, обычные программы-терминалы не будут правильно работать. Недостаток устраним, но тогда схема станет менее простой.

Работает предложенная схема гальванической развязки для COM-порта следующим образом. Когда на TD выходе UART установлен уровень лог. 0 (обычные КМОП-уровни для микроконтроллеров), ток через светодиод оптрона U1 отсутствует, транзистор оптрона заперт, за счёт резистора R1 от выхода DTR(+) COM-порта на входе RD устанавливается положительный относительно общего провода потенциал, что соответствует уровню лог. 0 для RS-232. Если на выходе TD устройства UART установлена лог. 1, транзистор оптрона U1 открывается и RD вход COM-порта подключается к выходу RTS (-), за счёт чего на входе RD формируется отрицательный потенциал (лог. 1 для RS-232).

Оптрон U2 отвечает за передачу данных в обратном направлении. Когда на TD выходе COM-порта установлен уровень лог. 0 (положительный потенциал), транзистор оптрона U2 открывается, формируя лог. 0 на входе UART. Если на выходе TD COM-порта устанавливается лог. 1 (отрицательный потенциал), транзистор оптрона U2 закрывается и за счёт подтягивающего к высокому уровню резистора на входе RD устройства UART формируется логическая 1.

Если разъём P1 отключён от COM-порта, или компьютер выключен, то это будет восприниматься как «линия свободна» (отсутствие передачи данных), на вход USART микроконтроллера при этом будет подаваться лог. 1. Допускается подключение разъёма P1 к COM-порту работающего компьютера, это не приведёт к повреждению оборудования, но в некоторых случаях, в момент подключения, компьютер может получить какое-то количество случайных байтов.

D1, D2 — защищают светодиоды оптронов от обратного напряжения.
R1 — формирует смещение на входе RD COM-порта при закрытом транзисторе оптрона U1.
R2, R3 — ограничивают ток через светодиоды оптронов.
R4 — защищает вывод микроконтроллера от неправильного подключения или неправильного конфигурирования его режима работы, можно заменить перемычкой.
R5 — внешний подтягивающий резистор. Сопротивление внутреннего подтягивающего резистора микроконтроллера довольно велико и подключение внешнего улучшает скоростные характеристики канала передачи от COM-порта к UART микроконтроллера (уменьшает время переключения из состояния лог. 0 в лог. 1 на входе RD устройства UART). Может быть исключён.

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

USART в STM32 (STM32F100xx)

USART в микроконтроллерах STM32 предоставляет гибкие средства для полнодуплексного обмена данными с внешними устройствами в последовательном формате с возможностью поддержки сигналов CTS/RTS; поддерживает полудуплексный обмен по однопроводной линии; может работать в широком диапазоне скоростей передачи. В мультибуферном режиме DMA достигается высокая скорость передачи данных, максимальное значение составляет 3 Мбит/с. Также поддерживается однонаправленная передача в синхронном режиме; мультипроцессорная связь; LIN (local interconnection network) — сеть для локальной связи; smartcard протокол; инфракрасный протокол в соответствии со спецификацией IrDA (infrared data association) SIR ENDEC.

  • Асинхронная полнодуплексная связь.
  • Асинхронная однопроводная полудуплексная связь.
  • Настраиваемый метод оверсэмплинга (супердискретизации) даёт возможность выбора между скоростью передачи и допустимым отклонением скорости.
  • Передатчик и приёмник используют общую программируемую скорость передачи, которая может настраиваться в широких пределах; максимальное значение достигает 3 Мбит/с при 8-кратном оверсэмплинге.
  • Программируемая длина слова (8 или 9 бит).
  • Настраиваемое количество стоп-битов (1 или 2).
  • В LIN режиме поддерживается отправка и обнаружение приёмником Break-посылки (генерируется 13-битная и детектируется 10/11 битная).
  • Имеется выход тактового сигнала для синхронной передачи.
  • IrDA SIR кодек для инфракрасной связи (поддерживается длительность бита 3/16 в нормальном режиме).
  • Интерфейс Smartcard поддерживает асинхронный протокол смарт-карт как определено в стандарте ISO 7816-3; используется 0.5, 1.5 стоп-битов в операциях со смарт-картой.
  • Конфигурируемая мультибуферная связь с использованием DMA (direct memory access).
  • Флаги, устанавливаемые при обнаружении событий во время обмена данными (приёмный буфер заполнен; буфер для передачи пуст; передача завершена).
  • Контроль чётности (можно настроить передатчик на формирование бита чётности и приёмник на контроль бита чётности).
  • Четыре флага, устанавливаемые при обнаружении ошибок (ошибка переполнения; обнаружен шум в принимаемом сигнале; ошибка фрейма; ошибка чётности).
  • 10 источников прерывания USART, связанных с флагами регистра состояния SR (изменение состояния CTS; обнаружение посылки LIN Break; регистр данных передатчика пуст; передача завершена; регистр данных приёмника заполнен; обнаружение события «линия свободна» (Idle line); ошибка переполнения; ошибка фрейма; обнаружение шума; ошибка чётности).
  • Мультипроцессорная связь (переход в тихий режим, если не произошло сопоставление адреса).
  • Пробуждение из тихого режима при обнаружении свободной линии (Idle line) или при обнаружении адресной метки.
  • Два режима пробуждения приёмника — по адресному биту (9-й, старший бит) или при обнаружении, что линия свободна.

Функциональная схема USART в микроконтроллерах STM32.

Функциональная схема USART в микроконтроллерах STM32

Рис. %img:ust

SW: Single Wire — вывод для однопроводного подключения устройств.

В обычном двунаправленном полнодуплексном режиме требуется как минимум два вывода для подключения USART: RX (Receive Data In) и TX (Transmit Data Out).

RX: вход для последовательных данных. Для извлечения данных используется техника оверсэмплинга (супердискретизации), когда чтение входа осуществляется с частотой, в несколько раз превышающей скорость передачи данных (в данном случае в 8 или 16 раз). Сопоставление считанной последовательности с предопределёнными шаблонами позволяет выделить фронт сигнала, определить значение принимаемого бита и обнаружить шум при его наличии в принимаемом сигнале.

TX: выход для передачи данных в последовательной форме. Когда передатчик отключён, вывод возвращается в состояние, заданное конфигурацией порта ввода-вывода. Когда передатчик включён, но никаких данных не передаётся, на выходе TX устанавливается высокий уровень (паузе в передаче данных, или свободной линии соответствует наличие лог. 1 в линии). В однопроводном режиме или режиме смарт-карты этот вывод используется как для передачи, так и для приёма данных (поэтому на схеме он обозначен как TX/SW).

SCLK: выход для тактового сигнала при синхронной передаче данных, соответствует мастер-режиму SPI. Тактовые импульсы не формируются во время старт и стоп-битов. Наличие импульса во время передачи последнего бита данных определяется программно. Параллельно может происходить синхронный приём данных на входе RX. Фаза и полярность импульсов задаются программно. В режиме смарт-карты вывод SCLK может формировать тактовый сигнал для смарт-карты.

IrDA_RDI: Receive Data Input — вход для получаемых данных в IrDA режиме.

IrDA_TDO: Transmit Data Output — выход для передаваемых данных в IrDA режиме.

nCTS: Clear To Send — высокий уровень на входе приостанавливает передачу данных после завершения текущей посылки.

nRTS: Request to send — низкий уровень на этом выходе сигнализирует о готовности USART принимать данные.

Программно приём и передача данных через интерфейс USART осуществляется путём чтения и записи регистра данных DR. Записываемые в регистр данные помещаются в регистр передаваемых данных TDR, а затем, когда завершится текущая передача, копируются в передающий сдвигающий * регистр. Если в данный момент ничего не передаётся, данные сразу помещаются в сдвигающий регистр. Сдвигающий регистр преобразует данные из параллельной формы представления в последовательную: схема управления с заданной тактовой частотой сдвигает содержимое регистра на 1 бит вправо. Сдвигаемые биты, начиная с младшего, подаются на выход USART. Кроме того, схема управления формирует стартовый бит, бит чётности (если используется) и стоп-биты.
* Сдвигающий регистр также называют регистром сдвига или сдвиговым регистром.

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

Принимаемые данные попадают в приёмный сдвигающий регистр. Когда приём фрейма завершается, данные из приёмного сдвигающего регистра помещаются в регистр принимаемых данных (RDR), откуда они могут быть прочитаны путём чтения регистра данных DR. Такое устройство регистра данных позволяет одновременно передавать и получать данные.

Далее смотрите подробное описание всех регистров устройства USART в микроконтроллерах STM32: «Регистры USART в микроконтроллерах STM32F100xx».

А также несколько примеров использования USART для передачи данных: «UART и USART. COM-порт. Часть 2».

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

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