Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 524 по 631.doc
Скачиваний:
6
Добавлен:
16.04.2019
Размер:
2.54 Mб
Скачать

Коммуникационные микроконтроллеры и системы на их основе

Пользователь может запретить проверку сравнения некоторых служебных символов с помощью регистра маски RCCM (рис. 5.107). В младших восьми битах этого регистра хранятся признаки проверки символов. Если i-разряд равен нулю, то проверка на срав­нение принятого символа и служебного символа CHARi не производится. Если i-разряд равен единице, то символ CHARi принимает участие в сравнении. В старших разрядах (15-й и 14-й биты) ячейки RCCM хранятся, для того чтобы избежать ошибок при обработке битов Е и R в таблице служебных символов.

Если служебный символ был сохранен в буфере, то в слове состояния ВО устанавли­вается бит С := 1, который сообщает пользователю, что последний байт в буфере - это служебный символ.

Кроме служебных символов UART-контроллер может контролировать прием симво­лов BREAK. Символ BREAK - это от 9 до 13 «О» без стоп-битов. Если контроллер полу­чил последовательность BREAK-символов, то он увеличивает счетчик BRKEC и закры­вает текущий буфер приема, устанавливает в его слове состояния бит BR := 1 и генери­рует Rx-прерывание через регистр событий, если оно разрешено. В СРМ-процессоре контроллер также контролирует длину BREAK-последовательности.

При приеме первого BREAK-символа контроллер устанавливает бит начала последо­вательности BRKs в регистре событий. Далее он подсчитывает длину последовательно­сти в символах. При получении первого бита, равного единице, контроллер записывает длину BREAK-последовательности в регистр BRKLN и устанавливает бит конца после­довательности BRKe в регистре событий. Напомним, что изменение значения любого бита в регистре событий может вызвать прерывание центрального процессора, если оно разрешено.

Если UART-контроллер работает в синхронном режиме (бит SYN = 1 в регистре режи­ма UART-контроллера) и установлен бит нулевых стоп-битов RZS = 1, то BREAK-после-довательность регистрируется только после приема двух BREAK-символов. Каждый пос­ледний принятый BREAK-символ будет сохраняться в регистре RLBC. Пользователь мо­жет подсчитать длину (число «О») в последнем BREAK-символе, начиная с 15-го бита в регистре RLBC и в сторону 0-го бита до бита, значение которого равно единице. Напри­мер, если в регистре RLBC записан двоичный код 0001хххххххх, то это значит, что было принято три нулевых бита.

Передача символов. При передаче UART-контроллер получает из буфера FIFO только сам символ, который будет передан в поле данных. Остальные поля кадра заполняются внутри SCC-контроллера. Во-первых, контроллер анализирует, какой тип контроля будет применен, и вычисляет контрольную сумму, которая записывается в бит контроля в кад­ре данных. Во-вторых, надо или нет вводить бит адреса в формат кадра. В-третьих, в формат кадра вводится необходимое число стоп-битов, при этом контролируется ис­пользование дробных стоп-битов.

Если передается первый символ из нового буфера данных, то в слове состояния бу­ферного дескриптора анализируются биты А, Р, NS, CR. Бит N8 = 1 определяет, что все данные из буфера должны передаваться без стоп-битов. Если бит NS = 0, то все данные передаются со стоп-битами. Если установлен бит А = 1, то все данные из буфера переда­ются как адреса с установленным в «1» битом адреса в формате кадра, но только если контроллер настроен на работу в режиме многоточечного соединения. Если установлен бит CR = 1, то между передачами содержимого двух соседних буферов данных в канал выводятся три бита IDLE «1». Сигнал CTS , который должен быть активен при передаче данных, во время передачи IDLE-битов становится пассивным, генерируется прерывание «потеря CTS сигнала» и выставляется бит СТ = 1 (потеря CTS) в слове состояния текущего буфера. Если бит CR = 0, то следующий буфер передается сразу за текущим без задержек, если он был готов к передаче. При этом бит потери CTS - бит СТ в слове состояния BD не

598

ПОДДЕРЖКА ПРОТОКОЛОВ В КОММУНИКАЦИОННЫХ КОНТРОЛЛЕРАХ

устанавливается. Если в слове состояния BD установлен бит Р = 1, то перед передачей содержимого буфера передается символ преамбулы (все биты «1»), и на другом конце канала обнаруживают IDLE-состояние линии связи перед получением данных. Преамбу­ла передается, даже если длина буфера в BD установлена равной нулю. Преамбула представляет собой символ такой же длины, что и передаваемые данные, только все биты в символе равны единице.

Если UART-контроллер получил от CPU-ядра команду STOP TRANSMIT, то он пере­дает в сеть содержимое FIFO передачи, затем передает определенное число символов BREAK, далее он переходит к передаче IDLE-символов, пока не получит команду RESTART TRANSMIT. Формат BREAK-символа представляет собой символ установленной длины, у которого все биты равны нулю и без стоп-битов. Количество BREAK-символов, которые UART-контроллер передаст в сеть, указывается пользователем в регистре BRKCR.

Пользователь может управлять процессом передачи данных (flow control), вставляя в поток передаваемой информации служебные символы. Для этого в области параметров протокола выделена специальная ячейка TOSEQ. В эту ячейку записывается символ управления передачей, который имеет наивысший приоритет перед передачей других символов. Перед тем как прочитать очередной символ из буфера данных, UART-кон­троллер проверяет готовность этого служебного символа. Если символ готов, то он поме­щается в FIFO передачи, а затем в канал будет передан символ управления передачей, например символы XON или XOFF.

Когда центральный процессор подготовил символ для передачи, устанавливается бит REA (READY) := 1 (рис. 5.108). Коммуникационный контроллер сбрасывает этот бит REA := 0 только после окончания передачи служебного символа, формат которого указан в поле CHARACTER. После передачи служебного символа, если установлен бит I (Interrupt) = 1, то CPU уведомляется прерыванием через бит Тх-регистра событий U ART-контроллера.

Длина служебного символа CHARACTER совпадает с запрограммированной длиной других символов, с которыми работает контроллер. Значение поля CHARACTER может быть изменено пользователем, только когда сброшен бит готовности REA = 0.

При передаче служебного символа контролируется состояние сигнала разрешения передачи стз = 0. Если при передаче служебного символа был потерян сигнал, т. е. стз = 1, то устанавливается бит СТ := 1 в ячейке CHAR8 или TOSEQ, а также устанавли­вается бит CTS := 1 в регистре событий UART-контроллера. Если передача служебного символа прервала передачу символов из буфера данных и при этом был потерян сигнал cts , то и в слове состояния BD текущего буфера будет установлен бит потери сигнала стз бит СТ := 1.

Когда UART-контроллер работает в многоточечной конфигурации, пользователь дол­жен установить бит А := 1 в ячейке служебного символа.

012 3 4 5 6 7 8 9 10 11 12 13 14 15

-

REA

1

СТ | 0

0 | А

Символ для передачи (CHARACTER)

Рис. 5.108. Формат регистра TOSEQ

Transparent-контроллер. Transparent-контроллер позволяет SCC-каналу принимать и передавать сетевые данные без их модификации. Выделяют несколько задач, для ко­торых характерно использование режима «прозрачной передачи».

• Для передачи по сети в последовательном коде «особенных» данных, например, голо­са, если не выделено специального протокола для этих целей.

599

КОММУНИКАЦИОННЫЕ МИКРОКОНТРОЛЛЕРЫ И СИСТЕМЫ НА ИХ ОСНОВЕ

  • Для передачи данных в последовательном коде между микросхемами на плате или приборе. Для этого требуется выполнять последовательно-параллельное и параллель­ но-последовательное преобразование.

  • Пользователь может организовать передачу кадров любого протокола в поле данных кадра «прозрачного» уровня без промежуточного их декодирования. Например, для организации связи между высокоскоростной и низкоскоростной сетями, которые обе работают с временным мультиплексированием. В этом случае SCC-контроллер будет выполнять функцию согласования скоростей двух сетей.

  • Наиболее часто SCC-контроллеры с Transparent-режимом работы используются для построения коммуникаторов и концентраторов. В этих случаях контроллер будет вы­ полнять функции мультиплексирования данных от нескольких низкоскоростных кана­ лов в один высокоскоростной.

  • Часто режим прозрачной передачи применяют для передачи данных из памяти одного компьютера в память другого компьютера, используя при этом преобразование дан­ ных в последовательный код при передаче по последовательному каналу связи.

Настройка SCC-канала для работы в Transparent-режиме обмена в контроллере МРС860 производится в регистре общих режимов GSMR. Установка битов ТТХ = 1 для передатчика и TRX = 1 для приемника включает полнодуплексный режим «прозрачной передачи» независимо от значений битов MODE, которые осуществляют выбор комму­никационного потока для SCC-канала. Если же установлен только один из битов, то лишь одна часть SCC-канала будет работать в прозрачном режиме, а другая часть будет рабо­тать с коммуникационным протоколом, который выбран в битах MODE.

Transparent-контроллер имеет полностью независимые приемную и передающую ча­сти. Тактирование работы контроллера может производиться от внутреннего BRG-гене-ратора, или через внешние контакты, или через блок DPLL.

При передаче может быть выбран любой порядок битов в байте (или LSB-бит пер­вый, или MSB-бит первый) и факультативно добавленные при передаче и контролиро­ванные при приеме поля контрольной суммы CRC. Для проверки передаваемых данных может быть использована или 16- или 32-разрядная CRC-контрольная сумма. В ячейке CRC_P (табл. 5.73) хранится начальное значение счетчика CRC OxOOOOFFFF - для CRC16 и OxFFFFFFFF -для CRC32. Для счетчика CRC_C памяти параметров хранится констан­та, определяющая тип образующего полинома циклического кода OxOOOOFOBS - для CRC16 и OxDEBB20F3 - для CRC32. Выбор типа CRC контрольной суммы производится в бите TCRC регистра режима GSMR.

Таблица 5.73 Память параметров Transparent-протокола в микроконтроллере МРС860

Адрес

Название

Размер, бит

Назначение

SCC base+30 SCC base+34

CRC_P CRC_C

32 32

Начальное значение CRC-счетчика Константа CRC для приемника

Синхронизация Transparent-контроллера. Синхронизация приемника и передатчи­ка может выполняться двумя способами:

  1. при помощи синхросигналов в канале связи;

  2. при помощи внешних сигналов синхронизации.

Режим синхронизации устанавливается в битах SYNL в регистре GSMR (табл. 5.74).

600

ПОДДЕРЖКА ПРОТОКОЛОВ В КОММУНИКАЦИОННЫХ КОНТРОЛЛЕРАХ

Таблица 5.74