stringtranslate.com

Последовательный периферийный интерфейс

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

SPI следует архитектуре «главный-подчиненный» [1] , называемой здесь «главный-подчиненный» , [примечание 2] [примечание 3] , где одно [примечание 4] главное устройство организует связь с одним или несколькими подчиненными (периферийными) устройствами, управляя тактовыми сигналами и сигналами выбора микросхемы .

Оригинальная спецификация Motorola (начала 1980-х годов) использует четыре логических сигнала , также известных как линии или провода, для поддержки полнодуплексной связи. Иногда ее называют четырехпроводной последовательной шиной, чтобы противопоставить трехпроводным вариантам, которые являются полудуплексными , и двухпроводным последовательным шинам I²C и 1-Wire .

Типичные области применения включают интерфейс микроконтроллеров с периферийными микросхемами для карт Secure Digital , жидкокристаллических дисплеев , аналого-цифровых и цифро-аналоговых преобразователей , флэш-памяти и EEPROM- памяти, а также различных коммуникационных микросхем.

Хотя SPI является синхронным последовательным интерфейсом, [2] он отличается от синхронного последовательного интерфейса (SSI). SSI использует дифференциальную сигнализацию и обеспечивает только один симплексный канал связи.

Операция

Рисунок 1: Обычное подключение SPI с одним сабвуфером.

Обычно SPI имеет четыре логических сигнала. Вариации могут использовать другие названия или иметь другие сигналы. Исторические термины показаны в скобках.

MOSI на главном устройстве выводит на MOSI на подчиненном устройстве. MISO на подчиненном устройстве выводит на MISO на главном устройстве.

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

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

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

Чтобы начать связь, главный SPI сначала выбирает подчиненное устройство, понижая его CS . (Примечание: полоса над CS указывает на то, что это активный низкий сигнал, поэтому низкое напряжение означает «выбрано», а высокое напряжение означает «не выбрано»).

Если требуется период ожидания, например, для аналого-цифрового преобразования, главный контроллер должен выждать по крайней мере этот период времени, прежде чем выдавать тактовые циклы. [примечание 5]

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

Передача с использованием одного подблока (рисунок 1) включает один сдвиговый регистр в основном и один сдвиговый регистр в подблоке, оба некоторого заданного размера слова (например, 8 бит), [примечание 6], соединенные в топологию виртуального кольца . Данные обычно сдвигаются наружу, начиная с самого старшего бита (MSB). [примечание 7] На фронте тактового сигнала и основной, и дополнительный сдвигают бит наружу к своему аналогу. На следующем фронте тактового сигнала каждый приемник выбирает переданный бит и сохраняет его в сдвиговом регистре как новый наименее значимый бит. После того, как все биты были сдвинуты наружу и внутрь, основной и дополнительный обменялись значениями регистров. Если необходимо обменять больше данных, сдвиговые регистры перезагружаются, и процесс повторяется. Передача может продолжаться в течение любого количества тактовых циклов. После завершения основной прекращает переключение тактового сигнала и, как правило, отменяет выбор подблока.

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

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

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

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

Временная диаграмма SPI для полярностей и фаз синхронизации. Биты данных выводятся на синих линиях, если CPHA=0, или на красных линиях, если CPHA=1, а выборка — на линиях противоположного цвета. Числа обозначают биты данных. Z обозначает высокий импеданс .

Показанная временная диаграмма SPI более подробно описана ниже:

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

Комбинации полярности и фаз обозначаются следующими числами «режима SPI», где CPOL — старший бит, а CPHA — младший бит:

Примечания:

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

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

Прерывания

Прерывания выходят за рамки SPI; их использование не запрещено и не регламентировано, поэтому их можно реализовать по желанию.

От основного к дополнительному

Микроконтроллеры, сконфигурированные как вспомогательные устройства, могут иметь аппаратную поддержку для генерации сигналов прерывания для себя при получении слов данных или переполнении буфера FIFO приема [6], а также могут устанавливать процедуру прерывания, когда их входная линия выбора микросхемы переводится в низкий или высокий уровень.

От подпункта к основному

SPI subs иногда используют внеполосный сигнал (другой провод) для отправки сигнала прерывания в main. Примерами служат прерывания от сенсорных датчиков сенсорного экрана , оповещения о предельных температурах от датчиков температуры , сигналы тревоги, выдаваемые чипами часов реального времени , SDIO [примечание 8] и вставки аудиоразъема для аудиокодека . Прерывания в main также могут быть подделаны с помощью опроса (аналогично USB 1.1 и 2.0 ).

Разработка программного обеспечения

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

Бит-бэнгинг протокола

Нижеприведенный псевдокод описывает программную реализацию (" bit-banging ") протокола SPI как основного с одновременным выводом и вводом. Этот псевдокод предназначен для CPHA=0 и CPOL=0, таким образом, SCLK понижается до активации CS , и биты вводятся по переднему фронту SCLK, а биты выводятся по заднему фронту SCLK.

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

Топологии шин

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

Многоточечная конфигурация

Многоточечная шина SPI

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

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

Предостережение: все сигналы CS должны начинаться с высокого уровня (чтобы указать, что ни один чип не выбран) перед отправкой сообщений инициализации в любой подпроцессор, чтобы другие неинициализированные подпроцессоры игнорировали сообщения, не адресованные им. Это вызывает беспокойство, если основной процессор использует выводы ввода-вывода общего назначения (GPIO) (которые по умолчанию могут находиться в неопределенном состоянии) для CS и если основной процессор использует отдельные программные библиотеки для инициализации каждого устройства. Одним из решений является настройка всех GPIO, используемых для CS , на вывод высокого напряжения для всех подпроцессоров перед запуском кода инициализации из любой из этих программных библиотек. Другое решение — добавить подтягивающий резистор на каждый CS , чтобы гарантировать, что все сигналы CS изначально имеют высокий уровень. [3]

Конфигурация последовательного соединения

Последовательно соединенные SPI

Некоторые продукты, реализующие SPI, могут быть подключены в конфигурации последовательной цепи , где выход первого подсистемы подключен к входу второго подсистемы, и так далее с последующими подсистемами, до последней подсистемы, выход которой подключен обратно к входу основной. Это эффективно объединяет отдельные регистры сдвига связи каждой подсистемы, чтобы сформировать один более крупный объединенный регистр сдвига , который сдвигает данные по цепи. Эта конфигурация требует только одной линии CS от основной, а не отдельной линии CS для каждой подсистемы. [7]

В дополнение к использованию специфических для SPI подпрограмм, последовательный SPI может включать дискретные сдвиговые регистры для большего количества контактов входов (например, с использованием параллельного ввода-вывода 74 xx165) [8] или выходов (например, с использованием последовательного ввода-вывода 74 xx595) [9], соединенных в бесконечную цепь. Другие приложения, которые могут потенциально взаимодействовать с последовательным SPI, включают SGPIO , JTAG , [10] и I 2 C.

Конфигурации расширителя

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

Например, один CS может использоваться для передачи на управляемый SPI демультиплексор индексного номера, управляющего его сигналами выбора, в то время как другой CS направляется через этот демультиплексор в соответствии с этим индексом для выбора нужного подканала. [11]

Плюсы и минусы

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

Недостатки

Приложения

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

Экономия места на плате и проводов по сравнению с параллельной шиной значительна и обеспечила SPI прочную роль во встраиваемых системах. Это справедливо для большинства процессоров system-on-a-chip , как для высокопроизводительных 32-битных процессоров, таких как использующие ARM , MIPS или PowerPC , так и для низкопроизводительных микроконтроллеров, таких как AVR , PIC и MSP430 . Эти чипы обычно включают контроллеры SPI, способные работать как в основном, так и в подрежиме. Внутрисистемно программируемые контроллеры AVR (включая пустые) могут программироваться с использованием SPI. [12]

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

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

Вариации

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

Исходное определение

В 1983 году Motorola перечислила [13] три 8-битных микрокомпьютера 6805 , которые имели встроенный «последовательный периферийный интерфейс», функциональность которого описана в руководстве 1984 года. [14]

АН991

Документ AN991 компании Motorola 1987 года «Использование последовательного периферийного интерфейса для связи между несколькими микрокомпьютерами» [15] (в настоящее время принадлежит NXP , последняя редакция 2002 г. [5] ) неофициально служит «официальным» определяющим документом для SPI.

Изменения сроков

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

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

Размер трансмиссии

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

Нет выбора чипа

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

Соединители

Любой, кому нужен внешний разъем для SPI, определяет свой собственный или использует другое стандартное соединение, например: UEXT , Pmod , различные разъемы JTAG , разъем для карты Secure Digital и т. д.

Управление потоком

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

SafeSPI

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

Модификации повышенной надежности

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

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

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

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

Обратите внимание, что Queued SPI отличается от Quad SPI , и некоторые процессоры даже позволяют одному интерфейсу «QSPI» работать как в счетверенном, так и в очередном режиме! [20]

Микропровод

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

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

Microwire/Plus [22] является усовершенствованной версией Microwire и обеспечивает полнодуплексную связь и поддержку режимов SPI 0 и 1. Не было выявлено никаких улучшений в скорости последовательной синхронизации.

Трёхпроводной

Трёхпроводные варианты SPI, ограниченные полудуплексным режимом, используют одну двунаправленную линию данных, называемую SISO (sub out/sub in) или MOMI (main out/main in) вместо двух однонаправленных линий SPI (MOSI и MISO). Трёхпроводные, как правило, используются для деталей с низкой производительностью, таких как небольшие EEPROM, используемые только во время запуска системы, некоторые датчики и Microwire. Немногие контроллеры SPI поддерживают этот режим, хотя его можно легко bitbanged в программном обеспечении.

Двойной SPI

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

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

Четырехканальный SPI

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

ИКС Тип 1
Команды отправляются по одной строке, а адреса и данные — по четырем.
ИКС Тип 2
Команды и адреса отправляются по одной строке, а данные отправляются/принимаются по четырем строкам

QPI/SQI

Расширяя далее quad SPI, некоторые устройства поддерживают режим «quad everything», в котором вся связь осуществляется по 4 линиям данных, включая команды. [25] Это по-разному называется «QPI» [24] (не путать с Intel QuickPath Interconnect ) или «serial quad I/O» (SQI) [26]

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

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

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

JTAG

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

СГПИО

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

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

Intel разработала преемника своей шины Low Pin Count (LPC), которую она называет шиной Enhanced Serial Peripheral Interface (eSPI) . Intel стремится сократить количество выводов, необходимых на материнских платах, и увеличить пропускную способность по сравнению с LPC, снизить рабочее напряжение до 1,8 вольт для упрощения процессов производства микросхем меньшего размера, разрешить периферийным устройствам eSPI совместно использовать флэш-устройства SPI с хостом (шина LPC не позволяла периферийным устройствам LPC использовать концентраторы прошивки), туннелировать предыдущие внеполосные выводы через eSPI и позволить разработчикам систем найти компромисс между стоимостью и производительностью. [30] [31]

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

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

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

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

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

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

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

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

Шина eSPI также адаптирована для чипсетов AMD Ryzen .

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

Одноплатные компьютеры

Одноплатные компьютеры могут предоставлять доступ к аппаратным блокам SPI через контакты . Например, разъем J8 Raspberry Pi предоставляет как минимум два блока SPI, которые можно использовать через драйверы Linux или python .

Адаптеры USB-SPI

Существует ряд USB- адаптеров, которые позволяют настольному ПК или смартфону с USB взаимодействовать с чипами SPI (например, FT 221xs [33] ). Они используются для встраиваемых систем, чипов ( FPGA , ASIC и SoC ) и периферийного тестирования, программирования и отладки. Многие из них также предоставляют возможности написания скриптов или программирования (например, Visual Basic , C / C++ , VHDL ).

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

Поскольку протокол SPI является фактическим стандартом, некоторые хост-адаптеры SPI также имеют возможность поддерживать другие протоколы, выходящие за рамки традиционного 4-проводного SPI (например, поддержка протокола Quad-SPI или другого пользовательского последовательного протокола, являющегося производным от SPI [34] ).

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

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

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

Формы сигналов SPI можно увидеть на аналоговых каналах (и/или через цифровые каналы в осциллографах смешанных сигналов ). [35] Большинство поставщиков осциллографов предлагают дополнительную поддержку анализа протокола SPI (как 2-, 3-, так и 4-проводного SPI) с запуском.

Альтернативная терминология

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

Microchip использует хост и клиент , хотя сохраняет аббревиатуры MOSI и MISO. [39]

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

Примечания

  1. ^ Самое раннее определенное упоминание "Последовательного периферийного интерфейса" в архивах руководств Motorola bitsavers относится к 1983 году (см. § Первоначальное определение). Хотя некоторые источники в Интернете утверждают, что Motorola представила SPI, когда 68000 был представлен в 1979 году, однако многие из них, по-видимому, являются citogenesis или предположениями, а руководство Motorola 1983 года 68000 не содержит упоминания "Последовательного периферийного интерфейса", поэтому предполагаемая дата 1979 года, похоже, не является надежной информацией. Пожалуйста, добавляйте конкретную дату разработки, только если у вас есть определенный источник от Motorola в отношении того времени.
  2. ^ Использование main и sub сохраняет те же начальные буквы, чтобы оставаться синхронизированными с именами линий. Например, MISO можно расширить как "main in, sub out"
  3. ^ Раздел § Альтернативная терминология дает более подробную информацию о предлагаемой альтернативной терминологии. Смотрите страницу обсуждения для текущего обсуждения.
  4. ^ Для любой данной транзакции только одно устройство является главным. Однако некоторые устройства поддерживают смену главных и подчиненных ролей на лету. Большинство микроконтроллеров могут легко перенастроить роль своего SPI, а некоторые устройства Atmel и Silabs могут менять роли в зависимости от внешнего пина.
  5. ^ Некоторые сабвуферы требуют падающего фронта сигнала Chip Select для инициирования действия. Примером является Maxim MAX1242 ADC, который начинает преобразование при переходе от высокого к низкому уровню.
  6. ^ Передачи часто состоят из восьмибитных слов. Однако другие размеры слов также распространены, например, шестнадцатибитные слова для контроллеров сенсорных экранов или аудиокодеков, таких как TSC2101 от Texas Instruments, или двенадцатибитные слова для многих цифро-аналоговых или аналого-цифровых преобразователей.
  7. ^ В исходной спецификации есть LSBFE («LSB-First Enable»), контролирующий, передаются ли данные первыми: младший (LSB) или старший (MSB) бит.
  8. ^ ab Не путать с линией SDIO (Serial Data I/O) полудуплексной реализации SPI, иногда также называемой "3-проводным" SPI. Здесь, например, MOSI (через резистор) и MISO (без резистора) основного устройства подключены к линии SDIO дополнительного устройства.
  9. ^ Периферийные устройства могут разрешать или требовать определенное количество (или любое количество) байтов передачи при выборе, как указано в их техническом описании.
  10. ^ Сдвиги влево используются, поскольку SPI обычно передает сначала старший бит. Сдвиги вправо можно использовать для передачи сначала младшего бита.
  11. ^ Например, с интерфейсом многоканального последовательного порта (MultiChannel Serial Port Interface, McSPI), используемым в чипах Texas Instruments OMAP. (https://www.ti.com/product/OMAP3530)
  12. ^ Например, контроллер SPI на чипах Atmel AT91, например at91sam9G20, который намного проще, чем McSPI от TI.

Ссылки

  1. ^ Dhaker, Piyu (2018). "Введение в интерфейс SPI". Аналоговый диалог . Архивировано из оригинала 2023-05-25 . Получено 2023-07-21 .
  2. ^ "Что такое последовательный синхронный интерфейс (SSI)?" . Получено 28.01.2015 .
  3. ^ abc Лучшая разработка шины SPI за 3 шага
  4. ^ Руководство по блокам SPI v3.06; Motorola/Freescale/NXP; 2003.
  5. ^ ab "AN991/D: Использование последовательного периферийного интерфейса для связи между несколькими микрокомпьютерами" (PDF) . NXP . 2004 [1994]. Архивировано (PDF) из оригинала 2023-04-04 . Получено 2021-10-14 .
  6. ^ "Справочное руководство по последовательному периферийному интерфейсу TMS320x281x". Texas Instruments . 2002. С. 16–17.
  7. ^ Примечание к применению Maxim-IC 3947: «Последовательное подключение устройств SPI»
  8. ^ ab Gammon, Nick (2013-03-23). ​​"Форум Gammon: Электроника: Микропроцессоры: Использование входного сдвигового регистра 74HC165". Форум Gammon . Архивировано из оригинала 29-07-2023 . Получено 03-08-2023 .
  9. ^ ab Gammon, Nick (2012-01-31). "Форум Gammon: Электроника: Микропроцессоры: Использование выходного сдвигового регистра 74HC595 в качестве расширителя портов". Форум Gammon . Архивировано из оригинала 2023-07-14 . Получено 2023-08-03 .
  10. ^ Интерфейсы, 1977, стр. 80, 84
  11. ^ "Serial-Control Multiplexer Expands SPI Chip Selects" (PDF) . Premier Farnell . 2001-07-01. Архивировано из оригинала (PDF) 2019-08-19.
  12. ^ "AVR910 - Внутрисистемное программирование" (PDF) . Архивировано из оригинала (PDF) 2011-03-02.
  13. ^ компоненты :: motorola :: dataBooks :: 1983 Motorola 8-битный микропроцессор и периферийные данные.
  14. ^ motorola :: dataBooks :: Данные по однокристальным микрокомпьютерам Motorola 1984 года.
  15. ^ «Использование последовательного периферийного интерфейса для связи между несколькими микрокомпьютерами» (PDF) . Bitsavers .
  16. ^ SafeSPI.org
  17. ^ "Передача SPI через интерфейсы LVDS" (PDF) . Texas Instruments . Получено 14 февраля 2021 г. .
  18. ^ "Пример SPI Master Loopback". Nordic Semiconductor . Получено 14 февраля 2021 г.
  19. ^ "Freescale Semiconductor, Inc. - QSM - Queued Serial Module - Reference Manual" (PDF) . NXP . 1996 [1991]. Архивировано из оригинала (PDF) 2019-08-24.
  20. ^ "Quad-SPI обеспечивает быструю параллельную передачу данных". Cadence Design Systems . 2023-01-11. Архивировано из оригинала 2023-06-01 . Получено 2023-06-30 .
  21. ^ MICROWIRE Последовательный интерфейс National Semiconductor Application Note AN-452
  22. ^ Последовательный интерфейс MICROWIRE/PLUS для семейства COP800. Национальная заметка по применению полупроводников AN-579.
  23. ^ ab "W25Q16JV 3V 16M-bit serial flash memory with Dual/Quad SPI" (PDF) (техническое описание). Редакция D. Winbond . 12 августа 2016 г. Получено 10 февраля 2017 г.
  24. ^ abc "D25LQ64 1.8V Uniform Sector Dual and Quad SPI Flash" (PDF) (техническое описание). версия 0.1. GigaDevice. 11 февраля 2011 г. Архивировано из оригинала (PDF) 12 февраля 2017 г. Получено 10 февраля 2017 г.
  25. ^ "QuadSPI flash: режим Quad SPI против режима QPI". Форумы сообщества NXP . Декабрь 2014 г. Получено 10 февраля 2016 г.
  26. ^ "SST26VF032B / SST26VF032BA 2.5V/3.0V 32 Mbit Serial Quad I/O (SQI) Flash Memory" (PDF) (Технический паспорт). версия E. Microchip, Inc. 2017 . Получено 2017-02-10 .
  27. ^ Паттерсон, Дэвид (май 2012 г.). "Обновления модуля Quad Serial Peripheral Interface (QuadSPI)" (PDF) (Примечание к применению). Freescale Semiconductor . Получено 21 сентября 2016 г. .
  28. ^ Пелл, Рич (13 октября 2011 г.). «Повышение производительности с использованием флэш-памяти SPI-DDR NOR». EDN .
  29. ^ IEEE 1149.1-2013
  30. ^ abcdefgh Базовая спецификация интерфейса Enhanced Serial Peripheral Interface (eSPI) (для клиентских и серверных платформ) (PDF) (Отчет). Версия 1.0. Intel. Январь 2016 г. Номер документа 327432-004 . Получено 05.02.2017 .
  31. ^ Спецификация интерфейса Enhanced Serial Peripheral Interface (eSPI) (для клиентских платформ) (PDF) (Отчет). Версия 0.6. Intel. Май 2012 г. Номер документа 327432-001EN . Получено 05.02.2017 .
  32. ^ "Intel® 100 Series Chipset Family PCH Datasheet, Vol. 1" (PDF) . Получено 15 апреля 2015 г. .
  33. ^ "USB to SPI converter". FTDI . 2 августа 2020 . Получено 14 февраля 2021 .
  34. ^ SPI Storm – хост-адаптер последовательного протокола с поддержкой пользовательских последовательных протоколов, Byte Paradigm.
  35. ^ «Запуск и декодирование протоколов N5391B I²C и SPI для осциллографов Infiniium».
  36. ^ ab SPI; OSHWA.
  37. ^ ab https://www.ti.com/lit/an/scea091a/scea091a.pdf [ пустой URL-адрес PDF ]
  38. ^ ab "Устройства последовательного периферийного интерфейса (SPI)". NXP . Архивировано из оригинала 2023-06-01 . Получено 2023-07-22 .
  39. ^ Стоическу, Алин. "Начало работы с последовательным периферийным интерфейсом (SPI)". Microchip Technology . Архивировано из оригинала 2023-12-21 . Получено 2023-12-21 .

Внешние ссылки