Последовательный периферийный интерфейс - Serial Peripheral Interface - Wikipedia

Автобус SPI
ТипПоследовательная связь автобус
ДизайнерMotorola
Разработан1979; 41 год назад (1979)
ПротоколСерийный, полнодуплексный
От одного ведущего к одному ведомому: пример базовой шины SPI

В Последовательный периферийный интерфейс (SPI) это синхронный последовательная связь спецификация интерфейса, используемого для связи на короткие расстояния, в основном в встроенные системы. Интерфейс разработан Motorola в середине 80-х и стал де-факто стандарт. Типичные приложения включают Secure Digital карты и жидкокристаллические дисплеи.

Устройства SPI обмениваются данными в полный дуплекс режим с использованием господин-раб архитектура с единственным мастером. Главное устройство является источником Рамка для чтения и письма. Поддержка нескольких ведомых устройств осуществляется путем выбора с помощью индивидуальных выбор раба (SS), иногда называемые линиями выбора микросхемы (CS).

Иногда SPI называют четырехпроводной последовательная шина, в отличие от три-, два-, и однопроводный серийные автобусы. SPI можно точно описать как синхронный последовательный интерфейс,[1] но он отличается от Синхронный последовательный интерфейс (SSI), который также является протоколом четырехпроводной синхронной последовательной связи. Протокол SSI использует дифференциальная сигнализация и предоставляет только один симплексная связь канал. SPI - это связь одного ведущего и нескольких ведомых устройств.

Интерфейс

Шина SPI определяет четыре логических сигнала:

  • SCLK: последовательные часы (вывод от мастера)
  • MOSI: Master Out Slave In (вывод данных от мастера)
  • MISO: Master In Slave Out (вывод данных из ведомого)
  • SS: Slave Select (часто активный минимум, вывод из мастера)

MOSI на ведущем устройстве подключается к MOSI на ведомом устройстве. MISO на ведущем устройстве подключается к MISO на ведомом устройстве. Slave Select имеет те же функции, что и выбор чипа и используется вместо концепции адресации.

Примечание: на ведомом устройстве MOSI может быть помечен как SDI (Slave Data In), а MISO может быть помечен как SDO (Slave Data Out)

Приведенные выше имена сигналов можно использовать для однозначной маркировки выводов как ведущего, так и ведомого устройства, а также сигнальных линий между ними, и они являются наиболее распространенными в современных продуктах. Имена контактов всегда пишутся с заглавной буквы, например «Выбор ведомого», а не «Выбор ведомого».

У более старых продуктов могут быть нестандартные имена контактов SPI:

Последовательные часы:

  • SCK

Главный выход → подчиненный вход (MOSI):

  • SIMO, MTSR - соответствуют MOSI как на главном, так и на подчиненном устройстве, подключаются друг к другу
  • SDI, DI, DIN, SI - на ведомых устройствах; подключается к MOSI на главном устройстве или к соединениям ниже
  • SDO, DO, DOUT, SO - на ведущих устройствах; подключается к MOSI на ведомом устройстве или к вышеуказанным соединениям

Главный вход ← подчиненный выход (MISO):

  • SOMI, MRST - соответствуют MISO как на главном, так и на подчиненном устройстве, подключаются друг к другу
  • SDO, DO, DOUT, SO - на ведомых устройствах; подключается к MISO на главном устройстве или к подключениям ниже
  • SDI, DI, DIN, SI - на ведущих устройствах; подключается к MISO на ведомом устройстве или к указанным выше соединениям

Выбор ведомого:

  • SS, SS, SSEL, nSS, / SS, SS # (выбор ведомого)
  • CS, CS (выбор чипа)
  • CSN (выбор / включение чипа)
  • CE (включение чипа)

Операция

Шина SPI может работать как с одним ведущим устройством, так и с одним или несколькими ведомыми устройствами.

Если используется одно ведомое устройство, вывод SS май быть привязанным к низкий логический уровень если раб позволяет это. Некоторые рабы требуют падения край сигнала выбора микросхемы, чтобы инициировать действие. Примером может служить Максим MAX1242 АЦП, который начинает преобразование при переходе от высокого к низкому. При наличии нескольких ведомых устройств для каждого ведомого устройства от ведущего требуется независимый сигнал SS.

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

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

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

Чтобы начать обмен данными, мастер шины настраивает часы, используя частоту, поддерживаемую ведомым устройством, обычно до нескольких МГц. Затем мастер выбирает подчиненное устройство с логическим уровнем 0 в строке выбора. Если требуется период ожидания, например, для аналого-цифрового преобразования, ведущее устройство должно выждать, по крайней мере, этот период времени, прежде чем выдавать тактовые циклы.

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

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

Передачи часто состоят из восьмибитных слов. Однако распространены и другие размеры слова, например, шестнадцатибитные слова для контроллеров сенсорного экрана или аудиокодеков, таких как TSC2101 by Инструменты Техаса, или двенадцать-битные слова для многих цифро-аналоговых или аналого-цифровых преобразователей.

Каждое ведомое устройство на шине, которое не было активировано с помощью линии выбора микросхемы, должно игнорировать входные тактовые импульсы и сигналы MOSI и не должно управлять MISO (т. Е. Должно иметь трехсторонний output), хотя некоторым устройствам для реализации этого требуются внешние буферы с тремя состояниями.

Полярность и фаза часов

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

Помимо установки тактовой частоты, мастер должен также настроить полярность и фазу тактового сигнала по отношению к данным. Руководство по блокам Motorola SPI[2] называет эти две опции как CPOL и CPHA (для cзамок polарность и пхаse), соответственно, соглашение, принятое большинством поставщиков.

В временная диаграмма показан справа. Время более подробно описано ниже и применяется как к ведущему, так и к ведомому устройству.

  • CPOL определяет полярность часов. Полярность можно преобразовать с помощью простого инвертор.
    • CPOL = 0 - это тактовый генератор, который находится в режиме ожидания в 0, и каждый цикл состоит из импульса 1. То есть передний фронт является передним фронтом, а задний фронт - задним фронтом.
    • CPOL = 1 - это тактовый генератор, который простаивает в 1, и каждый цикл состоит из импульса 0. То есть передний фронт - это задний фронт, а задний фронт - это нарастающий фронт.
  • CPHA определяет синхронизацию (то есть фазу) битов данных относительно тактовых импульсов. Преобразование между этими двумя формами нетривиально.
    • Для CPHA = 0 сторона «out» изменяет данные на заднем фронте предыдущего тактового цикла, в то время как «входящая» сторона захватывает данные на переднем фронте тактового цикла (или вскоре после него). Внешняя сторона сохраняет данные действительными до заднего фронта текущего тактового цикла. Для первого цикла первый бит должен быть в строке MOSI перед передним фронтом тактовой частоты.
    • Альтернативный способ рассмотрения состоит в том, чтобы сказать, что цикл CPHA = 0 состоит из полупериода с незанятыми часами, за которым следует полупериод с установленными тактовыми сигналами.
    • Для CPHA = 1 сторона «out» изменяет данные по переднему фронту текущего тактового цикла, а сторона «in» захватывает данные по заднему фронту (или вскоре после него) по заднему фронту тактового цикла. Внешняя сторона сохраняет данные действительными до переднего фронта следующего тактового цикла. В последнем цикле подчиненное устройство сохраняет линию MISO в силе до тех пор, пока выбор подчиненного устройства не будет отменен.
    • Альтернативный способ рассмотрения состоит в том, чтобы сказать, что цикл CPHA = 1 состоит из полупериода с установленными часами, за которым следует полупериод с незанятыми часами.

Сигналы MOSI и MISO обычно стабильны (в точках приема) в течение полупериода до следующего тактового перехода. Ведущее и ведомое устройства SPI могут выполнять выборку данных в разных точках этого полупериода.

Это добавляет больше гибкости каналу связи между ведущим и ведомым.

Номера режимов

Комбинации полярности и фаз часто называют режимами, которые обычно нумеруются в соответствии со следующим соглашением, с CPOL как бит высокого порядка и CPHA как бит низкого порядка:

За "Микрочип PIC "/" Микроконтроллеры на базе ARM (обратите внимание, что NCPHA - это инверсия CPHA):

Режим SPIПолярность часов
(CPOL / CKP)
Фаза часов
(CPHA)
Край часов
(CKE / NCPHA)
0001
1010
2101
3110

Для PIC32MX: режим SPI настраивает биты CKP, CKE и SMP. Установите бит SMP и два бита CKP, CKE, настроенных, как указано в таблице выше.

Для других микроконтроллеров:

РежимCPOLCPHA
000
101
210
311

Другое часто используемое обозначение представляет режим как кортеж (CPOL, CPHA); например, значение '(0, 1)' будет указывать на CPOL = 0 и CPHA = 1.

Обратите внимание, что в полнодуплексном режиме ведущее устройство может передавать и принимать в разных режимах. Например, он может передавать в режиме 0 и принимать в режиме 1 одновременно.

Независимая конфигурация ведомого

Типичная шина SPI: ведущий и три независимых ведомых

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

Подтягивающие резисторы между источником питания и линиями выбора микросхемы рекомендуются для систем, в которых выводы выбора микросхемы ведущего устройства могут по умолчанию находиться в неопределенном состоянии.[3] Когда отдельные программные процедуры инициализируют выбор каждого чипа и связываются со своим ведомым устройством, подтягивающие резисторы запретить другим неинициализированным ведомым устройствам отвечать.

Поскольку выводы MISO ведомых устройств соединены вместе, они должны быть выводами с тремя состояниями (высокий, низкий или высокий импеданс), где должен применяться выход с высоким импедансом, когда ведомое устройство не выбрано. Подчиненные устройства, не поддерживающие три состояния, могут использоваться в независимой ведомой конфигурации путем добавления буферной микросхемы с тремя состояниями, управляемой сигналом выбора микросхемы.[3] (Поскольку для каждого ведомого требуется только одна сигнальная линия, одна типичная стандартная логическая микросхема, содержащая четыре буфера с тремя состояниями с независимыми входами вентилей, может использоваться для сопряжения до четырех ведомых устройств с шиной SPI.)

Конфигурация гирляндной цепи

Шина SPI с последовательным подключением: ведущие и кооперативные ведомые устройства

Некоторые продукты, реализующие SPI, могут быть подключены в гирлянда конфигурации, первый выход подчиненного устройства подключается ко второму входу подчиненного устройства и т. д. Порт SPI каждого подчиненного устройства предназначен для отправки во время второй группы тактовых импульсов точной копии данных, полученных во время первой группы тактовых импульсов. Вся цепочка действует как коммуникация регистр сдвига; Гирляндное соединение часто выполняется с помощью регистров сдвига для обеспечения банка входов или выходов через SPI. Каждое ведомое устройство копирует ввод на вывод в следующем тактовом цикле, пока активная низкая линия SS не перейдет в высокий уровень. Для такой функции требуется только одна линия SS от ведущего устройства, а не отдельная линия SS для каждого ведомого устройства.[4]

Другие приложения, которые потенциально могут взаимодействовать с SPI, требующие конфигурации гирляндной цепи, включают: SGPIO, JTAG,[5] и Двухпроводной интерфейс.

Действительные сообщения

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

Прерывания

Устройства SPI иногда используют другую сигнальную линию для отправки сигнала прерывания на центральный ЦП. Примеры включают прерывания пером вниз от сенсорных экранов, предупреждения о предельных значениях температуры от датчиков температуры, сигналы тревоги, выдаваемые микросхемами часов реального времени, SDIO,[6] и вставки гнезда для наушников от звукового кодека в сотовом телефоне. Стандарт SPI не распространяется на прерывания; их использование не запрещено и не оговорено стандартом. Другими словами, прерывания выходят за рамки стандарта SPI и могут быть реализованы независимо от него.

Пример битового взлома основного протокола

Ниже приведен пример бит-стук протокол SPI в качестве ведущего устройства SPI с CPOL = 0, CPHA = 0 и восемью битами на передачу. Пример написан на языке программирования C. Поскольку это CPOL = 0, перед активацией выбора микросхемы необходимо установить низкий уровень тактовой частоты. Линия выбора микросхемы должна быть активирована, что обычно означает переключение на низкий уровень для периферийного устройства до начала передачи, а затем деактивирована после этого. Большинство периферийных устройств допускают или требуют несколько передач, пока линия выбора находится на низком уровне; эта процедура может быть вызвана несколько раз, прежде чем отменить выбор микросхемы.

/* * Одновременно передавать и получать байт по SPI. * * Предполагается, что полярность и фаза равны 0, т. Е .: * - входные данные фиксируются по нарастающему фронту SCLK. * - выходные данные распространяются по заднему фронту SCLK. * * Возвращает полученный байт. */uint8_t SPI_transfer_byte(uint8_t byte_out){    uint8_t byte_in = 0;    uint8_t кусочек;    за (кусочек = 0x80; кусочек; кусочек >>= 1) {        / * Сдвиг немного к строке MOSI * /        write_MOSI((byte_out & кусочек) ? ВЫСОКО : НИЗКИЙ);        / * Задержка, по крайней мере, на время установки однорангового узла * /        задерживать(SPI_SCLK_LOW_TIME);        / * Вытягиваем линию часов * /        write_SCLK(ВЫСОКО);        / * Немного сдвинуть строку с MISO * /        если (read_MISO() == ВЫСОКО)            byte_in |= кусочек;        / * Задержка, по крайней мере, на время удержания пира * /        задерживать(SPI_SCLK_HIGH_TIME);        / * Вытягиваем линию часов до минимума * /        write_SCLK(НИЗКИЙ);    }    возвращаться byte_in;}

За и против

Преимущества

  • Полнодуплексная связь в версии этого протокола по умолчанию
  • Двухтактные драйверы (в отличие от открытого стока) обеспечивают хорошую целостность сигнала и высокую скорость
  • Выше пропускная способность чем I²C или же SMBus. Не ограничивается какой-либо максимальной тактовой частотой, что обеспечивает потенциально высокую скорость
  • Полная гибкость протокола для передаваемых битов
    • Не ограничивается 8-битными словами
    • Произвольный выбор размера сообщения, содержания и цели
  • Чрезвычайно простой аппаратный интерфейс
    • Обычно более низкие требования к мощности, чем I²C или SMBus из-за меньшего количества схем (включая подтягивающие резисторы)
    • Нет арбитража или связанных режимов отказа - в отличие от CAN-шина
    • Подчиненные устройства используют часы мастера и не нуждаются в прецизионных генераторах
    • Рабы не нуждаются в уникальном адрес - В отличие от I²C или же GPIB или же SCSI
    • Трансиверы не нужны - в отличие от CAN-шина
  • Использует только четыре контакта на корпусах микросхем и проводов в макетах плат или разъемов, что намного меньше, чем в параллельных интерфейсах
  • Максимум один уникальный сигнал шины на устройство (выбор микросхемы); все остальные общие
  • Сигналы однонаправленные, что позволяет легко гальваническая развязка
  • Простая программная реализация

Недостатки

  • Требуется больше контактов на корпусах ИС, чем I²C, даже в трехпроводной вариант
  • Нет внутриполосной адресации; внеполосные сигналы выбора микросхемы требуются на общих шинах
  • Расширяемость значительно снижается, когда требуется несколько ведомых устройств, использующих разные режимы SPI. Доступ замедляется, когда мастеру часто требуется повторная инициализация в разных режимах.
  • Нет оборудования управление потоком ведомым (но ведущий может задержать следующий фронт тактового сигнала, чтобы замедлить скорость передачи)
  • Нет аппаратного подтверждения ведомого устройства (ведущий мог передавать в никуда и не знать об этом)
  • Обычно поддерживает только одно главное устройство (зависит от аппаратной реализации устройства)
  • Протокол проверки ошибок не определен
  • Без формального стандарта проверка соответствия невозможна
  • Обрабатывает только короткие расстояния по сравнению с RS-232, RS-485, или же CAN-шина. (Его расстояние можно увеличить с помощью трансиверов, например RS-422.)
  • Оптоизоляторы на пути прохождения сигнала ограничивают тактовую частоту для передачи MISO из-за дополнительных задержек между тактовым сигналом и данными
  • Множество существующих вариантов, что затрудняет поиск инструментов разработки, таких как хост-адаптеры, которые поддерживают эти варианты
  • SPI не поддерживает горячая замена (динамическое добавление узлов).
  • Прерывания должны быть реализованы с помощью внеполосных сигналов или подделаны с помощью периодического опроса, аналогично USB 1.1 и 2.0.
  • Некоторые варианты вроде двойной SPI, четырехъядерный SPI, и трехпроводные последовательные шины определенные ниже являются полудуплексными.

Приложения

Последовательная память SPI от Атмель

Экономия площади платы по сравнению с параллельной шиной ввода-вывода значительна и позволила SPI занять прочную роль во встроенных системах. Это верно для большинства система на кристалле процессоры, оба с 32-разрядными процессорами более высокого уровня, например, использующие РУКА, MIPS, или же PowerPC и с другими микроконтроллерами, такими как AVR, ПОС, и MSP430. Эти микросхемы обычно включают в себя контроллеры SPI, способные работать как в ведущем, так и в ведомом режиме. Программируется внутри системы Контроллеры AVR (в том числе пустые) могут быть запрограммированы с использованием интерфейса SPI.[7]

Чип или FPGA конструкции на основе иногда используют SPI для связи между внутренними компонентами; встроенная недвижимость может быть такой же дорогой, как и ее бортовой родственник.

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

SPI используется для связи с различными периферийными устройствами, такими как

Для высокопроизводительных систем ПЛИС иногда используют SPI для взаимодействия в качестве подчиненного устройства с хостом, в качестве главного устройства для датчиков или для флэш-памяти, используемой для начальной загрузки, если они основаны на SRAM.

Хотя есть некоторое сходство между шиной SPI и JTAG (IEEE 1149.1-2013), они не взаимозаменяемы. Шина SPI предназначена для высокоскоростной встроенной инициализации периферийных устройств устройства, в то время как протокол JTAG предназначен для обеспечения надежного тестового доступа к контактам ввода-вывода с внешнего контроллера с менее точными параметрами задержки сигнала и перекоса. Хотя протокол JTAG не является строго чувствительным к уровню интерфейсом, он поддерживает восстановление нарушений при установке и удержании между устройствами JTAG путем снижения тактовой частоты или изменения рабочих циклов тактовой частоты. Следовательно, интерфейс JTAG не предназначен для поддержки чрезвычайно высоких скоростей передачи данных.[8]

SGPIO По сути, это еще один (несовместимый) стек приложений для SPI, предназначенный для определенных действий по управлению объединительной платой.[нужна цитата ] SGPIO использует 3-битные сообщения.

Стандарты

Автобус SPI - это де-факто стандарт. Однако отсутствие формального стандарта отражается в большом количестве вариантов протокола. Часто встречаются слова разного размера. Каждое устройство определяет свой собственный протокол, в том числе поддерживает ли оно команды вообще. Некоторые устройства предназначены только для передачи; другие предназначены только для приема. Иногда выбирается активный высокий уровень, а не активный низкий уровень. Некоторые протоколы сначала отправляют младший бит.

Некоторые устройства даже имеют незначительные отличия от режимов CPOL / CPHA, описанных выше. При отправке данных от ведомого к ведущему может использоваться противоположный фронт тактовой частоты в качестве ведущего к ведомому. Устройствам часто требуется дополнительное время простоя часов перед первыми часами или после последних, или между командой и ответом на нее. Некоторые устройства имеют два тактовых генератора: один для чтения данных, а другой для передачи их в устройство. Многие из считываемых часов запускаются из строки выбора микросхемы.

Некоторым устройствам требуется дополнительный сигнал управления потоком от ведомого к ведущему, указывающий, когда данные готовы. Это приводит к 5-проводному протоколу вместо обычного 4. Такой готовы или же включить сигнал часто имеет низкий активный уровень и должен быть включен в ключевые моменты, например, после команд или между словами. Без такого сигнала может потребоваться значительное замедление скорости передачи данных или в протоколах может потребоваться вставка фиктивных байтов для учета наихудшего случая времени отклика ведомого устройства. Примеры включают в себя инициирование преобразования АЦП, обращение к правой странице флэш-памяти и обработку команды, достаточной для того, чтобы микропрограммное обеспечение устройства могло загрузить первое слово ответа. (Многие мастера SPI не поддерживают этот сигнал напрямую, а вместо этого полагаются на фиксированные задержки.)

Многие микросхемы SPI поддерживают только сообщения, кратные 8 битам. Такие чипы не могут взаимодействовать с JTAG или же SGPIO протоколы или любой другой протокол, требующий сообщений, не кратных 8 битам.

Есть также различия на аппаратном уровне. Некоторые микросхемы объединяют MOSI и MISO в одну линию данных (SI / SO); это иногда называют «трехпроводной» сигнализацией (в отличие от обычного «четырехпроводного» SPI). Другой вариант SPI удаляет строку выбора микросхемы, управляя входом / выходом из конечного автомата протокола другими методами. Любой, кому нужен внешний разъем для SPI, определяет свой собственный: UEXT, Разъем JTAG, Secure Digital гнездо для карты и т. д. Уровни сигнала полностью зависят от используемых микросхем.

SafeSPI[9] является отраслевым стандартом SPI в автомобильных приложениях. Его основное внимание уделяется передаче данных датчиков между различными устройствами.

Инструменты разработки

При разработке или устранении неисправностей систем с использованием SPI может быть важна видимость на уровне сигналов оборудования.

Хост-адаптеры

Есть ряд USB аппаратные решения для предоставления компьютеров, работающих Linux, Mac, или же Windows, Возможности ведущего или ведомого устройства SPI. Многие из них также предоставляют возможности создания сценариев или программирования (Visual Basic, C / C ++, VHDL и т. Д.).

Адаптер хоста SPI позволяет пользователю играть роль мастера на шине SPI непосредственно с ПК. Они используются для встроенных систем, микросхем (FPGA, ASIC и SoC), а также для тестирования, программирования и отладки периферийных устройств.

Ключевыми параметрами SPI являются: максимальная поддерживаемая частота для последовательного интерфейса, задержка между командами и максимальная длина команд SPI. Сегодня на рынке можно найти адаптеры SPI, которые поддерживают последовательные интерфейсы до 100 МГц с практически неограниченной длиной доступа.

Протокол SPI является стандартом де-факто, некоторые хост-адаптеры SPI также могут поддерживать другие протоколы, помимо традиционного 4-проводного SPI (например, поддержку протокола quad-SPI или другого настраиваемого последовательного протокола, который происходит от SPI[10]).

Анализаторы протокола

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

Осциллографы

Большинство поставщиков осциллографов предлагают запуск на основе осциллографов и декодирование протоколов для SPI. Большинство из них поддерживают 2-, 3- и 4-проводный SPI. Возможность запуска и декодирования обычно предлагается как дополнительная опция. Доступ к сигналам SPI можно получить через аналоговые каналы осциллографа или цифровые каналы MSO.[11]

Логические анализаторы

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

Связанные термины

Интеллектуальные контроллеры SPI

А Последовательный периферийный интерфейс в очереди (QSPI; см. также Quad SPI) - это тип контроллера SPI, который использует очередь данных для передачи данных по шине SPI.[12] Оно имеет обертывание режим, позволяющий осуществлять непрерывную передачу в очередь и из очереди только с периодическим вниманием со стороны ЦП. Следовательно, периферийные устройства выглядят для ЦП как с отображением памяти параллельные устройства. Эта функция полезна в таких приложениях, как управление Аналого-цифровой преобразователь. Другими программируемыми функциями QSPI являются выбор чипа и длина / задержка передачи.

Контроллеры SPI от разных производителей поддерживают разные наборы функций; такие очереди DMA не редкость, хотя они могут быть связаны с отдельными механизмами DMA, а не с самим контроллером SPI, например, используемым Многоканальный буферизованный последовательный порт (MCBSP).[13] Большинство мастер-контроллеров SPI поддерживают выбор до четырех микросхем,[14] хотя некоторые требуют, чтобы выбор микросхемы управлялся отдельно через линии GPIO.

Микропровода

Последовательный EEPROM Fairchild с шиной Microwire

Микропровода,[15] часто пишется μWire, по сути, является предшественником SPI и товарным знаком National Semiconductor. Это строгое подмножество SPI: полудуплекс и использование режима SPI 0. Микропроводным микросхемам обычно требуются более низкие тактовые частоты, чем более новым версиям SPI; возможно 2 МГц против 20 МГц. Некоторые микросхемы Microwire также поддерживают трехпроводной режим.

Микропровода / Плюс

Микропровода / Плюс[16] является усовершенствованием Microwire и обеспечивает полнодуплексную связь и поддерживает режимы SPI 0 и 1.Специального улучшения тактовой частоты последовательного интерфейса не было.

Трехпроводные последовательные шины

Как уже упоминалось, один вариант SPI использует одну двунаправленную линию данных (выход подчиненного / вход подчиненного устройства, называемый SISO или выход главного устройства / вход главного устройства, называемый MOMI) вместо двух однонаправленных линий (MOSI и MISO). Этот вариант ограничен полудуплексным режимом. Он, как правило, используется для деталей с более низкой производительностью, таких как небольшие EEPROM, используемые только во время запуска системы, и некоторые датчики, а также микропровод. Некоторые главные контроллеры SPI поддерживают этот режим; хотя часто это может быть легко побитый в программном обеспечении.

Двойной SPI

В случаях, когда полнодуплексный характер SPI не используется, расширение использует оба вывода данных в полудуплексной конфигурации для отправки двух битов за такт. Обычно командный байт отправляется с запросом ответа в двойном режиме, после чего линия MOSI становится SIO0 (последовательный ввод / вывод 0) и несет четные биты, а линия MISO становится SIO1 и несет нечетные биты. Данные по-прежнему передаются в начале мсбит, но SIO1 несет биты 7, 5, 3 и 1 каждого байта, а SIO0 несет биты 6, 4, 2 и 0.

Это особенно популярно среди SPI ROM, которые должны отправлять большой объем данных, и поставляется в двух вариантах:[17][18]

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

Quad SPI

Quad SPI (QSPI; см. также Queued SPI) выходит за рамки двойного SPI, добавляя еще две линии ввода-вывода (SIO2 и SIO3) и отправляя 4 бита данных за такт. Опять же, это запрашивается специальными командами, которые включают четырехъядерный режим после отправки самой команды в одиночном режиме.[17][18]

SQI Тип 1: Команды отправляются в одной строке, но адреса и данные отправляются в четырех строках

SQI Тип 2: Команды и адреса отправляются в одной строке, а данные отправляются / принимаются в четырех строках

QPI / SQI

Дальнейшее расширение четырехъядерного SPI, некоторые устройства поддерживают режим «четырехъядерный», где все связь происходит по 4 линиям данных, включая команды.[19] Это называется по-разному "QPI".[18] (не путать с Intel QuickPath Interconnect ) или "последовательный четырехъядерный ввод / вывод" (SQI)[20]

Это требует программирования бита конфигурации в устройстве и требует осторожности после сброса для установления связи.

Двойная скорость передачи данных

Помимо использования нескольких линий для ввода-вывода, некоторые устройства увеличивают скорость передачи, используя двойная скорость передачи данных коробка передач.[21][22]

Шина расширенного последовательного периферийного интерфейса Intel

Intel разработала преемника своей Низкое количество контактов (LPC) шина, которую он называет шиной расширенного последовательного периферийного интерфейса, или сокращенно eSPI. Intel стремится сократить количество контактов, необходимых на материнских платах, по сравнению с системами, использующими LPC, иметь более доступную пропускную способность, чем LPC, снизить рабочее напряжение до 1,8 В для облегчения процессов производства небольших микросхем, позволить периферийным устройствам eSPI совместно использовать флэш-устройства SPI с хост (шина LPC не позволяла использовать концентраторы микропрограмм для периферийных устройств LPC), туннелирует предыдущие внеполосные выводы через шину eSPI и позволяет разработчикам системы находить компромисс между стоимостью и производительностью.[23][24]

Шина eSPI может использоваться совместно с устройствами SPI для сохранения контактов или быть отдельной от шины SPI для повышения производительности, особенно когда устройства eSPI должны использовать флэш-устройства SPI.[23]

Этот стандарт определяет сигнал Alert #, который используется подчиненным устройством eSPI для запроса услуги у главного устройства. В ориентированном на производительность дизайне или дизайне с одним подчиненным устройством eSPI каждое подчиненное устройство eSPI будет иметь свой вывод Alert #, подключенный к контакту Alert # на главном устройстве eSPI, которое выделено для каждого подчиненного устройства, что позволяет мастеру eSPI предоставлять низкую задержку сервис, потому что ведущее устройство eSPI будет знать, какое ведомое устройство eSPI нуждается в обслуживании, и ему не нужно будет опрашивать все ведомые устройства, чтобы определить, какое устройство нуждается в обслуживании. В бюджетном проекте с более чем одним ведомым устройством eSPI все выводы Alert # ведомых подключены к одному выводу Alert # на ведущем устройстве eSPI в проводное ИЛИ соединение, которое потребует от мастера опроса всех подчиненных, чтобы определить, какие из них нуждаются в обслуживании, когда сигнал Alert # понижается одним или несколькими периферийными устройствами, нуждающимися в обслуживании. Только после того, как все устройства будут обслужены, сигнал Alert # будет переведен на высокий уровень, поскольку ни один из подчиненных устройств eSPI не нуждается в обслуживании и, следовательно, установит низкий уровень сигнала Alert #.[23]

Этот стандарт позволяет разработчикам использовать 1-битную, 2-битную или 4-битную передачу данных на скоростях от 20 до 66 МГц, что дополнительно позволяет разработчикам находить компромисс между производительностью и стоимостью.[23]

Все коммуникации, которые были вне полосы шины LPC, например универсальный ввод / вывод (GPIO) и Системная шина управления (SMBus) туннелируются через шину eSPI через циклы виртуальных проводов и циклы внеполосных сообщений соответственно, чтобы удалить эти контакты из конструкций материнских плат с помощью eSPI.[23]

Этот стандарт поддерживает стандартные циклы памяти длиной от 1 байта до 4 килобайт данных, короткие циклы памяти длиной 1, 2 или 4 байта, которые имеют гораздо меньшие накладные расходы по сравнению со стандартными циклами памяти, и циклы ввода-вывода длиной 1 , 2 или 4 байта данных, которые также имеют небольшие накладные расходы. Это значительно снижает накладные расходы по сравнению с шиной LPC, где на все циклы, за исключением 128-байтового цикла чтения концентратора микропрограммного обеспечения, приходится более половины всей пропускной способности шины и времени. Стандартный цикл памяти позволяет иметь длину от 1 байта до 4 килобайт, чтобы позволить погашать большие накладные расходы за счет большой транзакции. Подчиненным устройствам eSPI разрешено инициировать версии мастера шины для всех циклов памяти. Циклы ввода-вывода мастера шины, которые были введены спецификацией шины LPC, и DMA в стиле ISA, включая 32-битный вариант, введенный спецификацией шины LPC, не присутствуют в eSPI. Следовательно, циклы памяти мастера шины являются единственно допустимым DMA в этом стандарте.[23]

Подчиненным устройствам eSPI разрешено использовать главное устройство eSPI в качестве прокси для выполнения операций с флэш-памятью на стандартном ведомом устройстве флэш-памяти SPI от имени запрашивающего ведомого устройства eSPI.[23]

Также добавляется 64-битная адресация памяти, но она разрешена только при отсутствии эквивалентного 32-битного адреса.[23]

Intel Чипсет Z170 может быть сконфигурирован для реализации либо этой шины, либо варианта шины LPC, в котором отсутствует возможность DMA в стиле ISA и пониженная тактовая частота до 24 МГц вместо стандартных 33 МГц.[25]

Смотрите также

Рекомендации

  1. ^ "Что такое последовательный синхронный интерфейс (SSI)?". Получено 2015-01-28.
  2. ^ Руководство по блокам SPI v3.06; Motorola / Freescale / NXP; 2003 г.
  3. ^ а б Улучшенная конструкция шины SPI за 3 шага
  4. ^ Примечание к приложению Maxim-IC 3947: «Гирляндное соединение устройств SPI»
  5. ^ Интерфейсы, 1977, с. 80, 84
  6. ^ а б Не путать с линией SDIO (Serial Data I / O) полудуплексной реализации шины SPI, иногда также называемой «3-проводной шиной SPI». Вот например MOSI (через резистор) и MISO (без резистора) ведущего подключены к линии SDIO ведомого.
  7. ^ «AVR910 - Внутрисистемное программирование» (PDF). Архивировано из оригинал (PDF) на 02.03.2011.
  8. ^ IEEE 1149.1-2013
  9. ^ SafeSPI.org
  10. ^ SPI Storm - Хост-адаптер последовательного протокола с поддержкой настраиваемых последовательных протоколов, Byte Paradigm.
  11. ^ «Запуск и декодирование протокола I²C и SPI N5391B для осциллографов Infiniium».
  12. ^ Справочное руководство по последовательному модулю с очередью, Freescale Semiconductor (теперь NXP)
  13. ^ Например, с Многоканальный интерфейс последовательного порта, или McSPI, используемый в чипах Texas Instruments OMAP.
  14. ^ Например, контроллер SPI на Микросхемы Atmel AT91 как at91sam9G20, который намного проще, чем McSPI от TI.
  15. ^ MICROWIRE последовательный интерфейс Примечание по применению National Semiconductor AN-452
  16. ^ Последовательный интерфейс MICROWIRE / PLUS для семейства COP800 Инструкция по применению National Semiconductor AN-579
  17. ^ а б "W25Q16JV 3V 16M-битная последовательная флэш-память с Dual / Quad SPI" (PDF) (техническая спецификация). Редакция D. Winbond. 12 августа 2016 г.. Получено 2017-02-10.
  18. ^ а б c "D25LQ64 1.8V Uniform Sector Dual and Quad SPI Flash" (PDF) (техническая спецификация). версия 0.1. GigaDevice. 11 февраля 2011. Архивировано с оригинал (PDF) 12 февраля 2017 г.. Получено 2017-02-10.
  19. ^ «Флэш-память QuadSPI: режим Quad SPI по сравнению с режимом QPI». Форумы сообщества NXP. Декабрь 2014 г.. Получено 2016-02-10.
  20. ^ «SST26VF032B / SST26VF032BA 2,5 В / 3,0 В, 32 Мбит последовательная четырехъядерная флэш-память ввода-вывода (SQI)» (PDF) (Техническая спецификация). версия E. Microchip, Inc. 2017. Получено 2017-02-10.
  21. ^ Паттерсон, Дэвид (май 2012 г.). "Обновления модуля четырех последовательного периферийного интерфейса (QuadSPI)" (PDF) (Примечание по применению). Freescale Semiconductor. Получено 21 сентября, 2016.
  22. ^ Пелл, Рич (13 октября 2011 г.). «Повышение производительности с использованием флэш-памяти SPI-DDR NOR». EDN.
  23. ^ а б c d е ж грамм час Базовая спецификация интерфейса расширенного последовательного периферийного интерфейса (eSPI) (для клиентских и серверных платформ) (PDF) (Отчет). Версия 1.0. Intel. Январь 2016 г. Номер документа 327432-004.. Получено 2017-02-05.
  24. ^ Спецификация интерфейса расширенного последовательного периферийного интерфейса (eSPI) (для клиентских платформ) (PDF) (Отчет). Версия 0.6. Intel. Май 2012 г. Номер документа 327432-001EN.. Получено 2017-02-05.
  25. ^ "Техническое описание PCH семейства наборов микросхем Intel® серии 100, том 1" (PDF). Получено 15 апреля, 2015.

внешняя ссылка