Блок сдвига. Содержит регистр данных SPIDR и схему управления направлением сдвига. В зависимости от значения бита LSBFE можно задать желаемое направление сдвига данных путем несложной коммутации (см. рис. 5.1).
Блок прерываний. Содержит регистр SPISR (SPI Status Register) (таблица 5.3) и схему контроля за статусными битами этого регистра. Необходимо заметить, что из блока SPI выходит всего одна линия прерывания. Это значит, что при сработке прерывания необходимо проверить статусные биты, после чего решить, какую подпрограмму обработки выполнить.
Таблица 5.3 - Назначение битов регистра SPISR
SPI Status Register |
||||||||
Номер бита |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Название |
SPIF |
- |
SPTEF |
MODF |
- |
- |
- |
- |
Значение по умолчанию |
0 |
- |
1 |
0 |
- |
- |
- |
- |
SPIF – SPI Interrupt Flag – флаг указывает на окончание приема данных в SPIDR.
SPIF=0 – данные приняты в SPIDR;
SPIF=1 – данные еще не приняты.
SPTEF – SPI Transmit Enable Flag – флаг указывает можно ли поместить данные в регистр передачи/приема SPIDR.
SPTEF=0 – поместить данные в SPIDR нельзя, так как он не пуст;
SPTEF=1 – регистр SPIDR готов для помещения в него данных.
MODF – Mode Fault Flag – флаг устанавливается в 1, если SPI сконфигурирован как ведущий и вывод SS изменил свое состояние под влиянием извне.
Блок управления портом приема/передачи. Блок представляет собой устройство связующее внешние выводы MOSI, MISO, SCK, SS с внутренней логикой системы SPI.
Инициализация системы SPI сводится к установке регистров. В таблице 5.4 показана конфигурация регистров SPI для работы MC9S12NE64 c датчиком FPC1010.
Таблица 5.4 – Конфигурация регистров управления SPI
SPI Control Register 1 |
|||||||||||||||||||
Номер бита |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|||||||||||
Название |
SPIE |
SPE |
SPTIE |
MSTR |
CPOL |
CPHA |
SSOE |
LSBFE |
|||||||||||
Значение |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
|||||||||||
HEX- представление значений. |
0x52 |
||||||||||||||||||
SPI Control Register 2 |
|||||||||||||||||||
Номер бита |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|||||||||||
Название |
- |
- |
- |
MODFEN |
BIDIROE |
- |
SPISWAI |
SPCO |
|||||||||||
Значение |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
|||||||||||
HEX- представление значений. |
0x10 |
||||||||||||||||||
SPI Baud Rate Register |
|||||||||||||||||||
Номер бита |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|||||||||||
Название |
- |
SPPR2 |
SPPR1 |
SPPR0 |
- |
SPR2 |
SPR1 |
SPR0 |
|||||||||||
Значение |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
|||||||||||
HEX- представление значений. |
0x02 |
||||||||||||||||||
5.2 Алгоритм работы SPI
Принцип работы системы SPI достаточно прост. Предполагается, что существует ведущее и ведомое устройство. Ведущее устройство обеспечивает синхронизацию процесса передачи данных и управляет ведомым устройством посредство вывода SS, активируя его при SS=0. На рисунке 5.2 показано, каким образом соединяются два устройства с помощью интерфейса SPI. Основой системы SPI является регистр сдвига SPIDR, в который помещаются данные для последующей отправки. Этот же регистр позволяет принимать данные. Принцип передачи заключается в кольцевой схеме соединения регистров сдвига. Например, данные выходящие из SPIDR ведущего устройства, вытесняют данные с SPIDR ведомого, в это же время вытесненные данные принимаются ведущим. Наглядно это представлено на рисунке 5.3. Временная диаграмма процесса передачи показана на рисунке 5.4.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.