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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.