Serial Peripheral Interface (SPI). Последовательный Периферийный Интерфейс (SPI) модуль. Блок схема модуля SPI

Страницы работы

Фрагмент текста работы

Serial Peripheral Interface (SPI)

1. Введение

Последовательный Периферийный Интерфейс (SPI) модуль – это синхронный последовательный интерфейс, полезный для связи с периферийными устройствами или микроконтроллерами. Этими периферийными устройствами могут быть последовательные EEPROM, сдвиговые регистры, драйверы дисплея, A/D конвертеры, и т.д. SPI модуль совместимый с SPI интерфейсами фирмы Motorola и SIOP.

В зависимости от варианта dsPIC предлагается один или два SPI модуля на одном устройстве.

Модули, определяемые как SPI1 и SPI2, являются функционально идентичными. Модуль SPI1 доступен на всех устройствах, в то время как SPI2 модуль доступен во многих из более крупных (по количеству выводов) микроконтроллерах.

Примечание: В этом документе, модули SPI упоминаются вместе как SPIx, или отдельно как SPI1 и SPI2. Специальные функциональные регистры будут точно также упоминаться. Например, SPIxCON относится и к модулю SPI1 и к модулю SPI2.

SPIx последовательный интерфейс имеет четырех вывода:

• SDIx: Последовательный Ввод данных

• SDOx: Последовательный Вывод данных

• SCKx: Вход тактовых импульсов или выход тактовых импульсов

• SSx/FSYNCx: Управляемый низким уровнем сигнала выбор ведомого или вход/выход Структуры синхронизирующего импульса

SPIx модуль может быть сконфигурирован, чтобы использовать  2, 3 или 4 вывода. В режиме с 3 выводами, SSx не используется. В режиме с 2 выводами, ни SDOx, ни SSx не используются.

Рисунок 1. Блок схема модуля SPI

2. Регистры SPI

SPIxSTAT: Регистр статуса и управления модулем SPIx

Регистр статуса и управления модулем SPIx  (SPIxSTAT)  отображает различные состояния, такие как переполнение приёмника, передающий буфер полон и принимающий буфер полон. Этот регистр определяет как будет работать модуль SPI в режиме Idle. Этот регистр также содержит бит, который активизирует и отключает модуль.

SPIxCON1: Регистр управления модулем SPIx

Регистр управления модулем SPIx (SPIxCON1) определяет предделитель тактов,  режим Master/Slave,

Связь слово или байт, полярность тактов.

SPIxCON2: Регистр управления модулем SPIx

Регистр управления модулем SPIx  (SPIxCON2) разрешают или запрещают Framed SPI операцию. Этот регистр также определяет направление импульса синхронизации, полярность и фронт выборки.

SPIxBUF: Буфер приёмника и передатчика модуля SPIx

Буфер приёмника и передатчика модуля SPIx (SPIxBUF) – это фактически два регистра разделённых внутри: Переданный Буфер (SPIxTXB) и Получающийся Буфер (SPIxRXB). Эти два однонаправленные, 16-разрядные регистры совместно используют адрес SFR SPIxBUF. Если пользовательское приложение желает записать данные в передающий регистр, то внутренние данные пишутся в регистр  SPIxTXB.

Точно так же, если пользовательское приложение читает полученные данные из  SPIxBUF, то в программе эти данные нужно читать с регистра SPIxRXB.

Методика двойной буферизации операции приёма/передачи позволяют непрерывно передавать данные на заднем плане. Передача и прием происходят одновременно.

Кроме того, есть внутренний 16-разрядный сдвиговый регистр (SPIxSR), который не отображается в памяти. Он перемещает данные из/в SPI порт.

SPIxSTAT: Регистр статуса и управления модулем SPIx

bit 15 SPIEN: бит активизации модуля SPIx

1 = Активизировать модуль и настроить выводы SCKx, SDOx, SDIx и SSx как выводы модуля SPI

0 = Выключить модуль

bit 14 Не используется: Читается как ‘0’

bit 13 SPISIDL: Прекратить работу в  Idle режиме

1 = Прекратить операции модулем когда микроконтроллере входит в режим Idle

0 = Модуль должен продолжать операции когда микроконтроллер в Idle режиме

bit 12-7 Не используется: Читается как ‘0’

bit 6 SPIROV: Бит переполнения буфера приёмника

1 = Был получен новый байт/слово и он был отброшен. Пользовательская программа предварительно не прочитала информацию из регистра SPIxBUF

0 = Переполнение не зафиксировано

bit 5-2 Не используется: Читается как ‘0’

бит 1SPITBF: Бит указывающий на то, что передающий буфер модуля SPIx полон

1 = новое значение записывать нельзя, буфер передатчика SPIxTXB

Похожие материалы

Информация о работе