Режимы 2 и 3 работы последовательного порта




Асинхронные режимы (1, 2, 3)

Как и в синхронном режиме, в асинхронном (по-русски не синхронном) порт работает на базе сдвигового регистра, но 9-разрядного. В асинхронном режиме отсутствуют импульсы синхронизации приёма или передачи каждого бита, передающиеся от передатчика к приёмнику по отдельной линии, что лежит в основе синхронного режима. Здесь синхронизируется лишь момент начала обмена специальным старт-битом, который передаётся передатчиком перед посылкой каждого байта. Фронт старт-бита (переход из 1 в 0) привязывает фазу тактирующих импульсов приёмника к границе смены битов, посылаемых передатчиком. Для реализации асинхронного режима необходимо, чтобы период следования тактирующих импульсов приёмника был как можно ближе к периоду следования битов посылаемых передатчик. При обмене данными в асинхронном режиме микроконтроллер может одновременно передавать и принимать данные по линиям TxD и RxD соответственно. Такой режим называется дуплексным.

Асинхронные режимы 1, 2, 3 отличаются форматом кадра (число бит в посылке) и наличием фиксированной или переменной скорости передачи.

 

Режим 1

В режиме 1 приём/передача данных осуществляется в формате 8-ми разрядного УАПП (универсального асинхронного приёмопередатчика). В зарубежной литературе и технических описаниях он имеет аббревиатуру UART. Через TхD передаются, а через RхD принимаются 10 бит: старт-бит (0), 8-бит данных стоп-бит (1). При приёме стоп-бит заносится в бит RВ8 регистра SСОN. Скорость (частота) приёма/передачи определяется частотой переполнения Т/С1 ¦OV.

Рассмотрим схему синхронизации последовательного порта (рис. 31).

 
 

Схема синхронизации предназначении для задания временной сетки работы приёмника и передатчика порта. Подчеркнём, что импульсы синхронизации не выходят из порта во внешние линии передачи и приёма, а используются внутри приёмника и передатчика. При значении бита SMOD = 1 регистра PCON частота ¦1 импульсов, поступающих на вход двух делителей на 16, равна частоте ¦OV переполнения Т/C1. Если SMOD = 0, то частота переполнения предварительно делится на два и ¦1 = ¦OV/2. Делители на 16 предназначены для получения импульсов синхронизации приёмника СИНХР Rx и передатчика СИНХР Tx. Делители на 16 работают следующим образом. После прихода 16-и импульсов на вход делитель вырабатывает на выходе импульс синхронизации и вновь начинает счёт до 16-и. Два делителя на 16 обеспечивают дуплексную работу последовательного порта. Делитель на 16 приёмника сбрасывается с приходом старт-бита для совмещения импульсов синхронизации приёмника с границами смены битов, принимаемого байта. Делитель на 16 приёмника вырабатывает для специального устройства бит-детектора импульсы в фазах, прихода седьмого, восьмого и девятого импульсов, поступающих на вход делителя.

Рассмотрим работу последовательного порта при передаче в режиме 1 с помощью временной диаграммы (рис. 32).

Передача инициируется любой командой записи байта в регистр SBUF. Например, mov SBUF,@R0. В этом примере в регистр передатчика загружается байт из ячейки внутренней памяти данных (ОЗУ), адрес которой указан в регистре R0.

При выполнении команды записи в SBUF формируется импульс "Запись в SBUF", по которому предназначенный к передаче байт загружается в младшие восемь разрядов регистра сдвига передатчика. В девятый разряд регистра сдвига передатчика при этом заносится 1 (стоп-бит). Реально передача начинается в фазе S1P1 машинного цикла, следующего за ближайшим после импульса "Запись в SBUF" переполнением делителя на 16 в цепи сигнала "Синхр Тх". Таким образом, начало передачи синхронизировано делителем на 16 (импульсом "Синхр Тх"). Период сигнала "Синхр Тх" определяет время, в течение которого передаваемый бит будет находиться на выходе ТхD (время трансляции бита). Передача начинается установкой активного (низкого) уровня сигнала "Посылка". Его появление вызывает выдачу на выход TxD старт-бита (0). Через время трансляции одного бита, задаваемого сигналом "Синхр Тх", становится активным сигнал "Данные", который разрешает выдачу содержимого регистра сдвига передатчика на выход TxD (ввод Р3.0). При появлении этого сигнала старт-бит на выходе сменяется битом D0 регистра сдвига передатчика. По окончании времени трансляции бита D0 формируется импульс "Сдвиг". В результате содержимое регистра сдвига передатчика сдвигается на один разряд и бит D0 на выводе TxD сменяется битом D1.

 
 

Всего формируется 9 импульсов "Сдвиг". В результате на выход TxD выдаются 8 бит данных и стоп-бит. По окончании выдачи всех бит посылки устанавливается флаг прерывания передатчика TI и снимаются сигналы "Посылка" и "Данные". Далее точно таким же образом передаётся требуемое количество байтов.

Работа последовательного порта при приёме происходит в соответствии следующей временной диаграммой (рис. 33). Приём начинается при обнаружении перехода сигнала на входе RxD из 1 в 0. Для отслеживания такого перехода вход RxD аппаратно опрашивается с частотой f1. Это частота на входе делителя на 16 передатчика схемы синхронизации. Когда переход из 1 в 0 на входе RxD обнаружен, немедленно сбрасывается счётчик-делитель на 16 схемы синхронизации приёмника. В результате происходит совмещение моментов переполнения счётчика делителя на 16 схемы синхронизации с границами смены битов принимаемой посылки на входе RxD. Шестнадцать состояний счётчика-делителя на 16 делят время, в течение которого каждый бит принимаемой посылки присутствует на входе RxD, на 16 фаз. В фазах 7, 8 и 9 специальное устройство бит-детектор считывает со входа RxD три значения принимаемого бита. По мажоритарному принципу 2 из 3-х выбирает одно из них и подаёт его на вход регистра сдвига приёмника. При этом формируется импульс сдвиг для регистра сдвига приёмника. В результате содержимое регистра сдвига сдвигается на один разряд и принятый бит заносится в регистр сдвига приёмника. Всего формируется 10 импульсов "Сдвиг". Регистр сдвига является 9-разрядным. Поэтому после 10-го импульса "Сдвиг" в регистре сдвига приёмника находятся биты данных D0 – D7 и стоп-бит. Старт-бит теряется. После 10-го импульса "Сдвиг" данные из регистра сдвига загружаются в регистр SBUF, а стоп-бит загружается в разряд RB8 регистра SCON. Одновременно устанавливается флаг прерывания приёмника RI. Загрузка принятых данных в SBUF, стоп-бита в RB8 и установка флага RI происходит, если при генерации 10-го импульса "Сдвиг" выполняются следующие два условия: 1) RI = 0 и 2) либо SM2 = 0, либо принятый стоп-бит равен 1. В противном случае принятая посылка теряется, а флаг RI не устанавливается. Одновременно, независимо от выполнения приведённых условий, последовательный порт вновь начинает отслеживать переход из 1 в 0 на входе RxD.

 
 

Если мажоритарный отбор при приёме старт-бита показывает ненулевое значение, то сразу начинается отслеживание перехода из 1 в 0 на входе RxD.

Применение бит-детектора обеспечивает повышение помехоустойчивости приёма. Если на входе RxD будет действовать импульсная помеха в одной из фаз работы бит-детектора, а в 2-х других помехи не будет, то бит детектор правильно определит значение бита, несмотря на наличие импульса внешней помехи. Почему используют три импульса бит-детектора? Дело в том, что эти три импульса располагаются во временном интервале, соответствующем середине длительности старт-бита. Частоты синхронизации приёмника и передатчика отличаются в пределах допуска. Этот допуск предусматривает, что если частота синхронизации приёмника больше частоты синхронизации передатчика, то три импульса бит детектора смещаются к началу стоп бита. При противоположном соотношении частот три импульса бит детектора смещаются к концу стоп бита. При таком допуске, если бы битов бит-детектора было больше, то они бы выходили за пределы длительности принимаемого бита, и это приводило бы к ошибке. Увеличение числа битов в бит-детекторе возможно лишь при ужесточении допуска на разницу частот синхронизации.

Режимы 2 и 3 работы последовательного порта

Это режимы 9-разрядного приёмо-передатчика с постоянной (режим 2) и переменной (режим 3) скоростью обмена данными. В этих режимах 11 бит передаются и принимаются через выводы TxD и RxD в следующей последовательности: старт-бит, 9 бит данных, стоп-бит. При передаче 9-й бит данных определяется содержимым разряда ТВ8 регистра SCON. При приёме 9-й бит заносится в бит RB8 регистра SCON.

В режиме 2 скорость (частота) приёма-передачи программно настраивается на одну из двух возможных величин fxtal/32 и fxtal/64 с помощью бита SMOD регистра PCON. В режиме 3 скорость определяется частотой преполнения Т/С 1 (fov). Во всём остальном режимы идентичны.

Временные диаграммы при передаче в отличие от режима 1 имеет перед стоп-битом бит ТВ8, а при приёме перед стоп-битом следует бит RB8. Регистр сдвига приёмника (как и передатчика) является 9-разрядным. При приёме после десятого импульса "Сдвиг" в регистре находятся 9 бит принятой посылки (8 бит данных и бит RB8). После десятого импульса "Сдвиг" биты D0 – D7 загружаются в регистр SBUF, 9-й разряд регистра сдвига загружается в бит RB8 регистра SCON и устанавливается флаг прерывания приёмника RI регистра SCON. Загрузка SBUF, RB8 и установка RI происходит при выполнении 2-х условий: 1) RI = 0 и 2) Либо SM2 = 0, либо принятый 9-й бит равен 1. Если хотя бы одно условие не выполняется посылка теряется, а флаг RI не устанавливается. Независимо от выполнения этих условий последовательный порт вновь начинает отслеживать на входе RxD переход из 1 в 0. Значение принятого стоп-бита не влияет на SBUF, RB8 и RI.

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

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: