V. ПОСЛЕДОВАТЕЛЬНЫЙ ПОРТ МК 8XC196КС/КD
Функциональные возможности последовательного порта

Общие сведения

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

Последовательный порт позволяет:
- увеличивать число параллельных портов у МК путем подключения внешних сдвигающих регистров;
- осуществлять обмен данными с другими устройствами по последовательному каналу связи;
- создавать из нескольких микроконтроллеров простейшую локальную сеть.

На рис. 5.1 изображена структурная схема последовательного порта.

В состав последовательного порта входят регистры специальных функций SP_CON, SP_STAT, BAUD_RATE, SBUF(RX) и SBUF(TX), а также сдвигающий регистр передатчика (Transmit Shift Register), сдвигающий регистр приемника (Receive Shift Register) и генератор скорости передачи данных (Baud Rate Generator).

Последовательный порт принимает данные в регистр SBUF(RX), а передает данные из регистра SBUF(TX). Разрешается одновременное чтение и запись обоих регистров.

Рис. 5.1. Структурная схема последовательного порта микроконтроллера

Передатчик и приемник буферизированы для того, чтобы поддерживать непрерывную передачу и позволять прием второго байта до того, как будет прочитан первый байт.

Последовательный порт поддерживает один синхронный режим (режим 0) и три асинхронных режима (режимы 1, 2 и 3) и для передачи и для приема.

Краткий обзор режима 0

В синхронном режиме осуществляется последовательная передача или последовательный прием байта с использованием внешних сдвигающих регистров. При этом вывод P2.0(TXD) используется для выдачи серии из восьми импульсов управления сдвигом внешнего регистра, а вывод P2.1(RXD) - для последовательной выдачи или приема битов данных D0,D1,D2....D7.

В режиме 0 приемник (RXD) должен быть отключен для начала передачи и включен для начала приема. Когда RXD отключен, запись в SBUF (TX) начинает передачу. Когда RXD включен, прием начинается или по падающему фронту на входе RXD, или по очистке флага прерывания по приему (RI).

Отключение RXD останавливает процесс приема и запрещает дальнейшие приемы.

Для избежания нежелательного частичного или полного приема отключайте приемник (RXD) перед очисткой флага RI. Завершение приема данных может обрабатываться через прерывания, тестирование флагов в регистре SP_STAT, или непосредственно в строках программы с использованием регистра захвата прерывания.

Во время приема после того, как будет получен последний информационный разряд, флаг RI установится в 1. Непосредственно перед установкой флага RI генерируется сигнал прерывания приемника.

Во время передачи флаг TI устанавливается немедленно после передачи последнего (восьмого) информационного разряда, после этого генерируется сигнал прерывания передатчика.

Асинхронные режимы

Режимы 1, 2 и 3 - дуплексные режимы последовательного приема/передачи, то есть передача и прием в этих режимах могут происходить одновременно.

Режим 1 - стандартный асинхронный 8-битовый режим, используемый для обычной последовательной связи.

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

В режиме 2 последовательный порт генерирует прерывание, только если установлен девятый информационный разряд.

В режиме 3 последовательный порт всегда генерирует прерывание после завершения передачи или приема данных.

Когда последовательный порт работает в режиме 1, 2 или 3, запись в SBUF (TX) заставляет последовательный порт начать передачу данных. Новые данные, помещенные в SBUF (TX), не передаются, пока не передан стоповый бит предыдущих данных. Падающий фронт сигнала на выводе RXD заставляет последовательный порт начать прием данных, если прием разрешен. Отключение RXD останавливает процесс приема и запрещает дальнейшие приемы.

Краткий обзор режима 1

Режим 1- стандартный асинхронный режим связи. Кадр данных, используемый в этом режиме (см. рис. 5.2а), состоит из десяти битов: старт-бита (=0), восьми информационных разрядов (младший - первый) и стопового бита (=1).

Если контроль четности разрешен, вместо восьмого информационного разряда передается бит проверки на четность (бит паритета) и при приеме проверяется контроль четности.

Синхронизация передатчика и приемника сдвинуты друг относительно друга. Генератор тактовых импульсов передатчика включается при инициализации генератора скоростей. Синхронизация приемника происходит при приеме старт-бита.

Во время приема флаг RI устанавливается только в конце приема стопового бита. Сигнал прерывания приемника генерируется при установке флага RI. Во время передачи флаг TI устанавливается в начале передачи стопового бита. Сигнал прерывания передатчика генерируется при установке флага TI.

Рис. 5.2. Кадры последовательного порта: а - в режиме 1; б - в режимах 2, 3.

Краткий обзор режима 2

Режим 2 - асинхронный режим с распознаванием 9-го бита. Этот режим обычно используется с режимом 3 для многопроцессорной связи. На рис. 5.2б приведен кадр данных, используемый в этом режиме. Он состоит из старт-бита (=0), девяти информационных разрядов (младший бит - первый) и стопового бита (=1).

При передаче установка или сброс бита TB8 в регистре SP_CON перед записью в SBUF (TX) определяет девятый бит передачи. После каждой передачи аппаратные средства очищают бит TB8, так что перед каждой записью в SBUF(TX), если требуется, он должен быть установлен.

Во время приема флаг RI устанавливается и генерируется прерывание, только если бит TB8 установлен. Это обеспечивает простой способ осуществить выборочный прием на канале связи.

Контроль четности в этом режиме недопустим.

Краткий обзор режима 3

Режим 3 - асинхронный 9-битовый режим. Кадр данных для этого режима идентичен кадру режима 2. Режим 3 отличается от режима 2 тем, что во время передачи можно позволять контролировать четность, в этом случае девятый бит становится битом проверки на четность. Когда контроль четности отключен, информационные разряды 0-7 записываются в буфер передачи последовательного порта, а девятый информационный разряд записывается в бит TB8 регистра SP_CON.

В режиме 3 прием всегда вызывает прерывание независимо от состояния девятого бита. Если контроль четности отключен, девятый информационный разряд может читаться из бита 7 (RB8) регистра SP_STAT.

Если контроль четности разрешен, то RB8 становится флагом контроля ошибок четности при приеме (Received Parity Error flag-RPE).

Многопроцессорная связь

Режимы 2 и 3 предназначены для многопроцессорной связи. В режиме 2 последовательный порт генерирует прерывание приемника (RI), только когда установлен девятый информационный разряд. В режиме 3 последовательный порт генерирует прерывание приемника (RI) независимо от значения девятого бита. Девятый бит всегда установлен в кадрах адреса и всегда сброшен в кадрах данных. Один из способов использования этих режимов для многопроцессорной связи состoит в том, чтобы устанавливать главный процессор в режим 3, а подчиненные процессоры - в режим 2. Когда главный процессор хочет передать блок данных одному из нескольких подчиненных, он посылает кадр адреса, который идентифицирует адрес подчиненного. Так как девятый бит установлен, кадр адреса будет прерывать все подчиненные процессоры. Каждый подчиненный МК может исследовать байт адреса и определить, не его ли адрес поступил.

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

<<< Содержание >>>