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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

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

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

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

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

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.