stringtranslate.com

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

Serial Peripheral Interface ( SPI ) — это стандарт де-факто (со многими вариантами) для синхронной последовательной связи , используемый в основном во встроенных системах для проводной связи на коротких расстояниях между интегральными схемами .

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

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

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

SPI можно точно описать как синхронный последовательный интерфейс [2] , но он отличается от протокола синхронного последовательного интерфейса (SSI). [примечание 4]

Операция

(Примечание: в разделе «Вариации» описывается работа нестандартных вариантов.)

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

SPI имеет четыре логических сигнала (которые могут иметь альтернативные названия):

MOSI на основном выходе на MOSI на сабвуфере. MISO на сабвуфере выводит на MISO на главном.

SPI работает с одним устройством, выступающим в качестве основного, и с одним или несколькими вспомогательными устройствами.

Вспомогательные устройства должны использовать выходы с тремя состояниями , чтобы их сигнал 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 (для полярности синхронизации и фазы синхронизации ) соответственно, и это соглашение также приняло большинство производителей.

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

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

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

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

Примечания:

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

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

Прерывания

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

От основного к суб

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

От сабвуфера к основному

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

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

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

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

Псевдокод ниже описывает программную реализацию (« битовую обработку ») протокола SPI как основного с одновременным выводом и вводом. Этот псевдокод предназначен для CPHA=0 и CPOL=0, таким образом, SCLK устанавливается на низкий уровень перед активацией CS , и биты вводятся по нарастающему фронту SCLK, а биты выводятся по заднему фронту SCLK.

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

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

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

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

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

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

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

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

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

За и против

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

Недостатки

Приложения

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

Экономия на площади платы и проводке по сравнению с параллельной шиной значительна и обеспечила SPI прочную роль во встраиваемых системах. Это верно для большинства процессоров «система-на-кристалле» , как для 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.

Варианты времени

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

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

Размер передачи

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

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

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

Разъемы

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

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

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

СафеСПИ

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

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

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

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

Последовательный периферийный интерфейс с очередью ( 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. Микропроводным микросхемам, как правило, требуется более низкая тактовая частота, чем более новым версиям SPI; возможно, 2 МГц против 20 МГц. Некоторые микросхемы Microwire также поддерживают трехпроводный режим.

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

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

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

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

Двойной интерфейс SPI

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

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

Четырехпроводной интерфейс SPI

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

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

QPI/SQI

В дополнение к четырехканальному SPI некоторые устройства поддерживают режим «четверо все», в котором вся связь происходит по 4 линиям передачи данных, включая команды. [25] Его по-разному называют «QPI» [24] (не путать с Intel QuickPath Interconnect ) или «последовательный четырехканальный ввод-вывод» (SQI) [26]

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

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

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

JTAG

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

СГПИО

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

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

Intel разработала преемницу своей шины с малым количеством выводов (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 для запроса услуги от основного. В дизайне, ориентированном на производительность, или в дизайне только с одним подключаемым модулем eSPI, каждый подключаемый модуль eSPI будет иметь свой вывод Alert#, подключенный к выводу Alert# на главном eSPI, который выделен для каждого подключаемого модуля, что позволяет основному eSPI обеспечивать низкую задержку. служба, поскольку главный eSPI будет знать, какой дополнительный eSPI нуждается в обслуживании, и ему не нужно будет опрашивать все подчиненные устройства, чтобы определить, какое устройство нуждается в обслуживании. В бюджетной конструкции с более чем одним сабвуфером eSPI все контакты Alert# сабвуферов подключены к одному контакту Alert# на главном eSPI по проводному соединению «ИЛИ», что требует, чтобы основной опрашивал все сабвуферы, чтобы определить, какой из них им требуется обслуживание, когда сигнал 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]

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

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

Одноплатные компьютеры могут обеспечивать доступ к выводам аппаратных блоков 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) с запуском.

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

Термин «главное» обычно используется для обозначения главного устройства и «подчиненного» для периферийных (под) устройств. Эти термины отражают то, как основное устройство отвечает за управление последовательными часами и инициирование связи: периферийные устройства могут взаимодействовать только тогда, когда основное устройство управляет часами.

Были предложены различные более современные альтернативные названия для каждого из четырех сигналов:

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

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

Примечания

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

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

  1. ^ Дакер, Пию (2018). «Введение в интерфейс SPI». Аналоговый диалог . Архивировано из оригинала 25 мая 2023 г. Проверено 21 июля 2023 г.
  2. ^ «Что такое последовательный синхронный интерфейс (SSI)?» . Проверено 28 января 2015 г.
  3. ^ abc Лучшее проектирование шины SPI за 3 шага
  4. ^ Руководство по блокам SPI v3.06; Моторола/Freescale/NXP; 2003.
  5. ^ ab «AN991/D: Использование последовательного периферийного интерфейса для связи между несколькими микрокомпьютерами» (PDF) . НХП . 2004 [1994]. Архивировано (PDF) из оригинала 4 апреля 2023 г. Проверено 14 октября 2021 г.
  6. ^ «Справочное руководство по последовательному периферийному интерфейсу TMS320x281x» . Инструменты Техаса . 2002. стр. 16–17.
  7. ^ Примечание по применению Maxim-IC 3947: «Последовательное подключение устройств SPI»
  8. ^ Аб Гаммон, Ник (23 марта 2013 г.). «Форум Gammon: Электроника: Микропроцессоры: Использование входного сдвигового регистра 74HC165». Гаммонный форум . Архивировано из оригинала 29 июля 2023 г. Проверено 03 августа 2023 г.
  9. ^ Аб Гаммон, Ник (31 января 2012 г.). «Форум Gammon: Электроника: Микропроцессоры: Использование выходного сдвигового регистра 74HC595 в качестве расширителя портов». Гаммонный форум . Архивировано из оригинала 14 июля 2023 г. Проверено 03 августа 2023 г.
  10. ^ Интерфейсы, 1977, стр. 80, 84.
  11. ^ «Мультиплексор последовательного управления расширяет выбор микросхем SPI» (PDF) . Премьер Фарнелл . 01 июля 2001 г. Архивировано из оригинала (PDF) 19 августа 2019 г.
  12. ^ «AVR910 — Внутрисистемное программирование» (PDF) . Архивировано из оригинала (PDF) 2 марта 2011 г.
  13. ^ компоненты :: Motorola :: DataBooks :: 8-битный микропроцессор Motorola и периферийные данные, 1983 г.
  14. ^ Motorola :: DataBooks :: Данные однокристального микрокомпьютера Motorola, 1984 г.
  15. ^ «Использование последовательного периферийного интерфейса для связи между несколькими микрокомпьютерами» (PDF) . Битсейверы .
  16. ^ SafeSPI.org
  17. ^ «Передача SPI через интерфейсы LVDS» (PDF) . Инструменты Техаса . Проверено 14 февраля 2021 г.
  18. ^ «Пример шлейфа главного SPI» . Северный полупроводник . Проверено 14 февраля 2021 г.
  19. ^ «Freescale Semiconductor, Inc. — QSM — Последовательный модуль с очередью — Справочное руководство» (PDF) . НХП . 1996 [1991]. Архивировано из оригинала (PDF) 24 августа 2019 г.
  20. ^ «Quad-SPI обеспечивает быструю параллельную передачу данных» . Системы проектирования Cadence . 11 января 2023 г. Архивировано из оригинала 01 июня 2023 г. Проверено 30 июня 2023 г.
  21. ^ MICROWIRE Последовательный интерфейс National Semiconductor Application Note AN-452
  22. ^ Последовательный интерфейс MICROWIRE/PLUS для семейства COP800. Примечание по применению National Semiconductor AN-579.
  23. ^ ab «W25Q16JV 3 В, 16 Мбит последовательной флэш-памяти с Dual/Quad SPI» (PDF) (технические данные). Редакция Д. Винбонд . 12 августа 2016 года . Проверено 10 февраля 2017 г.
  24. ^ abc «D25LQ64, 1,8 В, равномерная секторная флэш-память с двумя и четырьмя SPI» (PDF) (технические данные). версия 0.1. ГигаДевайс. 11 февраля 2011 г. Архивировано из оригинала (PDF) 12 февраля 2017 г. . Проверено 10 февраля 2017 г.
  25. ^ «Вспышка QuadSPI: режим Quad SPI и режим QPI» . Форумы сообщества NXP . Декабрь 2014 года . Проверено 10 февраля 2016 г.
  26. ^ «SST26VF032B / SST26VF032BA 2,5 В/3,0 В, 32 Мбит флэш-память с четырьмя последовательными вводами-выводами (SQI)» (PDF) (технические данные). версия E. Microchip, Inc. 2017 г. Проверено 10 февраля 2017 г.
  27. ^ Паттерсон, Дэвид (май 2012 г.). «Обновления модуля четырехпоследовательного периферийного интерфейса (QuadSPI)» (PDF) (примечания по применению). Фрискейл Полупроводник . Проверено 21 сентября 2016 г.
  28. Пелл, Рич (13 октября 2011 г.). «Повышение производительности с помощью флэш-памяти SPI-DDR NOR». ЭДН .
  29. ^ IEEE 1149.1-2013.
  30. ^ abcdefgh Базовая спецификация интерфейса расширенного последовательного периферийного интерфейса (eSPI) (для клиентских и серверных платформ) (PDF) (Отчет). Версия 1.0. Интел. Январь 2016. Номер документа 327432-004 . Проверено 5 февраля 2017 г.
  31. ^ Спецификация интерфейса расширенного последовательного периферийного интерфейса (eSPI) (для клиентских платформ) (PDF) (Отчет). Версия 0.6. Интел. Май 2012 г. Номер документа 327432-001EN . Проверено 5 февраля 2017 г.
  32. ^ «Техническое описание PCH семейства наборов микросхем Intel® серии 100, том 1» (PDF) . Проверено 15 апреля 2015 г.
  33. ^ «Конвертер USB в SPI» . ФТДИ . 2 августа 2020 г. Проверено 14 февраля 2021 г.
  34. ^ SPI Storm - хост-адаптер последовательного протокола с поддержкой пользовательских последовательных протоколов, байтовая парадигма.
  35. ^ «N5391B Запуск и декодирование протоколов I²C и SPI для осциллографов Infiniium» .
  36. ^ аб СПИ; ОШВА.
  37. ^ аб https://www.ti.com/lit/an/scea091a/scea091a.pdf
  38. ^ ab «Устройства последовательного периферийного интерфейса (SPI)» . НХП . Архивировано из оригинала 01 июня 2023 г. Проверено 22 июля 2023 г.
  39. ^ Стойческу, Алин. «Начало работы с последовательным периферийным интерфейсом (SPI)». Микрочиповая технология . Архивировано из оригинала 21 декабря 2023 г. Проверено 21 декабря 2023 г.

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