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
Регистр | Режим | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
SPIC1 | Чтение | SPIE - | SPE | SPTIE | MSTR | CPOL | CPHA | SSOE | LSBFE |
Запись | |||||||||
Сброс | 0 | 0 | 0 | 0 | 0 | 0 | 01 | 0 |
Описание битов:
Имя бита | Описание | Символ в языке С |
---|---|---|
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
Регистр | Режим | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
SPIC2 | Чтение | 0 | 0 | 0 | MODFEN | BIDIRO | 0 | SPISWAI | SPCO |
Запись | — | — | — | — | |||||
Сброс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Описание битов:
Имя бита | Описание | Символ в языке С |
---|---|---|
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
Регистр | Режим | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
SPIS | Чтение | SPRF | 0 | SPTEF | MODF | 0 | 0 | 0 | 0 |
Запись | — | — | — | — | — | — | — | — | |
Сброс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Описание битов:
Имя бита | Описание | Символ в языке С |
---|---|---|
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
Регистр | Режим | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
SPID | Чтение | Чтение регистра SPID возвращает значение буфера приемника | |||||||
Запись | Запись в регистр SPID приводит к записи в буфер передатчика | ||||||||
Сброс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Запись данных в регистр SPID инициализирует начало передачи данных, если предыдущий сеанс передачи уже закончился. Чтение регистра возвращает последнее принятое значение.
11.1.5.5. Регистр скорости обмена SPIBR
В регистре SPIBR назначаются два коэффициента деления: SPPR и SPR. Частота импульсов синхронизации модуля SPI вычисляется по формуле:
.
Регистр | Режим | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
SPIBR | Чтение | 0 | SPPR2 | SPPR1 | SPPR0 | 0 | SPR2 | SPR1 | SPR0 |
Запись | — | — | |||||||
Сброс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Описание битов:
Имя бита | Описание | Символ в языке С |
---|---|---|
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 >>>