Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KOMAROV.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.32 Mб
Скачать

1.12.2. Программирование sport

Для программиста SPORT представляется двумя группами регистров: конфигурационными и данных. Конфигурационные регистры располагаются в ПД и служат для задания режима работы SPORT. Перед первым использованием порта они должны быть обязательно проинициализированы. Регистры данных (RX и TX) используются для приема/пере­да­чи данных через порт.

Адреса и функциональное назначение конфигурационных регистров приведены в табл. 1.13.

Таблица 1.13

Функциональное назначение конфигурационных регистров

Адрес

Назначение

0x3FFA

Разрешение многоканального приема слова SPORT0 (31-16)

0x3FF9

Разрешение многоканального приема слова SPORT0 (15-0)

0x3FF8

Разрешение многоканальной передачи слова SPORT0 (31-16)

0x3FF7

Разрешение многоканальной передачи слова SPORT0 (15-0)

0x3FF6

Регистр управления SPORT0: управление многоканальным

режимом, выбор источника битовой синхронизации, управление фреймовой синхронизацией, выбор длины слова данных

0x3FF5

Делитель частоты битовой синхронизации SPORT0

0x3FF4

Делитель частоты приемного фрейма SPORT0

0x3FF3

Регистр управления автобуферизацией SPORT0

0x3FF2

Регистр управления SPORT1: значение выходного флага, выбор источника битовой синхронизации, управление фреймовой синхронизацией, режим сжатия данных, выбор длины слова данных

0x3FF1

Делитель частоты битовой синхронизации SPORT1

0x3FF0

Делитель частоты приемного фрейма SPORT1

0x3FЕF

Регистр управления автобуферизацией SPORT1

Работа с регистрами данных проста. Например, для выдачи содержимого регистра АХ0 через SPORT1 достаточно написать ТХ1 = АХ0;. А для считывания принятых данных из SPORT0 – AY0 = RX0;. Обычно эта пересылка осуществляется в обработчике прерывания по приему последовательного порта.

Перед первым использованием последовательных портов кроме регистров, упомянутых в табл. 1.13, необходимо проинициализировать биты 12-10 регистра управления системой System Control Register (см. п. П1.1), расположенного по адресу 0x3FFF. Бит 12 разрешает работу SPORT0, а бит 11 – SPORT1, если они установлены. После сброса процессора эти биты обнулены, поэтому для работы с соответствующими последовательными портами они должны быть программно установлены.

Бит 10 регистра управления системой определяет конфигурацию SPORT1. Если бит 10 установлен, то SPORT1 работает в режиме последовательного порта, в противном случае – в альтернативном режиме в соответствии с табл. 1.14.

Таблица 1.14.

Альтернативная конфигурация SPORT1

Имя контакта

Альтернативное имя

Альтернативная функция

RFS1

IRQ0#

Внешнее прерывание 0

TFS1

IRQ1#

Внешнее прерывание 1

DR1

FI

Входной флаг

DT1

FO

Выходной флаг

SCLK1

SCLK1

Та же самая

Источник битовой синхронизации (внутренний или внешний) SPORT0 и SPORT1 может быть выбран с помощью бита 14 (ISCLK) регистров управления соответственно SPORT0 и SPORT1 (см. пп. П1.4, П1.6).

Если бит ISCLK установлен, то процессор генерирует собственный сигнал SCLK, в противном случае – использует внешний сигнал SCLK. Очевидно, что выход SCLK двунаправленный. После сброса процессора ISCLK = 0, поэтому после сброса процессора оба порта работают в режиме внешнего сигнала SCLK.

Частота внешнего сигнала битовой синхронизации может иметь значение до Fclkout, где Fclkout – частота синхронизации процессора (частота сигнала на выходе CLKOUT (см. рис. 1.1) процессора). Частота внутреннего сигнала битовой синхронизации не может иметь значение более Fclkout/2 и устанавливается с помощью регистров SCLKDIV (0x3FF5 для SPORT0 и 0x3FF1 для SPORT1, см. табл. 1.13):

Fsclk = Fclkout / (2 * (SCLKDIV + 1)) (1.1)

где: Fsclk - частота битовой синхронизации (частота сигнала на выходе SCLK процессора), SCLKDIV - содержимое соответствующих регистров.

Формула (1.1) позволяет определить делитель частоты SCLKDIV для достижения необходимой скорости обмена данными (частоты битовой синхронизации). Например, максимальная частота обмена имеет место при SCLKDIV = 0 и равна Fclkout/2. Формула (1.1) справедлива и для случая, когда SPORT1 используется в альтернативном режиме, поскольку функция выхода SCLK1 при этом не изменяется (см. табл. 1.14).

Длину посылки можно устанавливать независимо для каждого последовательного порта с помощь битовых полей SLEN (Serial Length – длина последовательных данных) регистров управления SPORT0 и SPORT1 (см. пп. П1.4, П1.6). Битовые поля SLEN занимают биты 3-0 соответствующих регистров управления.

Поля занимают четыре бита, поэтому можно задать длину посылки в пределах 16-3 битов. Если длина посылки меньше 16 бит, то посылка располагается в младших битах регистров данных последовательных портов.

Фреймовая синхронизация используется для обозначения начала каждого передаваемого слова. Последовательные порты множеством способов и независимо (при приеме и передаче) могут управлять сигналами фреймовой синхронизации. Все фреймовые сигналы изменяют состояния по срезу импульсов битовой синхронизации (SCLK).

Тип фреймовой синхронизации определяется битами 13 (RFSR) и 11 (TFSR) регистров управления портами (см. пп. П1.4, П1.6). Если RFSR = 0, то RFS требуется только для первого слова фрейма данных (фреймовая при приеме синхронизация отсутствует), в противном случае RFS требуется для каждого слова фрейма данных. Если TFSR = 0, то TFS требуется только для первого слова фрейма данных (фреймовая синхронизация пр передаче отсутствует), в противном случае TFS требуется для каждого слова фрейма данных.

После сброса процессора RFSR = 0 и TFSR = 0, поэтому связь в обоих направлениях осуществляется без фреймовой синхронизации. Для ее инициализации необходимо программно установить биты RFSR и/или TFSR.

Источник фреймовой синхронизации определяется битами 9 (ITFS) и 8 (IRFS) регистров управления портами (см. пп. П1.4, П1.6). Если ITFS = 0, то используется внешний сигнал TFS, в противном случае сигнал TFS является внутренним. Если IRFS = 0, то используется внешний сигнал RFS, в противном случае сигнал RFS является внутренним.

Если используются внешние фреймовые сигналы, то RFS и TFS являются входами и внешнее устройство управляет передачей и приемом данных. Для порта это означает, что перед выдачей в канал данных он должен дождаться сигнала TFS, а перед приемом – сигнала RFS.

Если фреймовые сигналы формируются портом, то RFS и TFS являются выходами и временные параметры обмена определяются процессором. В этом случае сигнал TFS формируется при загрузке любого регистра передаваемых данных ТХ0 или ТХ1. Сигнал RFS формируется периодически в соответствии с содержимым регистра делителя частоты приемного фрейма RFSDIV (0x3FF4 для SPORT0 и 0x3FF0 для SPORT1, см. табл. 1.13).

Содержимое RFSDIV трактуется портом как число импульсов SCLK (уменьшенное на единицу), между двумя импульсами RFS. Например, для того чтобы импульс RFS выдавался на каждый 256-ой импульс SCLK необходимо в RFSDIV записать число 255. Значение RFSDIV + 1 не должно быть меньше SLEN. После получения импульса RFS внешнее устройство должно выдать слово данных.

Следует отметить, что фреймовые сигналы формируются даже тогда, когда сигнал SCLK является внешним. Это дает возможность для различных применений делить частоту входной синхропоследовательности. Кро­ме этого, для обеспечения одновременной передачи и приема данных можно использовать один фреймовый сигнал. Для этого необходимо подать выходной сигнал RFS на вход TFS, запрограммированный на прием внешнего сигнала синхронизации.

Последовательные порты могут работать в нормальном или альтернативном фреймовых режимах. В нормальном режиме фреймовый сигнал проверяется на срезе SCLK. Если фреймовый сигнал распознан, то принимаемые данные защелкиваются на срезе SCLK, начиная со следующего импульса, а выдаваемые данные появляются после фронта SCLK, также начиная со следующего импульса. Далее фреймовые сигналы не проверяются до полного приема или полной передачи слова данных. Если передача/прием слов непрерывны, т.е. за последним битом предыдущего слова следует первый бит следующего слова, то фреймовый сигнал формируется во время передачи последнего бита предыдущего слова.

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

Выбор фреймового режима определяется значениями битов ширины фреймовых сигналов – RFSW (RFS Width - ширина RFS) и TFSW (TFS Width – ширина TFS). RFSW располагается в бите 12, а TFSW – в бите 10 регистров управления портами (см. пп. П1.4, П1.6). Причем нулевое значение этих битов определяет нормальный режим, а единичное – альтернативный. После сброса процессора все эти биты обнулены, что создает нормальный фреймовый режим для приема и передачи.

Программно можно также выбрать уровни активности фреймовых сигналов. Для этого необходимо определить биты инверсии фреймовых сигналов – INVTFS (INVerse TFS) и INVRFS (INVerse RFS). INVTFS располагается в бите 7, а INVRFS – в бите 6 регистров управления портами (см. пп. П1.4, П1.6). Причем нулевое значение этих битов определяет высокий уровень активных фреймовых сигналов, а единичное – низкий. После сброса процессора все эти биты обнулены, что устанавливает высокий уровень активных фреймовых сигналов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]