Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






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



Последовательный порт

Существует два способа передачи данных – параллельный и последовательный. При параллельном способе для передачи байта требуется 8 линий связи, и все биты байта передаются (принимаются) одновременно. При последовательном способе биты байта передаются последовательно один за другим. Минимальное количество линий при этом равно двум (сигнальная линия и земля). Порты в соответствии со способом передачи называются параллельными или последовательными.

Последовательный порт микроконтроллеров MCS-51 предназначен для обмена данными с внешними устройствами (персональным компьютером, микроконтроллерами, датчиками). Работа порта может происходить в одном синхронном режиме (режим 0) и трёх асинхронных режимах (режимы: 1, 2, 3). Поддерживается последовательный обмен в многопроцессорных системах.

Для обмена используются два сигнальных провода (линии TхD и RхD и провод земли. Под скоростью передачи понимается частота следования битов в байте. Единица скорости передачи бит/с (Бод) или соответственно в тысячу и миллион раз большие кбит/с (кБод) и Мбит/с (МБод).

При синхронном обмене синхросигнал выдаётся по линии TxD (вывод Р3.1), а данные принимаются или передаются по линии RxD (вывод Р3.0). В этом режиме обеспечивается максимально возможная скорость приёма и передачи данных с частотой ¦XTAL /12. Однако, этот режим используется для коротких (единицы метров) линий связи.

При асинхронном обмене данные передаются по линии TхD, а принимаются по линии RхD. Приём и передача данных могут происходить одновременно (так называемый дуплексный режим), поскольку регистр данных SBUF состоит из 2-х частей. Чтобы передать данные необходимо произвести запись в регистр SBUF, а для приёма информации необходимо прочитать содержимое регистра SBUF. Приёмник буферизирован, т.е. возможен приём следующего байта, когда предыдущий ещё находится в регистре SBUF. Однако, если подпрограмма обслуживания не успела прочесть байт данных к моменту завершения приёма следующего байта, то этот следующий принятий байт затрёт предыдущий. Приём и передача обслуживается битами прерывания RI и TI, которые формируют запрос прерывания (общий) от последовательного порта. Режимы асинхронного обмена отличаются скоростью передачи и числом бит в посылке (форматом кадра).

Применение различных скоростей передачи обусловлено, во-первых, уровнем искажений сигналов в линии связи, во-вторых, скоростными возможностями обмена внешних устройств. Чем длиннее линия связи, тем больше искажается сигнал, тем меньшей должна быть скорость передачи. Искажение проявляется увеличением длительностей переднего и заднего фронтов передаваемых импульсов напряжения. Оно обусловлено различной скоростью распространения по длинной линии гармоник прямоугольного импульса (дисперсией). В результате происходит перекрытие фронтов импульсов, что приводит к появлению ошибок при передаче данных. На рис. 27 изображены сигналы на входе линии и принятые сигналы на другом конце линии передачи после усиления. При передаче комбинации битов 101 принимается комбинация 111. Ошибка возникает при перекрытии переднего и заднего фронтов импульсов. При достаточном снижении скорости передачи в той же линии (рис. 28) перекрытия фронтов не происходит, и комбинация битов передаётся безошибочно.



Управляется последовательный порт с помощью установки требуемой комбинации битов в регистре SCON (Serial Control – управление последовательным портом):

 

Биты SСОN.7 SCОN.6 SCОN.5 SCОN.4 SCОN.3 SCОN.2 SCОN.1 SCОN.0
Обоз. SM0 SM1 SM2 REN TB8 RB8 TI RI

Цель управления – установка режима работы порта и формата кадра при передаче

Биты регистра SCON являются прямоадресуемыми. Биты SM0 и SM1 определяют режим работы в соответствии со следующей таблицей:

 

SM0 SM1 Режим Наименование Скорость передачи
Синхронный ¦XTAL /12
        8-ми битовый универсальный асинхронный приёмник/передат- чик (УАПП) 8 бит данных в кадре Переменная, задаётся Т/С1
9-битовый (УАПП) ¦XTAL /64 или ¦XTAL /32
9-битовый (УАПП) Переменная, задаётся Т/С1

Остальные биты имеют следующие значения:



SM2 – разрешение обмена в многопроцессорных системах. В режиме 0 должен быть установлен в 0, сброшен. В режиме 1 при SM2 = 1 бит RI не устанавливается, если принятый стоп-бит равен 0. В режимах 2 и 3 при SM2 = 1 бит RI не устанавливается, если принятый 9-ый бит данных RB8 = 0;

REN – разрешение приёма последовательных данных. При REN=1 приём разрешён. Устанавливается и сбрасывается программным обеспечением для разрешения и запрета приёма;

ТВ8 – девятый бит передаваемых данных в режимах 2 и 3. Устанавливается и сбрасывается обеспечением. Например, в него можно поместить значение бита Р из регистра PSW для повышения достоверности передаваемой информации (контроль по паритету). Например, можно передавать чётное число единиц или только нечётное число единиц в байте.

RB8- девятый бит принятых данных в режимах 2 и 3. В режиме 1, если SM2 = 0, RB8 является принятым стоп-битом (в него заносится стоп-бит). В режиме 0 не используется.

TI - Флаг запроса прерывания передатчика. Устанавливается аппаратно в конце времени выдачи 8-го бита в режиме 0 или в начале стоп-бита в других режимах. Сбрасывается программным обеспечением (подпрограммой обработки прерывания от последовательного порта).

RI - Флаг запроса прерывания приёмника. Устанавливается аппаратно в конце времени приёма 8-го бита в режиме 0 или через половину интервала стоп-бита в режимах 1, 2, 3 при SM2 = 0. При SM2 = 1 смотри описание бита SM2. Сбрасывается программно (подпрограммой обработки прерывания от последовательного порта).

Кроме бита регистра SСОN последовательный порт управляется битом SMOD регистра PCON. В основном регистр PCON управляет режимами энергопотребления. Бит SMOD управляет опцией удвоения скорости обмена. При SMOD = 1 скорость обмена данными через последовательный порт в режимах 1, 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-го служебного бита необходимо для организации контроля обмена по чётности или обеспечения многопроцессорной работы микроконтроллеров.

 


Эта страница нарушает авторские права

allrefrs.ru - 2019 год. Все права принадлежат их авторам!