Uart cts что это

от admin

Русские Блоги

Управление последовательным потоком UART (управление потоком)

Как правило, при последовательной связи на некоторых компьютерах верхнего уровня мы увидим параметры RTS / CTS, DTR / DSR и XON / XOFF.Это параметр для управления потоком, который обычно применяется к интерфейсу RS232, который является данными от модема. Общение

1. Роль управления потоками

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

2. Принцип работы

Когда буфер данных на принимающей стороне заполнен и данные не могут быть обработаны, он отправит сигнал «больше не принимает», а отправляющая сторона прекратит отправку, пока отправляющая сторона не получит сигнал «можно продолжить отправку» перед отправкой данных. В компьютерах обычно используются два типа управления потоком: аппаратное управление потоком (RTS / CTS, DTR / DSR и т. Д.) И программное управление потоком (XON / XOFF).

Три, определение контакта RS232

RS-232 изначально был разработан для подключения к модему для передачи, поэтому значение его контактов обычно связано с передачей модема. Оборудование RS-232 можно разделить на два типа: оконечное оборудование данных (DTE, оконечное оборудование данных, например, ПК) и оборудование передачи данных (DCE, оборудование передачи данных). Эта классификация определяет разные линии для передачи и приема. сигнал. Вообще говоря, компьютеры и оконечное оборудование имеют разъемы DTE, а модемы и принтеры — разъемы DCE. Но это не всегда строго правильно.Чтобы проверить соединение с разветвителем проводки или методом проб и ошибок определить, исправен ли кабель, часто необходимо обратиться к соответствующей документации.

RS-232 в настоящее время имеет разъемы типа DB-25 и DB-9, а интерфейсы типа DB-9 используются чаще.

Назначение контактов типа DB-9 в RS-232:

Описание его сигнального контакта:

Положение стопы Стенография значимость сигнал Описание
Pin1 DCD Data Carrier Detect Обнаружение носителя данных (DCD) Модем сообщает компьютеру об обнаружении носителя.
Pin2 RXD Receiver Получение данных (RD, RXD) Получите данные.
Pin3 TXD Transmit Отправить данные (TD, TXD) отправить данные.
Pin4 DTR Data Terminal Ready Подготовка терминала данных (DTR) Компьютер сообщает модему, что он может передавать.
Pin5 GND Ground Общие основания Провод заземления.
Pin6 DSR Data Set Ready Данные готовы (DSR) Модем сообщает компьютеру, что все готово.
Pin7 RTS Request To Send Запрос на отправку (RTS) Компьютер просит модем передать данные.
Pin8 CTS Clear To Send Очистить для отправки (CTS) Модем сообщает компьютеру, что он может отправлять данные.
Pin9 RI Ring Indicator Индикация звонка (RI) Модем сообщает компьютеру о входящем звонке.

4. Аппаратное управление потоком (в основном RTS / CTS)

RTS / CTS был первоначально разработан для полудуплексной совместной связи между телетайпом и модемом, и только один модем может отправлять данные одновременно. Терминал должен отправить запрос на отправку сигнала, а затем ждать, пока модем не ответит разрешением на отправку. Хотя в RTS / CTS квитирование осуществляется аппаратно, у него есть свои преимущества.

1. Стандартный метод подключения RS232

Когда оборудование на стороне A готово, сигнал DTR (оборудование для передачи данных готово) будет отправлен на RI (вызывной сигнал) и DSR (оборудование связи готово) на стороне B. Таким образом, пока A готов (DTR), B будет генерировать вызов (RI) и быть готовым (DSR).

Обратите внимание, что RTS (запрос на отправку), CTS (разрешена отправка) и CD (обнаружение несущей) на стороне B соединены вместе, что означает, что как только A запрашивает отправку (RTS), он будет немедленно разрешен (CTS) и сделает обнаружение B Несущий сигнал (CD). TXD терминала A соединен с RXD терминала B, и A отправляет, а B принимает.

2. Упрощенный способ подключения RS232.

Исходные RTS и CTS используются, чтобы спросить и ответить, можно ли передавать данные. Но в этом режиме соединения он просто сообщает другой стороне, могут ли они общаться. В настоящее время для управления потоком данных могут использоваться как RTS, так и DTR.

DTR (готовность устройства данных) на стороне A. Когда сторона B готова, DTR (готовность устройства данных) на стороне B отправляет сигнал DSR (устройство связи готово) на стороне A. Затем вы можете контролировать связь через RTS (запрос на отправку) и DTR (разрешить отправку).

3. Дальнейшее упрощение (то есть на основе RTS / CTS)

Как видно из вышеупомянутого процесса, аппаратное управление потоком в основном контролируется RTS / CTS и DTR / DSR, но люди ленивы и ленивы, поэтому теперь часто они просто используют RTS / CTS, чтобы сообщить другой стороне, могут ли они общаться. , И пропустить определение состояния готовности DTR / DSR напрямую

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

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

Пять, программное управление потоком

Программный контроль потока(Программное управление потоком) — это метод управления потоком в канале компьютерных данных, особенно подходящий для последовательной связи RS-232; он использует специальные символы для передачи внутриполосной сигнализации, а также вызываются специальные кодированные символы.XOFFпротив XON(Соответственно расшифровываются "передача выключена" и "передача включена"). Поэтому его также называют «управление потоком XON / XOFF»;

Используйте набор символов ASCII, XOFF — обычно байтовое значение 19 (десятичное), XON — байтовое значение 17

Кодовое имя смысл ASCII Десятичный Шестнадцатеричный
XOFF Приостановить передачу DC3 19 13
XON Возобновить передачу DC1 17 11

Стоит отметить, что получатель отправляет отправителю сигналы XON / XOFF, чтобы контролировать, когда отправитель отправляет данные.Эти сигналы противоположны направлению передачи отправленных данных.

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

XON / XOFF — это внутриполосный метод, который работает между терминалами, но оба конца должны поддерживать этот протокол, и при его внезапном запуске может возникнуть путаница; XON / XOFF может работать на 3-проводных интерфейсах.

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

XON / XOFF, как правило, не рекомендуются. Рекомендуется заменить их потоком управления RTS / CTS. Потому что, если вы передаете двоичные данные, в отправляемых вами данных могут быть двоичные значения, соответствующие XON и XOFF, что может привести к неправильной работе. Это дефект программного управления потоком, и аппаратное управление потоком не будет иметь этой проблемы; конечно, вы Вы также можете избежать XON и XOFF

Шесть, управление нижним уровнем UART

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

Uart cts что это

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

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

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".

Микроконтроллеры Megawin серии MG32F02: модули UART и отладка кода в ОЗУ

Мы продолжаем цикл статей по микроконтроллерам компании Megawin на ядре Cortex-M0. В предыдущей статье были рассмотрены: методика разработки и прошивки на основе gcc и OpenOCD, контроллер flash-памяти, работа с GPIO. В этой статье будут рассмотрены: периферийные модули UART, обработчики прерываний UART, метод отладки кода в ОЗУ МК с базовой частью инициализации во flash-памяти, механизм системных вызовов, тактирование МК от различных источников.

Модули UART МК MG32F02

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

Микроконтроллеры серии MG32F02 включают два варианта модулей UART: расширенный (URT0-URT2) и базовый (URT4-URT7). В МК MG32F02A032 имеются только два расширенных модуля URT0 и URT1. Строго говоря, расширенный вариант корректнее называть USART, т.е. универсальный синхронный-асинхронный приёмопередатчик, поскольку он поддерживает множество режимов работы, в том числе с синхронизацией передачи данных.

Все модули UART имеют следующие особенности:

полный дуплексный режим работы,

скорость обмена до 6 Мбит/с,

длина символа 7 или 8 бит,

передискретизация (oversampling) при приёме с коэффициентом 4-32,

поддержка генерации и проверки бита четности/нечетности,

отдельное разрешение работы приемника и передатчика,

возможность перемены местами выводов RX и TX,

возможность отдельного изменения полярности сигналов RX и TX.

В режиме SPI (только для расширенного варианта UART) максимальная частота синхросигнала URTx_CLK составляет 16 МГц для MG32F02A032, 18 МГц для MG32F02A128/A064 и MG32F02U128/U064.

Расширенный вариант (модули URT0-URT2)

Функциональные возможности

Расширенный вариант UART (модули URT0-URT2) имеет следующие особенности:

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

режимы SPI master и slave, SmartCard, LIN, мультипроцессорный,

настраиваемый порядок бит в символе (MSB или LSB),

настраиваемая длительность стоп-бита 0.5, 1, 1.5 или 2,

детектирование сигнала RX по одной или трем выборкам,

таймер для определения таймаута событий Idle/RX/Break/Calibration,

«вход» и «выход» из режима «mute» в мультипроцессорном режиме работы,

размер буфера данных 4 байта с доступом ко всему буферу как 32-битному слову,

поддержка автоматического определения скорости обмена,

мультипроцессорный режим (с адресацией) в роди ведущего или ведомого,

поддержка формата IrDA,

аппаратный контроль потока на основе сигналов RTS и CTS,

формирование сигнала управления передачей для двунаправленного интерфейса (например, RS-485),

аппаратное определение ошибки при приеме и передаче в режиме SmartCard,

прием и передача данных на основе DMA,

частичная аппаратная поддержка программного контроля потока XON/XOFF.

Отметим, что расширенные модули UART в МК MG32F02A032 отличаются от остальных моделей схемой тактирования.

Функциональная схема расширенного варианта UART МК MG32F02A128/U128/A064/U064 приведена на рисунке.

Функциональная схема расширенного UART

Функциональная схема расширенного UART

Модуль использует следующие внешние сигналы:

URTx_CLK — тактовый сигнал для синхронного UART или режима SPI,

URTx_RX — принимаемые данные RX для режима UART или MISO для режима SPI master,

URTx_TX — передаваемые данные TX для режима UART или MOSI для режима SPI master,

URTx_NSS — входящий/исходящий сигнал выбора кристалла (chip select) для режима SPI slave/master соответственно,

URTx_CTS — входящий сигнал аппаратного управления потоком UART CTS,

URTx_RTS — исходящий сигнал аппаратного управления потоком UART RTS,

URTx_DE — сигнал «передача» для внешнего драйвера двунаправленного интерфейса,

URTx_BRO — выход тактового генератора,

URTx_TMO — выход интервального таймера таймаута TMO.

Модуль имеет основной узел управления тактированием Clock Control, принимающий исходный тактовый сигнал с делителя частоты Baud-Rate Generator. Блок Mode Control управляет режимом работы модуля. Блок Data Control управляет приемом и передачей данных и общей буферизацией. Блок Receiver Control обеспечивает физический уровень приема данных, детектирование ошибок, а также декодирование сигнала в режиме IrDA. Блок Transmitter Control обеспечивает физический уровень передачи данных, а также кодирование сигнала в режиме IrDA. Прием и передача данных будут рассмотрены далее.

Блок Event Detector определяет различные состояния модуля, включая возможные ошибки при приеме и передаче данных, а блок Interrupt Control формирует на их основе общий сигнал прерывания INT_URTx. Оба модуля будут рассмотрен далее. 16-разрядный интервальный таймер TMO предназначен для выдерживания временных интервалов и обнаружения таймаутов согласно выбранному режиму работы и настройкам. Таймер TMO может использоваться для других задач отдельно от модуля UART, даже, если модуль UART выключен.

Блок Hardware Flow Control обеспечивает аппаратный контроль потока на основе сигналов RTS/CTS. Контроль потока на основе символов XON/XOFF может быть реализован только программно, аппаратно имеется лишь возможность приостановить отправку данных (бит URTx_TX_HALT регистра URTx_CR2 ).

Блок Drive Enable Timing Control предназначены для управления внешним драйвером двунаправленного интерфейса (например, RS-485). Блок SPI NSS Timing Control обеспечивает управление сигналом NSS в режиме SPI. Блок Multi-Processor Control отвечает за мультипроцессорный режим, а блок Baud-Rate Calibration за калибровку частоты работы модуля UART.

Для включения модуля UART необходимо:

включить тактирование модуля URTx в регистре CSC_APB0 установкой соответствующего бита CSC_URTx_EN (предварительно нужно разблокировать возможность записи через регистр CSC_KEY ),

установить бит URTx_EN в регистре URTx_CR0 .

Схема управления тактированием

Схема управления тактированием Clock Control МК MG32F02A128/U128/A064/U064 приведена на следующем рисунке.

Схема управления тактированием расширенного UART

Схема управления тактированием расширенного UART

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

сигнал CK_URTx_PR с выхода подсистемы тактирования CSC,

общесистемный сигнал CK_LS тактирования периферии,

выходной сигнал таймера TM00 TM00_TRGO,

выходной сигнал модуля NCO (Numerically Controlled Oscillator) NCO_P0 (кроме МК MG32F02A032).

Сигнал CK_URTx_PR формируется из сигнала CK_APB или CK_AHB в зависимости от значения бита CSC_URTx_CKS регистра CSC_CKS1 . Сигнал CK_LS формируется из сигналов CK_ILRCO, CK_XOSC или CK_EXT в зависимости от значения поля CSC_LS_SEL регистра CSC_CR0 (см. первую статью цикла).

Выбранный тактовый сигнал (обозначен на схеме как CK_URTx) поступает на блок BR (Baud-Rate Generator), состоящий из 6-битного предделителя частоты (4-битного для МК MG32F02A032) и 8-битного счетчика. Предделитель формирует сигнал URTx_CKO, используемый для тактирования счетчика, а также как внешний тактовый сигнал синхронного обмена. В регистре URTx_RLR в поле URTx_PSR задается коэффициент деления предделителя Kp, а в поле URTx_RLR — коэффициент деления счетчика Kc. Реальные значения коэффициентов будут на единицу больше. 8-битный счетчик CNT формирует внутренний сигнал CK_URTx_INT, который далее используется для тактирования передатчика и приемника.

Тактирование передатчика и приемника может осуществляться также от выходных сигналов таймеров TM01_TRGO или TM10_TRGO, и от внешнего синхросигнала URTx_ECK. Выбор источника для сигнала тактирования передатчика CK_URTx_TX определяется полем URTx_TX_CKS , а источника для сигнала тактирования приемника CK_URTx_RX — полем URTx_RX_CKS регистра URTx_CLK . Для приемника сигнал CK_URTx_RX будет определять частоту передискретизации (oversampling), с которой берутся отсчеты сигнала RX для выявления шума и предотвращения ложных срабатываний. Конечный сигнал тактирования передатчика со скоростью обмена Btx формируется после дополнительного делителя, коэффициент которого Ktxos определяется 5-битным полем URTx_TXOS_NUM регистра URTx_CR1 . Конечный сигнал тактирования приемника со скоростью обмена Brx формируется после дополнительного делителя, коэффициент которого Krxos определяется 5-битным полем URTx_RXOS_NUM регистра URTx_CR1 .

Итоговая скорость обмена Btx для передатчика будет определяться как

а скорость обмена для приемника Brx как

где Furt — частота сигнала CK_URTx.

Блок BR может использоваться отдельно от модуля UART как счетчик общего назначения, даже, если модуль UART выключен. При этом предделитель и счетчик могут работать в объединенном режиме как один счетчик (бит URTx_BR_MDS регистра URTx_CLK нужно установить в 1). В любом случае, если блок BR применяется, должен быть установлен бит URTx_BR_EN в регистре URTx_CLK .

События и прерывания модуля

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

Общие состояния ошибки

ERRF

Ошибка бита четности/нечетности

Receive Data Overrun

Переполнение приемного буфера

Receive Noised Character

Детектирован шум при чтении бита символа

Ошибка формата кадра (стоп-бита) для режимов SmartCard и LIN

Transmit data underrun

Нет данных для отправки в режиме SPI

Состояния ошибки при работе таймера TMO

ERRF

Таймаут приема символа при установленном бите URTx_RXTMO_EN

Таймаут простоя линии при установленном бите URTx_IDTMO_EN

Превышено время состояния «Break» при установленном бите URTx_BKTMO_EN

Таймаут калибровки при установленном бите URTx_CALTMO_EN

Общие события

UGF

UART general event

Slave Address Match

Принят кадр с собственным адресом

Baud-Rate Timer Timeout

Таймаут тактового таймера BR (Baud-Rate Timer)

Timeout Timer Timeout

Таймаут интервального таймера TMO (Timeout Timer)

Процесс калибровки завершен

Статус линии

LSF

Break Condition Detect

Обнаружено состояние «Break» (принята длинная последовательность нулевых битов)

Idle Line Detect

Выдержан «Idle» интервал между символами

Состояние сигнала CTS изменилось

Состояние сигнала NSS изменилось на неактивное в режиме SPI slave

Receive Data

RXF

Приняты новые данные, доступные в регистре URTx_RDAT

Transmit Data

TXF

Данные из регистра URTx_TDAT переданы на отправку

Transfer Complete

TCF

Отправлены все данные, включая теневой буфер

На следующем рисунке показана схема формирования прерывания INT_URTx Interrupt Control при возникновении различных событий в модуле UART, а также показаны события, которые приводят только к установке флагов (в регистрах статуса URTx_STA и URTx_STA2 ).

Схема формирования прерывания модуля UART

Схема формирования прерывания модуля UART

Внутренние события UART General Event (UG), Line Status Event (LS) и состояние ошибки Error Event (ERR), в свою очередь, формируются по следующей схеме:

Схема формирования UART General

Схема формирования UART General

Статусные флаги, приводящие к прерыванию, доступны в регистре URTx_STA . Статусные флаги, не приводящие к прерываниям, доступны в регистре URTx_STA2 , за исключением флага RXDF , который доступен в регистре URTx_STA . Кроме булевых флагов, в модуле имеются две числовые трехбитовые переменные: TX_LVL — число байт в буфере, ожидающих отправки, и RX_LVL — число несчитанных байт из буфера приема. Обе переменные относятся к регистру URTx_STA2 .

Для включения прерывания модуля UART необходимо:

Выбрать событие (или события) в регистре URTx_INT . Например, для разрешения прерывания по приему данных нужно установить бит URTx_RX_IE .

Разрешить прерывание самого модуля установкой бита URTx_IEA в регистре URTx_INT .

Разрешить прерывание IRQ от модуля URTx в контроллере прерываний NVIC в регистре CPU_ISER . Например, для разрешения прерывания от URT0 (IRQ#20) нужно установить бит 20.

Прием и передача данных

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

Схема буферизации данных расширенного модуля UART

Схема буферизации данных расширенного модуля UART

Для включения блока передачи данных необходимо установить бит URTx_TX_EN в регистре URTx_CR2 . Передача данных начинается автоматически после того, как программа запишет передаваемые данные в регистр URTx_TDAT . В расширенной версии модуля этот регистр 32-битный, поэтому можно загружать в него 1, 2 или сразу 4 байта на отправку (должны использоваться машинные инструкции STRB , STRH или STR соответственно). Для передачи трех байт можно воспользоваться регистром URTx_TDAT3 (только в 32-битном режиме, т.е. через инструкцию STR ).

Перед непосредственной отправкой в линию TX данные передаются в промежуточный «теневой» буфер TX Shadow Buffer, после чего устанавливается флаг TXF, что может быть использовано для генерации прерывания или опроса готовности передачи. Последующая запись в регистр URTx_TDAT автоматически сбрасывает этот флаг. Оставшееся число байт, не переданных из регистра URTx_TDAT в теневой буфер, можно получить из поля URTx_TNUM регистра URTx_CR4 . Число байт, еще не переданных в линию TX из теневого буфера, отображается в поле URTx_TX_LVL регистра URTx_STA2 . Когда отправлены все данные из регистра URTx_TDAT и теневого буфера, устанавливается флаг TCF, что может быть использовано в двунаправленном режиме работы модуля.

При реализации библиотечной функции отправки одного байта перед записью в регистр URTx_TDAT можно проверять значение поля URTx_TNUM или URTx_TX_LVL . Значение 0 будет говорить о готовности модуля к отправке очередных данных. Полагаться на активный флаг TXF в этом случае будет некорректно, поскольку до первой отправки (после инициализации модуля) он будет сброшен. Если же его проверять перед выходом из функции, то будет впустую потрачено время на ожидание.

Для включения блока приема данных необходимо установить бит URTx_RX_EN в регистре URTx_CR2 . Принимаемые символы с линии RX из сдвигового регистра RX Shuft Buffer передаются в промежуточный приемный теневой буфер RX Shadow Buffer. Далее данные передаются в конечный буфер для считывания — регистр URTx_RDAT , после чего активируется флаг RXF. В случае получения новых данных при заполненном теневом буфере активируется флаг ROVRF (переполнение буфера). Число байт, ожидающих передачу из теневого буфера в буфер данных, отображается в поле URTx_RX_LVL регистра URTx_STA2 . Число байт, переданных из теневого буфера в регистр URTx_RDAT и еще невосстребованных, отображается в поле URTx_RNUM регистра URTx_CR4 .

Таким образом, модуль активирует флаг RXF как только полученные данные станут доступны программе, после чего их можно прочитать из регистра URTx_RDAT . В расширенной версии модуля этот регистр также 32-битный, поэтому сразу можно прочитать 1, 2 или 4 байта. После чтения данных из регистра флаг RXF автоматически сбрасывается.

Формат кадра задается отдельно для приемника и передатчика в регистре URTx_CR1 . Основные параметры настройки с указанием полей регистра приведены в следующей таблице. Символом «*» отмечены значения по-умолчанию (формат 8N1).

Ⅰ. Write in front

we all know USART in RX with TX The function of these two pins, these two pins are USART The two most common and essential pins for serial communication. But we will find about USART Other pins: USART_CK 、 USART_RTS 、 USART_CTS ,As shown below:

But most of us have not used it much USART_RTS with USART_CTS These two pins. The following will briefly tell you about USART Knowledge of serial port expansion.

Ⅱ、About DB9 Serial connector

We have all heard of RS232 ,Say 232 Just know DB9 This serial port connector.

DB9 Pin function :

1 CD ← Carrier Detect Carrier detection

2 RXD ← Receive Data Receive data

3 TXD → Transmit Data send data

4 DTR → Data Terminal Ready Data terminal ready

5 GND — System Ground System ground

6 DSR ← Data Set Ready Data device ready

7 RTS → Request To Send Request to send

8 CTS ← Clear To Send Allow to send

9 RI → What does this seem to be

I believe everyone knows DB9 This standard serial port connector, but most of us only use RX 、 TX with GND These three pins do not care about the other pins, or do not know what they mean. I believe that after reading the definition of the pins, I probably understand it.

Ⅲ、 RTS CTS

in ARM In the processor USART , Basically have the function of hardware flow control, that is to say generally RTS CTS Pins (note: processors with simpler functions, such as 51 、 STM8 Wait, there are few serial hardware flow control functions).

RTS : Is the input end of the module, used for MCU Notification module, MCU Is it ready, is the module available to MCU send Message, RTS The effective level of is low.

CTS : Is the output end of the module, used for module notification MCU , Is the module ready, MCU Is it possible to send information to the module, CTS The effective level of is low

RTS ( Require ToSend , Send request) is an output signal used to indicate that the device is ready to receive data, low level is effective, low level indicates that the device can receive data.

CTS ( Clear ToSend , Sending allowed) is an input signal used to judge whether data can be sent to the other party, low level is effective, low level means that the device can send data to the other party.

Ⅳ、 STM32 Hardware flow control configuration

When we configure the serial port, we have the following configuration code:

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

There is a parameter in the configuration code above:

In fact, this parameter can be:

#define USART_HardwareFlowControl_None ((uint16_t)0x0000)

#define USART_HardwareFlowControl_RTS ((uint16_t)0x0100)

#define USART_HardwareFlowControl_CTS ((uint16_t)0x0200)

#define USART_HardwareFlowControl_RTS_CTS ((uint16_t)0x0300)

It can be configured to use RTS with CTS These two pins are the function of hardware flow control.

Ⅴ ,At last Reprint please indicate: from http://blog.csdn.net/ybhuangfugui

Читать:
Что такое сплиттер для интернета

Похожие публикации