ЗНАЕТЕ ЛИ ВЫ?

Особенности последовательного интерфейса микроконтрол-леров семейства MCS51



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

Рис. 4. Схема интерфейса RS-232C.

Схематически контроллер порта можно представлен на рис. 5. Как видно из рисунка, регистр SBUF, доступный пользователю для чтения и записи, представляет собой физически два регистра, в один из которых можно только записывать, а из другого читать. Контроллер позволяет дуплексный обмен данными, т.е. одновременно может передавать и принимать информацию по линиям TxD (P3.1) и RxD (P3.0) соответственно.

Рис. 5. Контроллер последовательного порта

Передача инициируется записью в SBUF байта данных. Этот байт переписывается в сдвиговый регистр, из которого пересылается бит за битом. Как только байт будет переслан целиком, устанавливается флаг TI, сигнализирующий о том, что контроллер готов к передаче очередного байта.

Прием осуществляется в обратном порядке: после начала процесса приема принятые биты данных последовательно сдвигаются в сдвиговом регистре, пока не будет принято их установленное количество, затем содержимое сдвигового регистра переписывается в SBUF и устанавливается флаг RI. После этого возможен прием следующей последовательности бит. Необходимо отметить, что запись принятого байта из сдвигового регистра в SBUF происходит только при условии, что RI=0, поэтому при считывании пользовательской программой очередного байта из SBUF ей необходимо сбрасывать этот флаг, иначе принятый в сдвиговый регистр, но не записанный в SBUF, следующий байт будет безвозвратно утерян.

Контроллер последовательного порта может работать в одном из четырех режимов (один синхронный и три асинхронных), различающихся скоростями обмена и количеством передаваемых/при-нимаемых бит:

· Режим 0 (синхронный): данные передаются и принимаются через RxD, TxD является синхронизирующим (выдает импульсы сдвига). Скорость в этом режиме фиксирована (1/12 частоты тактового генератора).

· Режим 1 (8 бит данных, асинхронный, переменная скорость). Передаются 10 бит: старт-бит, 8 бит данных (SBUF) и стоп-бит.

· Режим 2 (9 бит данных, асинхронный, фиксированная скорость). Передаются 11 бит: старт-бит, 8 бит (SBUF), бит TB8/RB8 (посылка/прием соответственно) и 1 стоп-бит. Биты ТВ8 и RB8 содержатся в регистре SCON (биты 3 и 2 соответственно), первый устанавливается программно, а второй содержит 9-й бит принятой комбинации. С помощью них можно организовать, например, контроль четности или обмен с двумя стоп-битами.

· Режим 3 (9 бит данных, асинхронный, переменная скорость). То же, что и режим 2, только скорость обмена переменная.

Режим контроллера, а также другие параметры его работы задаются в регистре SCON (098h) (рис. 6). Описание битов регистра приведены в таблице 1.

 

Рис. 6. Регистр SCON микроконтроллера

 

 

Таблица 1. Назначение битов регистра SCON.

Бит Описание
SM0 SM1 Режим последовательного обмена (Serial Mode)
0 0 Режим 0
0 1 Режим 1
1 0 Режим 2
1 1 Режим 3
SM2 Включает поддержку взаимодействия нескольких микроконтроллеров объединенных в сеть. Если SM2=1, то при приеме в режимах 2 и 3 RI не устанавливается в том случае, если принятый 9-й бит (RB8) равен 0. При приеме в режиме 1 RI не устанавливается, если не был принят правильный стоп-бит. В режиме 0 SM2 должен быть равен 0.
REN (Receiver Enable) Если установлен, то разрешен прием данных. Устанавливается и сбрасывается программно.
ТВ8 (Transmitter Bit 8) 9-й бит посылаемых данных в режимах 2 и 3. Устанавливается и сбрасывается программно.
RB8 (Receiver Bit 8) 9-й бит принимаемых данных в режимах 2 и 3. В режиме 1, если SM2=0, в RB8 записывается принятый стоп-бит (точнее то, что было принято в момент приема стоп-бита). В режиме 0 не используется.
TI (Transmitter Interrupt) Флаг завершения посылки. Устанавливается аппаратно по завершении посылки 8-го бита данных в режиме 0 или стоп-бита в других режимах. При ES=1 (бит 4 регистра IEN0(0A8h)) происходит прерывание (вектор 023h), когда TI устанавливается контроллером в 1. Должен быть сброшен программно.
RI (Receiver Interrupt) Флаг завершения приема. Устанавливается аппаратно по завершении приема 8-го бита данных в режиме 0 или стоп-бита в других режимах. При ES=1 (бит 4 регистра IEN0(0A8h)) происходит прерывание (вектор 023h), когда RI устанавливается контроллером в 1.

Скорости обмена в разных режимах различаются. В двух из них скорости фиксированы, а в двух других переменные. Рассмотрим подробнее способы задания скорости обмена в каждом из режимов.

· Режим 0. Фиксированная скорость обмена. В этом режиме скорость вычисляется следующим образом:
, где Core_Clk – внутренняя тактовая частота микроконтроллера.

· Режим 2. Скорость обмена зависит от значения бита SMOD (старший бит в регистре PCON(087h)). Если SMOD=0 (по умолчанию), то скорость определяется как 1/64 тактовой частоты. SMOD=l удваивает это значение. В общем случае:

· Режимы 1 и 3. В этих режимах порт можно синхронизировать от двух источников: от встроенного генератора импульсов и от таймера 1. Источник синхронизации определяется значением бита BD (старший бит регистра ADCON(0D8h)): если BD=1, то используется встроенный генератор импульсов, в противном случае используется таймер 1.

Встроенный генератор импульсов делит тактовую частоту МП на 2500 и, если SMOD=l, то полученное значение удваивается. Например, при тактовой частоте МП 12MHz можно получить стандартные скорости 12MHz/2500=4800 бод и (12MHz/2500)*2=9600 бод. В общем случае:

.

При использовании таймера 1 скорость обмена определяется временем переполнения таймера и значением бита SMOD:

где TMlOVrate – время переполнения таймера 1, зависящее от режима его работы. Таймер 1 может быть установлен как «таймер» или как «счетчик», в любом режиме работы. Прерывание от таймера при этом обычно запрещается. Чаще всего таймер 1 устанавливают как «таймер» в режиме 2: для этого старшая тетрада регистра TMOD(089h) должна равняться 0010b. При таком использовании после каждого переполнения регистра таймера ТL1 в него загружается значение из регистра ТН1. Скорость обмена в этом случае вычисляется по формуле:

В таблице 2 приведены способы задания некоторых стандартных скоростей обмена.

 

Таблица 2. Способы задания стандартных скоростей обмена.





Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.234.255.5 (0.008 с.)