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

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

Работа с HDLC-протоколом. Распределение памяти при работе с этим протоколом приведено в табл. 5.60.

Переменные TBASE и RBASE задают смещение стартового адреса таблицы буфер­ных дескрипторов конкретного логического канала относительно базового адреса 64-Кбай-тной таблицы буферных дескрипторов всех логических каналов, который задан в ячейке MCBASE памяти общих параметров.

Переменные TBPTR и RBPTR задают смещение адреса текущего буферного деск­риптора обрабатываемого логического канала относительно базового адреса 64-Кбайт-ной таблицы буферных дескрипторов всех логических каналов, который задан в ячейке MCBASE памяти общих параметров. Например, реальный адрес текущего буферного дескриптора передатчика вычисляется как MCBASE+TBPTR.

Таблица 5.60 Канал-ориентированная память параметров при работе с HDLC-протоколом

Адрес

Название

Размер, бит

Описание

DPBASE+00

TBASE

16

Базовый адрес таблицы Тх BD

DPBASE+02

CHAMR

16

Регистр режима при работе с HDLC-протоколом

DPBASE+04

TSTATE

32

Внутреннее Тх-состояние

DPBASE+08

32

Указатель на ячейку памяти в Тх-буфере канала

DPBASE+OC

TBPTR

16

Указатель на ячейку памяти дескриптора Тх BD

DPBASE+OE

16

Счетчик переданных из буфера Тх байт данных

DPBASE+10

TUPACK

32

Временная переменная Тх

DPBASE+14

ZISTATE

32

Состояние автомата zero-insertion

DPBASE+18

TCRC

32

Текущее значение CRC-суммы при передаче кадра

DPBASE+1C

INTMSK

16

Маска флагов прерываний каналов

DPBASE-HE

BDflag

16

Временная переменная

DPBASE+20

RBASE

16

Базовый адрес таблицы Rx BD

DPBASE+22

MFLR

16

Максимальная длина кадра данных

DPBASE+24

RSTATE

32

Внутреннее Rx-состояние

DPBASE+28

32

Указатель на ячейку памяти в Rx-буфере канала

DPBASE+2C

RBPTR

16

Указатель на ячейку памяти дескриптора Rx BD

DPBASE+2E

16

Счетчик принятых в буфер Rx байт данных

DPBASE+30

RPACK

32

Временная переменная Тх

DPBASE+34

ZDSTATE

32

Состояние автомата zero-deletion

DPBASE+38

RCRC

32

Текущее значение CRC-суммы при приеме кадра

DPBASE+3C

MAX_cnt

16

Вычитающий счетчик максимальной длины

DPBASE+3E

TMP_MB

16

Временная переменная

Примечание. Переменные в ячейках TBASE, RBASE, CHAMR, TSTATE, RSTATE, TBPTR, RBPTR, ZISTATE := 0x00000100, ZDSTATE := 0x00000080 при работе с HDLC протоколом, INTMSK и MFLR инициализируются пользователем до начала работы с SCC-контроллером. Программисту не реко-

мендуется изменять содержимое остальных ячеек, так как они используются контроллером.

572

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

Каждый SCC-канал имеет переменную MFLR, определяющую максимальное число байт (максимум 64 Кбайт), которые могут передаваться в кадре. При приеме кадра, длина кото­рого больше MFLR, кадр будет отброшен, установлен бит ошибки LG = 1 в слове состояния текущего буферного дескриптора, буфер будет закрыт и будет выставлен запрос на преры­вание от событий RXF и RXB в регистре событий, если они не замаскированы.

Бит MODE в регистре режима CHAMR (рис. 5.92) определяет протокол, с которым работает выбранный логический канал. Если MODE = 0, то канал работает с протоколом Transparent, если MODE=1 - с HDLC-протоколом.

Бит IDLM определяет режим передачи символов IDLE (если бит IDLM = 1) в проме­жутках между передачей кадров данных. Если IDLM = 0, то между кадрами данных IOLE-символы не передаются. В промежутке между кадрами передатчик передает NOF+1 сим­волов флага, а затем передает следующий кадр данных. Если кадр еще не готов, то продолжается передача символов флага.

Бит ENT = 1 разрешает работу передатчика, и во временной канал будут передавать­ся данные согласно выбранному протоколу. Если бит ENT = 0, то передатчик выключен, и если канал подключен к временному слоту, то в этот временной канал будут переда­ваться «1». Следует отметить, что отсутствует бит разрешения работы приемника с QMC-протоколом, но для разрешения работы приемника необходимо инициализировать пе­ременные ZDSTATE и RSTATE в памяти параметров.

Если бит POL = 0, то коммуникационный процессор не контролирует значение бита готовности R (Ready) в слове состояния дескриптора буфера при передаче. Если бит POL = 1, то при передаче контролируется значение бита готовности буфера.

О 1 2 34567 8 9 10 11 12 13 14 15

MODE | 0

IDLM

ENT

-I-

— | POL | CRC

0 -

— | NOF

Рис. 5.92. Формат регистра режима CHAMR для QMC HDLC-контроллера

При работе с HDLC-протоколом бит CRC определяет тип контрольной суммы. Если бит CRC = 0, то используется 16-битная CCITT-CRC контрольная сумма для данного канала. Если бит CRC = 1, то используется 32-битная CCITT-CRC контрольная сумма.

Содержимое ячейки TSTATE определяет внутреннее состояние передатчика, а со­держимое ячейки RSTATE - внутреннее состояние приемника. Старший байт ячейки (рис. 5.93) содержит функциональные коды и бит Motorola/Intel. В битах АТЗ-АТ1 содер­жится код, который будет выставлен на внешних контактах функциональных кодов, что­бы идентифицировать тип доступа к памяти. Бит МОТ определяет порядок передачи байтов в длинных словах при обмене по сети. Если бит МОТ = 0, то используется порядок передачи little-endian, характерный для фирмы «Intel». Если бит МОТ = 1, то использует­ся порядок передачи big-endian, характерный для фирмы «Motorola». У МРС860МН ячей­ка TSTATE перед использованием канала должна быть проинициализирована кодом 0x30000000. Ячейка RSTATE перед началом работы с канала, при возникновении ошиб­ки или после получения команды STOP RX должна быть проинициализирована кодом 0x31000000 для МРС860МН. Эти ячейки используются также при отладке системы. Если бит 8 32-разрядной ячейки xSTATE равен 1, то в текущий момент времени кадр переда-

0

0

1

МОТ | АТ[1:3]

Рис. 5.93. Формат регистра TSTATE и RSTATE в памяти параметров QMC HDLC-протокола

573

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

012345 6 7 8 9 10 11 12 13 14 15

V [ W [ NID | IDL | | Номер канала | MRF | UN | RXF | BSY | TXB | RXB [

Рис. 5.94. Регистр событий канала в очереди прерываний для QMC HDLC-контроллера

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

J NID [

IDL 0 0 0 0 0 0 MRF UN RXF BSY TXB RXB

Рис. 5.95. Регистр маски INTMSK для QMC HDLC-контроллера

ется (или принимается). Если бит 9 равен 1 , то текущий буфер BD открыт, и из него чита­ются данные (или в него записываются данные). Если бит 1 2 в ячейке TSTATE равен 1 , то канал был проинициализирован и работает. Если бит 1 1 в ячейке RSTATE равен 1 , то прием остановлен. В младших 16 битах регистра RSTATE хранится слово состояния те­кущего BD.

Все события, которые могут возникать при работе каналов, регистрируются в цикли­ческой очереди прерываний, в регистре событий (рис. 5.94). Для всех логических кана­лов существует один регистр маски. В регистре INTMSK (рис. 5.95) пользователь может при желании замаскировать прерывание от некоторых событий, если сбросит в «О» бит, соответствующий выбранному событию.

Работа с Transparent-протоколом. В табл. 5.61 приведено распределение канал-ориентированной памяти параметров при работе с протоколом Transparent.

Переменные TBASE и RBASE, TBPTR и RBPTR, ZISTATE и ZDSTATE, TSTATE и RSTATE имеют назначение, аналогичное одноименным переменным для QMC HDLC-протокола.

Бит MODE в регистре CHAMR (рис. 5.96) определяет протокол, с которым работает выбранный логический канал. Если MODE = 0, то канал работает с протоколом Transparent, если MODE = 1 - с HDLC-протоколом.

Бит RD определяет порядок передачи битов в байте. Если бит RD = 0, то в канал передается/принимается первым LSB-бит. Если бит RD = 1 , то первым передается или принимается MSB-бит.

Бит ENT = 1 разрешает работу передатчика, и во временной канал будут передавать­ся данные согласно выбранному протоколу. Если бит ЕМТ=0, то передатчик выключен, и если канал подключен к временному слоту, то в этот временной канал будут передавать­ся «1». Следует отметить, что отсутствует бит разрешения работы приемника с QMC-протоколом, но для разрешения работы приемника необходимо инициализировать пе­ременные ZDSTATE и RSTATE в памяти параметров.

Если бит POL = 0, то коммуникационный процессор не контролирует значение бита готовности R (Ready) в слове состояния дескриптора буфера при передаче. Если бит POL = 1 , то при передаче контролируется значение бита готовности буфера.

Все события, которые могут возникать при работе каналов, регистрируются в цикли­ческой очереди прерываний, в регистре событий (рис. 5.97). Для всех логических кана­лов существует один регистр маски. В регистре INTMSK (рис. 5.98) пользователь может при желании замаскировать прерывание от некоторых событий, если сбросит в «О» бит, соответствующий выбранному событию.

О 123 4 5 6 7 8 9 10 11 12 13 14 15

| МОРЕ | RD [ 1 [ ENT | | SYNC | [ POL [ р|о| | |о|о|о|р|

Рис. 5.96. Формат регистра режима CHAMR для QMC-Transparent-контроллера 574

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

14

15

13

10 11 12

V

W

Номер канала | —

UN

-|bsy

тхв

RXB

Рис. 5.97. Регистр событий канала в очереди прерываний для QMC-Transparent-

контроллера

Бит SYNC в регистре режима CHAMR предназначен для выбора режима контроля за синхронизацией при работе с протоколом QMC Transparent. Если бит SYNC равен 0, то первый байт данных передается или принимается из первого доступного для данного логического канала временного слота. Если бит SYNC = 1, то используется алгоритм синхронизации одиночного временного слота, заданный в ячейке TRNSYNC памяти па­раметров. Если сообщение передается в нескольких временных слотах, то необходимо знать, когда передается первый байт сообщения. Регистр TRNSYNC состоит из двух ча­стей. Старший байт контролирует первый временной слот при приеме, а младший байт -синхронизацию при передаче.

Таблица 5.61 Канал-ориентированная память параметров при работе с протоколом Transparent

Адрес

Название

Размер, бит

Описание

DPBASE+00

TBASE

16

Базовый адрес таблицы Тх BD

DPBASE+02

CHAMR

16

Регистр режима для протокола Transparent

DPBASE+04

TSTATE

32

Внутреннее Тх-состояние

DPBASE+08

32

Указатель на ячейку памяти в Тх-буфере канала

DPBASE+OC

TBPTR

16

Указатель на ячейку памяти дескриптора Тх BD

DPBASE+OE

16

Счетчик переданных из буфера Тх байт данных

DPBASE+10

TUPACK

32

Временная переменная Тх

DPBASE+14

ZISTATE

32

Состояние автомата zero-insertion

DPBASE+18

32

Резервировано

DPBASE+1C

INTMSK

16

Маска флагов прерываний каналов

DPBASE+1E

Bdflag

16

Временная переменная

DPBASE+20

RBASE

16

Базовый адрес таблицы Rx BD

DPBASE+22

TMRBLR

16

Максимальная длина буфера приема

DPBASE+24

RSTATE

32

Внутреннее Rx-состояние

DPBASE+28

32

Указатель на ячейку памяти в Rx-буфере канала

DPBASE+2C

RBPTR

16

Указатель на ячейку памяти дескриптора Rx BD

DPBASE+2E

16

Счетчик принятых в буфер Rx байт данных

DPBASE+30

RPACK

32

Временная переменная Тх

DPBASE+34

ZDSTATE

32

Состояние автомата zero-deletion

DPBASE+38

32

Зарезервировано

DPBASE+3C

TRNSYNC

16

Регистр контроля синхронизации

DPBASE+3E

16

Зарезервировано

Примечание. Переменные в ячейках TBASE, RBASE, CHAMR, TSTATE, RSTATE, TBPTR, RBPTR, ZISTATE := 0x00000100, ZDSTATE := 0x18000080 при работе с Transparent-протоколом, INTMSK, TMRBLR и TRNSYNC инициализируются пользователем до начала работы с SCC-конт-роллером. Содержимое остальных ячеек изменять не рекомендуется, так как они используются

контроллером.

575

КОММУНИКАЦИОННЫЕ МИКРОКОНТРОЛЛЕРЫ И СИСТЕМЫ НА ИХ ОСНОВЕ 012 3 4 5 6 7 8 9 10 11 12 13 14 15

[ о | о | о | о [o[o[o|o|o[o|o[un|o| bsy [ тхв | rxb | Рис. 5.98. Регистр маски INTMSK для QMC-Transparent-контроллера

Команды QMC-контроллера. Для управления работой QMC-контроллера пользова- '

тель может применять стандартные команды управления работой RISC-контроллера. Команды записываются в регистр команд CR (рис. 5.99).

Основной набор команд представляет собой стандартные команды управления ра­ ботой коммуникационного модуля (табл. 5.62). Обратите внимание, что отсутствуют ко­ манды запуска (start) приема и передачи, эти функции выполняются через регистр общих I

режимов GSMR. |

i

Таблица 5.62 Основные команды управления работой QMS-каналов ввода/вывода

Команда и ее код QMC OPCODE. Описание команды. Действия контроллера при получении команды

STOP TRANSMIT 001 Команда обычно передается при выключении передатчика и приводит к оста­новке передачи на выбранном канале и сбросу бита POL в регистре CHAMR. При получении этой команды во время передачи кадра контроллер выдает в канал ABORT символ (Ох7Е) и далее про­должает передавать или символы флага или символ(-ы), как это определено в бите IDLM. Указа­тель текущего буфера TBPTR не изменяется. Если команда получена в интервале между кадрами, то контроллер начинает передавать или символы флага или IDLE-символы. Для возобновления передачи необходимо установить бит POL := 1. После получения команды для деактивации канала необходимо сбросить бит V = 0 в TSA-таблице и бит ENT := 0 в регистре режима.

STOP RECEIVE 000 Команда обычно передается при выключении приемника и приводит к оста­новке приема на выбранном канале. Указатель текущего буфера RTBPTR не изменяется. Для во­зобновления приема необходимо проинициализировать переменные в ячейках ZDSTATE и RSTATE,. установив бит POL := 1. После получения команды для деактивации канала необходимо сбросить бит V = 0 в TSA-таблице и бит ENT := 0 в регистре режима.

О 12 34 5 6 7 8 9 10 11 12 13 14 15

[ RST | QMC OPCODE | 1 | 1 [ 1 | 0 [ 0 | CHNUM | | FLG |

Рис. 5.99. Формат регистра команд RISC-контроллера CR для QMC

Механизм обработки прерываний. При обработке прерываний используются ре­гистр событий SCC-канала (рис. 5.100), который работает с QMC-протоколом, и цикли­ческая таблица прерываний, к которой обращаются логические каналы при своей рабо­те. Напоминаем, что сброс битов в регистре событий производится записью в соответ­ствующий бит кода «1». При желании пользователь может замаскировать прерывание от отдельных событий, установив в «1» соответствующий бит в регистре маски SCCM.

Формат ячеек в таблице прерываний зависит от типа протокола, с которым работает канал, и был описан выше (см. рис. 5.94, 5.97). Переменная INTBASE указывает на рас­положение первой ячейки таблицы прерываний во внешней памяти контроллера. Пере­менная INTPTR указывает на текущую пустую ячейку в таблице, доступную для RISC-контроллера. Бит W = 1 (Wrap) в составе каждой ячейки отмечает последнюю ячейку таблицы прерываний. Таблица прерываний обрабатывается циклически - после обра­ботки последней ячейки RISC-контроллер перейдет к обработке первой ячейки таблицы и произойдет переназначение указателя INTPTR := INTBASE.

576