Home >Динамика отрасли>Динамика отрасли
Подробное объяснение протокола связи SPI

Индекс чтения


 

 Что такое СПИ?

Английское полное название SPI — Serial Peripheral Interface, как следует из названия, это последовательный периферийный интерфейс. SPI — это спецификация интерфейса синхронной последовательной связи, в основном используемая для связи на коротких расстояниях во встроенных системах. Интерфейс был разработан Motorola в середине 1980-х годов и с тех пор стал отраслевым стандартом.

Введение в SPI

SPI - это высокоскоростная, полнодуплексная, синхронная коммуникационная шина, и для нее требуется не более 4 проводов, что экономит контакты микросхемы.SPI в основном используется в EEPROM, FLASH, ADC, DAC и других микросхемах, поскольку а также цифровой Между процессором сигналов и декодером цифрового сигнала.

Устройства SPI обмениваются данными в полнодуплексном режиме, который представляет собой режим ведущий-ведомый между ведущим и одним или несколькими ведомыми. Хост отвечает за инициализацию фрейма.Этот фрейм передачи данных может использоваться как для операций чтения, так и для записи.Линия выбора чипа может выбрать один из нескольких ведомых для ответа на запрос хоста.

Интерфейс SPI определен в следующей таблице:

1

Из приведенной выше таблицы также видно, что при обмене данными между устройствами SPI линия данных должна быть MOSI подключена к MOSI, MISO подключена к MISO, а SCLK подключена к SCLK вместо обратного подключения. TX и RX, как последовательные порты. Когда имеется только одно ведомое устройство SPI, если ведомое устройство это позволяет, линия CS/SS может быть напрямую зафиксирована на низком уровне. Однако для таких микросхем, как MAX1242, которые должны запускаться по заднему фронту линии CS/SS, линия CC/SS должна быть подключена к хосту. Как показано на рисунке ниже, это режим соединения ведущий-ведомый.

2

Для нескольких ведомых устройств каждому ведомому требуется линия CS/SS для подключения к хосту, чтобы хост мог общаться с любым ведомым.

3

На следующем рисунке показан режим подключения одного ведущего и нескольких ведомых. Большинство ведомых устройств имеют логику с тремя состояниями, поэтому их сигнальная линия MISO переходит в состояние с высоким импедансом (электрически отключена), когда устройство не выбрано. Устройства без выхода с тремя состояниями нуждаются во внешнем буфере с тремя состояниями, чтобы совместно использовать шину SPI с другими ведомыми устройствами.

 

передача данных

В связи SPI ведущее устройство SPI отправляет ведомое устройство SPI ведомому устройству SPI через линию SCLK на частоте, поддерживаемой ведомым устройством.Это также означает, что ведомое устройство не может активно отправлять данные ведущему устройству.Или ведомое устройство устройство активно информирует хост о поступлении данных через порт ввода-вывода.

В каждом такте SPI будет выполняться полнодуплексная передача данных. Когда хост отправляет 1 бит по линии MOSI, ведомое устройство также отправляет 1 бит данных по линии MISO после его считывания. Это означает, что даже если имеет место только симплексная связь, эта последовательность связи сохраняется.

Передачи SPI обычно включают два регистра сдвига с заданным размером слова. Например, 8-битный регистр сдвига в ведущем и ведомом устройствах. Они соединены в топологии виртуального кольца, при этом данные обычно сначала выводятся из старшего разряда. По фронту тактового сигнала и ведущий, и ведомый сдвигают 1-битные данные и передают их друг другу по линии передачи. Когда приходит следующий фронт тактового сигнала, приемники обеих сторон производят выборку бита на линии передачи и устанавливают его как новый младший значащий бит сдвигового регистра. После того, как биты регистра сдвинуты наружу и внутрь, ведущий и ведомый обмениваются значениями регистров. Если необходимо подкачать больше данных, сдвиговый регистр перезагружается, и процесс повторяется. Передача может длиться любое количество тактов. Когда это будет сделано, хост перестанет переключать тактовый сигнал. Как показано на рисунке ниже, это схематическая диаграмма сдвигового регистра для взаимодействия между ведущим и ведомым.

4

Процесс связи на приведенном выше рисунке выглядит следующим образом:

1. Ведущее устройство SPI сначала устанавливает низкий уровень на линии SS или CS, чтобы сообщить подчиненному устройству SPI о начале связи.

2. Ведущее устройство отправляет тактовый сигнал SCLK, чтобы информировать подчиненное устройство о предстоящих операциях чтения и записи. Тактовый сигнал SCLK здесь определяется режимом SPI, активен ли он на высоком уровне или на низком уровне, который будет представлен позже.

3. Хост (мастер) записывает данные для отправки в область буфера отправки данных (память), область буфера проходит через сдвиговый регистр (0~7), а последовательный сдвиговый регистр сдвигает байт побитно через Сигнальная линия MOSI.Отправляется на ведомое устройство, и в то же время данные, полученные интерфейсом MISO, перемещаются в приемный буфер один за другим через регистр сдвига.

4. Ведомое устройство (Slave) также возвращает содержимое своего последовательного регистра сдвига (0~7) на главное устройство через сигнальную линию MISO. В то же время данные, отправленные хостом, принимаются через сигнальную линию MOSI, так что происходит обмен содержимым двух сдвиговых регистров.

 

4 рабочих режима связи SPI

Существует 4 различных режима работы в SPI-коммуникациях, и разные ведомые устройства могут быть установлены на определенный режим на заводе и не могут быть изменены. Но связь SPI должна быть в том же режиме, чтобы продолжить. Следовательно, нам следует настроить режим ведущего устройства SPI своими руками, то есть управлять режимом связи ведущего устройства SPI через CPOL (тактовая полярность) и CPHA (тактовая фаза), следующим образом:

Полярность тактового сигнала (CPOL) определяет уровень линии тактового сигнала SCLK в состоянии ожидания:

1. CPOL=0, то есть SCLK=0, что означает, что уровень линии тактового сигнала SCLK в состоянии ожидания низкий, поэтому активное состояние имеет высокий уровень.

2. CPOL=1, то есть SCLK=1, что означает, что уровень линии тактового сигнала SCLK высокий в состоянии ожидания, поэтому в активном состоянии низкий.

Фаза синхронизации (CPHA) определяет синхронизацию (т.е. фазу) битов данных относительно линии синхронизации:

1. CPHA=0, что означает, что выходной (выходной) терминал изменяет данные по заднему фронту предыдущего тактового цикла, а входной (входной) терминал захватывает данные по переднему фронту тактового цикла (или вскоре после этого). Выход остается действительным до заднего фронта текущего тактового цикла. Для первого тактового цикла первый бит данных должен появиться на линии MOSI до переднего фронта тактового сигнала. То есть цикл CPHA=0 включает в себя половину периода простоя и половину периода установки часов.

2. CPHA=1, что означает, что выходной (выходной) терминал изменяет данные по переднему фронту текущего тактового цикла, а входной (входной) терминал захватывает данные по заднему фронту (или вскоре после) тактового цикла. Выход остается действительным до переднего фронта следующего тактового цикла. В течение последнего тактового цикла ведомое устройство удерживает линию MISO активной до тех пор, пока не отключится сигнал выбора чипа. То есть цикл CHPA=1 включает в себя половину периода установки тактового сигнала и половину периода простоя тактового сигнала.

Примечание. Передний и задний фронты здесь означают первый и последний фронт в каждом цикле. Вообще говоря: когда часы являются положительными часами, нарастающий фронт линии часов является передним фронтом, а задний фронт часов является задним фронтом, и наоборот.

В следующей таблице показаны 4 режима связи SPI:

5

На следующем рисунке показана временная диаграмма полярности и фазы тактового сигнала. Красная линия представляет собой передний фронт часов, а синяя линия представляет собой задний фронт часов.

6

Преимущества и недостатки протокола SPI

Преимущество SPI заключается в том, что он имеет более высокую пропускную способность, чем I2C, не ограничен максимальной тактовой частотой, может реализовать потенциально высокоскоростной, чрезвычайно простой аппаратный интерфейс, а подтягивающие резисторы, используемые периферийными схемами, меньше, чем протокол I2C. , Это означает, что он имеет более низкое энергопотребление, чем I2C, источник синхронизации ведомого устройства поступает от хост-устройства, нет необходимости добавлять прецизионный генератор, ведомому устройству не нужен уникальный адрес, а количество используемых контактов значительно уменьшено. по сравнению с параллельным интерфейсом

Но в то же время есть определенные недостатки, такие как SPI не имеет внутриполосной адресации, при использовании нескольких ведомых устройств разных режимов, ведущее устройство будет повторно инициализироваться при переключении режимов, что замедлит доступ к ведомое устройство, а ведомое устройство SPI не имеет аппаратного управления потоком, может только задерживать приход следующего тактового цикла независимо через хост и может обмениваться данными только на коротких расстояниях. Но если SPI можно применять для того, чтобы избежать недостатков SPI, преимущества SPI делают его намного лучше других протоколов.


Recommend