Структура и принципы использования последовательного порта МК
PAGE 7
Дисциплина «Микроконтроллеры в системах управления», 3-й курс, семестр 6. Модуль 2 Тема 6
Модуль 2 Тема 6 Структура и принципы использования
последовательного порта МК
6.1 Структура последовательного порта и принципы управления
Последовательный порт МК часто называют универсальным асинхронным приемником-передатчиком (УАПП) или в английской нотации UART universal asynchronous receiver-transmitter.
Через UART осуществляется прием и передача информации, представленной последовательным кодом. Последовательный порт ввода-вывода используют в асинхронном режиме для связи со стандартными периферийными устройствами (дисплеем, модемом, другими контроллерами). В синхронном режиме UART применяют совместно с внешними сдвигающими регистрами для расширения количества линий ввода-вывода МК-системы минимальной конфигурации.
Порт UART аппаратно реализует побитовый способ передачи данных. Но на уровне программы минимальный объем передаваемой информации один байт.
Структура UART показана на рис. 6.1.
Рисунок 6.1 Структура последовательного порта UART МК MCS-51
Функционирование UART при передаче байта
Для начала передачи байта нужно с помощью любой команды пересылки направить данные в регистр SBUF. Например, это можно сделать командой
MOV SBUF, A
После этого UART автоматически начинает побитовую передачу информации через выход TxD со скоростью, заданной программистом при настройке UART. Когда будет передан последний бит посылки, флаг завершения передачи TI будет установлен в “1”. После этого можно пересылать следующий байт.
Функционирование UART при приеме байта
Для запуска приема нужно установить в “1” бит разрешения приема REN. Например, это можно сделать командой
SETB REN
Фактический прием байта начнется тогда, когда внешнее устройство, подключенное к входу RxD, начнет передачу данных. Побитовое тактирование приема происходит со скоростью, заданной программистом при настройке UART. При получении всей посылки флаг завершения приема RI будет установлен в “1”. После этого можно прочитать принятый байт из регистра SBUF, например, командой:
MOV A, SBUF
Чтение должно быть выполнено до завершения приема следующего байта.
Физически реализованы два отдельных регистра SBUF для приема и передачи.
Настройка UART и управление его работой
Для задания режимов работы UART служит регистр SCON. Имена битов регистра SCON можно использовать в командах программы.
Имя бита |
Назначение |
SM0 SM1 |
Выбор режима работы UART Биты нужно устанавливать и сбрасывать программно. SM0 SM1 Режим работы UART 0 0 Режим 0. Посылка 8 бит. Максимальная скорость передачи. Режим синхронной передачи 0 1 Режим 1. Посылка 10 бит. Скорость передачи задается программно. Режим асинхронной передачи 1 0 Режим 2. Посылка 11 бит. Фиксированная скорость передачи. Режим асинхронной передачи 1 1 Режим 3. Посылка 11 бит. Скорость передачи задается программно. Режим асинхронной передачи _ |
SM2 |
Управление приемом посылок. Бит изменяется программно. При SM2 = 1 запрещается прием посылок, в которых девятый бит равен 0 (для режимов 2 и 3). |
REN |
Разрешение приема. Бит изменяют программно. При REN = 1 прием разрешен. |
TB8 |
Значение передаваемого 8-го бита в посылке (не считая старт-бита). Бит нужно изменять программно. Используется в режимах 2 и 3 |
RB8 |
Значение 8-го бита в принятой посылке (не считая старт-бита). Бит изменяется аппаратно и фиксирует восьмой принятый бит в режимах 2 и 3 |
TI |
Флаг завершения передачи посылки. Устанавливается аппаратно при окончании передачи байта. Должен быть сброшен программно |
RI |
Флаг завершения приема посылки. Устанавливается аппаратно при окончании приема байта. Должен быть сброшен программно |
6.2 Описание режимов работы UART
Режим 0 синхронный ввод или вывод байта, сопровождаемый синхроимпульсами от МК. В этом режиме вывод RxD применяется как для приема, так и для передачи информации. Через вывод TxD выдаются синхроимпульсы, которые сопровождают каждый бит (импульсы с активным уровнем "0"). Информация выдается младшими битами вперед.
Скорость передачи зависит от тактовой частоты резонатора FQ :
[бит/с].
В этом режиме к выводам RxD и TxD могут быть подключены внешние сдвигающие регистры, которые будут формировать параллельный код при выдаче информации из МК, или будут превращать параллельный код в последовательный при приеме данных в МК. Таким образом, разработчики контроллера на основе MCS-51 получают в распоряжение относительно "медленный" параллельный порт.
В режимах 1, 2 и 3 вывод TxD (Transmit Data) используется только для передачи данных, а вывод RxD (Receive Data) только для приема данных.
Режимы 1, 2 и 3 называют режимами асинхронной передачи, т.к. момент начала и завершения посылки задается не по отдельным проводникам, а специальными битами на той же линии, по которой передается информация.
Постоянный высокий уровень на линиях TxD и RxD считается отсутствием сигнала (пассивное состояние линии).
Режим 1 посылка состоит из 10 битов: старт-бит("0"), восемь бит данных и стоп-бит("1"). Обобщенный вид сигналов на линиях порта UART при приеме или передаче посылки показан на рис. 6.2.
Рисунок 6.2 Вид сигналов UART для режима 1 (посылка 10 бит)
Скорость приема-передачи задают программным путем. Она зависит от значения бита управления PCON.7 (SMOD), и от частоты переполнения таймера 1, которая обозначена FOV T1. Нужно использовать таймер Т1 в конфигурации автоперезагрузки стартового числа. Тогда скорость передачи равна:
[бит/с]. (6.1)
Прерывание от таймера T1 в этом случае должно быть запрещено.
Для тактирования порта UART можно использовать таймер Т2 (реализован в современных моделях МК MCS-51). Настройки таймера Т2 для этого случая можно посмотреть в Модуль 2 Тема 5. Скорость передачи в этом случае зависит от стартового числа в регистрах (RCAP2H:RCAP2L), которое можно определить из выражения:
[бит/с]. (6.2)
Режим 2 посылка состоит из 11 бит: старт-бит("0"), восемь бит данных,
бит B8, определяемый пользователем, и стоп-бит("1"). Обобщенный вид сигналов на линиях порта UART при приеме или передаче посылки показан на рис. 6.3.
Рисунок 6.3 Вид сигналов UART для режимов 2 и 3 (посылка 11 бит)
При передаче "девятый" бит (B8) можно использовать, например, для контроля чётности количества "1" в байте данных, который передается, то есть для проверки достоверности полученной информации. При приеме "девятый" информационный бит поступает в разряд RB8 регистра SCON.
Частота передачи зависит от бита SMOD и тактовой частоты МК:
, [бит/с] (6.3)
Режим 3 размер посылки такой же, как для режима 2 (11 бит). Скорость приема-передачи определяют, как для режима 1 (формула 6.1).
Для любого режима к моменту завершения приема очередной посылки программным путем нужно выполнить RI = 0 (команда CLR RI). Перед передачей очередного байта программно нужно выполнить TI = 0 (команда CLR TI).
На рис. 6.4-а представлен пример реальной осциллограммы сигнала на линии TxD при передаче значения “5” в режиме 1 (например, командой MOV SBUF,#5). Скорость передачи в программе была задана равной 9600 бит/с, соответственно, интервал передачи посылки составляет ТПОС = 10/9600 = 1,04 мс (с учетом старт- и стоп-бита). Двоичное значение переданной информации: 00000101. Младший бит передается первым.
На рис. 6.4-б показан вид сигнала на линии TxD при последовательной передаче двух посылок со значениями “5” и “8” в режиме 1. Такая передача будет сделана в результате выполнения следующего фрагмента программы:
MOV SBUF,#5
JNB TI,$
CLR TI
MOV SBUF,#8
JNB TI,$
CLR TI
Скорость передачи также была равной 9600 бит/с.
Рисунок 6.4 Вид физического сигнала на линии TxD порта UART в режиме 1:
а) при передаче значения “5”; б) при последовательной передаче значений “5” и “8”
Как видно из рис. 6.2 и 6.3, признак завершения приема RI или завершения передачи TI устанавливаются в 1 после приема-передачи последнего информационного бита. Однако UART выдерживает длительность стоп-бита, и только после этого может выполнять прием или передачу следующей посылки см. рис. 6.4-б.
Электрическое соединение последовательных портов UART двух контроллеров реализует полнодуплексное соединение (рис. 6.5):
Рисунок 6.5 Соединение портов UART двух микроконтроллеров
Важно: передатчик и приемник должны быть настроены на одинаковые скорость передачи и вид посылки.
Для соединения порта UART микроконтроллера с COM-портом ПЭВМ нужно использовать преобразователи уровня, т.к. COM-порт не работает в ТТЛ-сигналах. Типовое решение использовать микросхему MAX232.
Принцип физического кодирования в интерфейсе RS-232 следующий:
логическая “1” передается уровнем -12В, логический “0” уровнем +12В. Физический сигнал на линии передачи может находиться в следующих пределах: для логической “1” от -3 до -12В, для логического “0” от +3В до +12В. Диапазон напряжений от -3В до +3В недопустим, т.к. входные схемы порта не смогут правильно декодировать уровень сигнала.
Осциллограмма физического сигнала на выходе преобразователя интерфейса MAX232 при передаче значения “5” на скорости 9600 бит/с в режиме 1 показана на рис. 6.6.
Рисунок 6.6 Вид физического сигнала на выходной линии преобразователя MAX232 при передаче значения “5” на скорости 9600 бит/с в режиме 1
Важно отметить, что стандартные скорости передачи, в частности, для связи с СОМ-портом ПЭВМ, не могут быть реализованы на типовой тактовой частоте МК FQ = 12 МГц. Так, наиболее популярные скорости передачи 9600 бит/с и 19200 бит/с точно реализуются при параметрах:
FQ = 11,0592 МГц; NST = 253 для таймера Т1;
бит SMOD = 0 или 1 соответственно для 9600 бит/с или 19200 бит/с.
Для реализации скоростей 38400 бит/с, 57600 бит/с или 115200 бит/с, если к МК подключен резонатор с FQ = 11,0592 МГц, следует использовать таймер Т2 (настройки таймера см. в Модуль 2 Тема 5, или более подробно в Модуль 3 Тема 3).
При тактовой частоте МК FQ = 11,0592 МГц значения стартовых чисел для
таймераТ2 следующие:
9600 бит/с FFDCh,
19200 бит/с FFEEh,
38400 бит/с FFF7h;
57600 бит/с FFFAh;
115200 бит/с FFFDh.
Такие стартовые числа обеспечивают точные значения скоростей передачи через UART.
Автор конспекта Джулгаков В.Г., доцент каф. 301, ХАИ
Структура и принципы использования последовательного порта МК