USART (Universal Synchronous Asynchronous Receiver Transmitter) – это модуль последовательного ввода-вывода, который может использоваться для работы с периферийными устройствами, такими как терминалы или персональные компьютеры, модемы, микросхемами ЦАП, АЦП, последовательными EEPROM и т.д.
USART может работать в трех режимах:
- асинхронный, полный дуплекс;
- ведущий синхронный, полудуплекс;
- ведомый синхронный, полудуплекс.
Модуль приемо-передатчика обеспечивает полнодуплексный обмен по последовательному каналу, при этом скорость передачи данных может варьироваться в довольно широких пределах. Длина посылки может составлять от 5 до 9 битов. В модуле присутствует схема контроля и формирования бита четности.
Модуль USART может обнаруживать следующие внештатные ситуации:
- переполнение;
- ошибка кадрирования;
- неверный старт-бит.
Для уменьшения вероятности сбоев в модуле также реализована функция фильтрации помех. Для взаимодействия с программой в микроконтроллере, как правило, предусмотрены прерывания, запрос на генерацию которых формируется при наступлении следующих событий:
- «передача завершена»;
- «регистр данных передатчика пуст»;
- «прием завершен».
Интерфейс USART задействует 3 линии ввода-вывода:
- TxD – передача данных;
- RxD – прием данных;
- XCK – тактовый сигнал (используется только в синхронном режиме).
Соединение двух устройств по интерфейсу USART осуществляется по следующей схеме:
Кадр – совокупность одного слова данных и сопутствующей информации. Кадр начинается со старт-бита, за которым следует младший бит слова данных. Слово данных может состоять из 5, 6, 7, 8 или 9 битов. После старшего бита слова данных следует один или два стоп-бита. Если включена схема формирования бита четности, он включается между старшим битом слова данных и первым стоп-битом.
Схема контроля четности предполагает два возможных режима работы:
- контроль четности (even parity) - исключающее ИЛИ всех битов слова данных:
- контроль нечетности (odd parity) - исключающее ИЛИ всех битов слова данных с логической единицей:
Асинхронный режим работы
В асинхронном режиме, а также в синхронном режиме при работе в качестве ведущего скорость приема и передачи данных задается контроллером скорости передачи, работающим как делитель системного тактового сигнала с программируемым коэффициентом деления.
Скорость передачи данных, как правило, выбирается из стандартного ряда: 300; 600; 1200; 2400; 4800; 9600; 19200; 38400; 57600; 115200; 230400; 460800; 921600 бод.
Реальное значение скорости передачи может отличаться от стандартного ряда, поскольку определяется тактовой частотой микроконтроллера и ограничено разрядностью регистра конфигурации. При этом можно определить величину ошибки:
BaudRate - реальная скорость передачи;
BAUD - требуемая скорость передачи из стандартного ряда.
При использовании скоростей, дающих ошибку больше 0,5 %, снижается помехозащищенность линии передачи.
Для обеспечения приема в асинхронном режиме работы используются схемы восстановления тактового сигнала и данных. Схема восстановления тактового сигнала предназначена для синхронизации внутреннего тактового сигнала, формируемого контроллером скорости передачи, и кадров, поступающих на вывод RxD микроконтроллера. Схема восстановления данных осуществляет считывание и фильтрацию каждого бита принимаемого кадра. Схема восстановления тактового сигнала осуществляет опрос входа приемника с целью определения старт-бита кадра.
Обнаружение спадающего фронта на выводе RxD интерпретируется как возможное появление переднего фронта старт-бита. После этого проверяется значение заданных значений выборок входного сигнала. Если значение хотя бы двух выборок из указанных равно «1», старт-бит считается ложным (помеха), а приемник переходит к ожиданию следующего изменения входного сигнала с «1» в «0». В противном случае считается, что обнаружен старт-бит новой последовательности, с которым синхронизируется внутренний тактовый сигнал приемника. После этого начинает работать схема восстановления данных.
Решение о значении принятого бита принимается также по результатам заданных выборок входного сигнала. Состоянием бита считается логическое значение, которое было получено, хотя бы в двух из трех выборок. Процесс распознавания повторяется для всех битов принимаемого кадра, включая первый стоп-бит.
Старт-бит нового кадра может передаваться сразу же после последней выборки, используемой для определения значения бита.
Синхронный режим работы
При работе в синхронном режиме в качестве ведомого скорость приема и передачи определяется частотой сигнала, поступающего на вход XCK.
При работе модуля USART в синхронном режиме состояние вывода RxD считывается по одному из фронтов сигнала XCK, а выдача сигнала вывод TxD - по другому фронту.
Здравствуйте. Можете написать пример Синхронный режим работы