11.1.5. Регистры модуля SPI

(Руководство разработчика по микроконтроллерам семейства HCS08)

Для настройки модуля SPI используются 5 регистров специальных функций:

  • SPIC1 — первый регистр управления модуля SPI;
  • SPIC2 — второй регистр управления модуля SPI;
  • SPIS — регистр состояния модуля SPI;
  • SPID — регистр данных модуля SPI;
  • SPIBR — регистр скорости обмена модуля SPI.

В МК серий JM, LC и QE64/96/128 присутствуют 2 модуля SPI и, соответственно, по два регистра управления каждого типа. Например, первому регистру управления SPIC1 соответствует SPI1C1 в первом модуле SPI и SPI2C1 во втором модуле SPI.

11.1.5.1. Регистр управления SPIC1

РегистрРежимD7D6D5D4D3D2D1D0
SPIC1ЧтениеSPIE -SPESPTIEMSTRCPOLCPHASSOELSBFE
Запись
Сброс000000010

Описание битов:
Имя битаОписаниеСимвол в языке С
SPIEБит разрешения прерывания модуля SPI (по флагам SPRF и MODF):
0 — прерывания по запросу приемника запрещены;
1 — прерывания по запросу приемника разрешены.
Бит разрешает генерацию запроса на прерывание при установленных битах SPRF (буфер приемника полон) и MODF (ошибка режима).
bSPIE
SPEБит разрешения работы модуля SPI:
0 — контроллер SPI выключен;
1 — контроллер SPI включен.
Установка бита очищает буферы приема и передачи, устанавливает флаги в значения по умолчанию и очищает регистр данных.
bSPE
SPTIEБит разрешения прерывания по запросу передатчика модуля SPI (по флагу SPTEF):
0 — прерывания по запросу передатчика запрещены;
1 — прерывания по запросу передатчика разрешены.
Бит разрешает генерацию запроса на прерывание при установленном бите SPTEF (буфер передатчика пуст).
bSPTIE
MSTRБит режима работы контроллера:
0 — контроллер SPI работает в режиме ведомого (Slave);
1 — контроллер SPI работает в режиме ведущего (Master).
bMSTR
CPOLБит выбора полярности тактового сигнала SCK:
0 — ВЫСОКИЙ активный уровень тактового сигнала (неактивный уровень — 0);
1 — НИЗКИЙ активный уровень тактового сигнала (неактивный уровень — 1).
bCPOL
CPHAБит выбора фазы тактового сигнала:
0 — первый фронт импульсов тактирования формируется в середине первого интервала передачи данных;
1 — первый фронт импульсов тактирования формируется в начале первого интервала передачи данных.
bCPHA
SSOEБит выбора функции вывода SS, если модуль SPI работает в режиме ведущего (MSTR = 1) и выбрана опция использования линии SS в этом режиме (MODFEN = l):
0 — SS работает как вход для обнаружения коллизии доступа к общему ведомому;
1 — SS работает как выход выбора ведомого.
bSSOE
LSBFEБит направления сдвига:
0 — ВЫСОКИЙ активный уровень тактового сигнала SPI;
1 — НИЗКИЙ активный уровень тактового сигнала SPI.
bLSBFE

11.1.5.2. Регистр управления SPIС2

РегистрРежимD7D6D5D4D3D2D1D0
SPIC2Чтение000MODFENBIDIRO0SPISWAISPCO
Запись
Сброс00000000

Описание битов:
Имя битаОписаниеСимвол в языке С
MODFENЭтот бит определяет функцию линии SS при работе модуля SPI в режиме ведущего:
0 — линия SS не управляется от модуля SPI;
1 — линия SS используется модулем SPI. Логика ее работы определяется битом SSOE в регистре SPIC1.
bMODFEN
BIDIROEБит для определения направления передачи линии обмена данными при работе в однопроводном режиме:
0 — линия данных SPI настроена на ввод;
1 — линия данных SPI настроена на вывод.
Бит определяет направление передачи для линии MOSI/MOMI, если модуль SPI работает в режиме ведущего, и для линии MISO/SISO, если модуль SPI работает в режиме ведомого.
bBIDIROE
SPISWAIБит определяет, работает или не работает модуль SPI, когда МК находится в режиме ожидания Wait:
0 — модуль SPI продолжает работать в режиме ожидания;
1 — модуль SPI перестает тактироваться, т.е. не работает в режиме ожидания.
bSPISWAI
SPC0Бит разрешения работы в режиме однопроводного двунаправленного обмена:
0 — модуль SPI работает в обычном режиме, когда данные передаются и принимаются по разным линиям;
1 — модуль SPI работает в однопроводном режиме, когда данные передаются и принимаются по одной линии. В режиме ведомого устройства данные пересылаются по линии MISO/SISO, в режиме ведущего устройства — по линии MOSI/MOMI.
bSPC0

11.1.5.3. Регистр состояния SPIS

РегистрРежимD7D6D5D4D3D2D1D0
SPISЧтениеSPRF0SPTEFMODF0000
Запись
Сброс00000000

Описание битов:
Имя битаОписаниеСимвол в языке С
SPRFБит завершения приема байта данных.
Устанавливается в момент, когда принятые данные автоматически переписываются в регистр данных и становятся доступными для чтения по адресу SPID.
Бит SPRF генерирует запрос на прерывание, если бит SPIE установлен.
Бит SPRF сбрасывается в 0 автоматически при выполнении последовательности из двух операций: сначала прочитать регистр состояния SPIS при установленном бите SPRF, а затем прочитать байт принятых данных из регистра SPID.
bSPRF
SPTEFБит готовности буфера передатчика к приему новых данных:
0 — буфер передатчика не пустой, записывать в него нельзя;
1 — буфер передатчика пуст, можно записывать новые данные в SPID.
Бит SPTEF генерирует запрос на прерывание, если бит SPTIE установлен.
Бит SPTE сбрасывается автоматически в 0 при выполнении последовательности из двух операций: сначала прочитать регистр состояния SPIS при установленном бите SPTEF, а затем записать данные в регистр SPID.
bSPTEF
MODFФлаг ошибки (коллизии) доступа двух ведущих к одному ведомому:
0 — ошибки доступа нет;
1 — ошибка доступа произошла.
Этот флаг может установиться, только если модуль SPI работает в режиме ведущего и назначен режим MODFEN = 1 и SSOE = 0, иначе бит MODF никогда не установится.
Флаг генерирует запросы на прерывание, если бит SPIE установлен.
Сбрасывается в 0 при выполнении последовательности из двух операций: сначала прочитать регистр состояния SPIS при установленном бите MODF, затем записать в регистр управления SPIC1.
bMODF

11.1.5.4. Регистр данных SPID

РегистрРежимD7D6D5D4D3D2D1D0
SPIDЧтениеЧтение регистра SPID возвращает значение буфера приемника
ЗаписьЗапись в регистр SPID приводит к записи в буфер передатчика
Сброс00000000

Запись данных в регистр SPID инициализирует начало передачи данных, если предыдущий сеанс передачи уже закончился. Чтение регистра возвращает последнее принятое значение.

11.1.5.5. Регистр скорости обмена SPIBR

В регистре SPIBR назначаются два коэффициента деления: SPPR и SPR. Частота импульсов синхронизации модуля SPI вычисляется по формуле:

.

РегистрРежимD7D6D5D4D3D2D1D0
SPIBRЧтение0SPPR2SPPR1SPPR00SPR2SPR1SPR0
Запись
Сброс00000000

Описание битов:
Имя битаОписаниеСимвол в языке С
SPPR2...SPPR0Битовое поле SPPR назначает первый коэффициент деления модуля SPI:
000 — 1;
001 — 2;
010 — 3;
011 — 4;
100 — 5;
101 — 6;
110 — 7;
111 — 8.

SPI_PRE1
SPI_PRE2
SPI_PRE3
SPI_PRE4
SPI_PRE5
SPI_PRE6
SPI_PRE7
SPI_PRE8
SPR2...SPR0Битовое поле SPR назначает второй коэффициент деления модуля SPI:
000 — 2;
001 — 4;
010 — 8;
011 — 16;
100 — 32;
101 — 64
110 — 128;
111 — 256.

SPI_DIV2
SPI_DIV4
SPI_DIV8
SPI_DIV16
SPI_DIV32
SPI_DIV64
SPI_DIV128
SPI_DIV256

Электронные компоненты Freescale >>>
Подробнее о компании Freescale >>>