spi controller что это

AVR Урок 24. Знакомство с шиной SPI

Урок 24

Знакомство с шиной SPI

Сегодня мы начинаем знакомство с шиной SPI (Serial Peripheral Interface).

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

Ещё одним важнейшим фактором необходимости нашего с ней знакомства является то, что данная шина аппаратно организована в контроллерах AVR.

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

Поэтому хочется познакомиться с данной шиной поближе.

Давайте откроем техническую документацию на контроллер Atmega8, откроем страницу, где изображена распиновка данного контроллера и посмотрим, что от 16 до 19 ножки и находятся выводы шины SPI

Теперь немного подробнее о данных выводах

SS (chip select) – это ножка выбора устройства. Если на ведомом устройстве на данной ножке установится низкий уровень, то данное устройство будет откликаться и обмениваться информацией по шине SPI, если высокий, то не будет.

MOSI (master output slave input) – это ножка выхода ведущего устройства и входа ведомого устройства.

MISO (master input slave output) – наоборот, выход ведомого, вход ведущего.

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

Вот схема реализации шины SPI в контроллере Atmega8

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

Нам интересен SHIFT REGISTER, через него и происходит обмен информации. Как только на ножке синхронизации будет определённый фронт, или нисходящий или восходящий, в зависимости от настройки, данные регистры у ведомого и ведущего устройства обменяются информацией, причем не всей информацией, а только одним битом. Данные регистры сдвинутся влево и старшие биты из каждого регистра уйдут в младшие биты такого же регистра сопряженного устройства. То есть ведомый передаст свой старший бит через ножку MOSI ведущему, который его запишет в освободившийся засчет сдвига влево младший бит, а ведомый свой вытесненный засчет сдвига передаст старший бит через ножку MISO в младший бит ведущего. Вот так и идёт обмен, то есть за 8 полных циклов тактирования они полностью обменяются байтами

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

Также в блок-схеме мы видим делитель, на вход которого поступают тактовые импульсы и уже потом разделённые на определенное значение поступают по цепочке на ножку SCK и уже оттуда подаются на ведомое устройство на одноимённую ножку. Этим и обеспечивается синхронность работы устройств. Частота тактовых импульсов выбирается из наименьшей поддерживаемой всеми устройствами, участвующими в обмене.

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

Существует несколько способов обена информацией между несколькими устройствами, то есть когда на одно ведущее устройство приходится несколько ведомых. Мы рассмотрим два самых распространённых из них.

Первый способ – радиальный (нажмите на картинку для увеличения изображения)

Здесь мастер направляет данные к определённому устройству, включая на ножке SS логический 0. При данном способе возможно выбрать только одно устройство, также потребуются несколько свободных ножек портов контроллера.

Есть ещё один интересный способ – кольцевой или каскадный (нажмите на картинку для увеличения изображения)

Здесь мы видим, что ножки выбора все запараллелены и обмен идёт по кругу. Тем самым скорость падает, засчёт того, что увеличивается круг передачи, но зато экономятся лапки портов.

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

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

Теперь разберёмся, как же данным процессом управлять на уровне аппаратных регистров контроллера AVR.

Данные регистры мы видим в блок-схеме выше на странице.

У Atmega8 существуют следующие регистры для обслуживания шины SPI.

SPDR (SPI Data Register) – регистр данных, в блок-схеме это DATA BUFFER. В этот регистр мы будем заносить байт для последующей его передачи на ведомое устройство и из него же будем читать байт информации, пришедший с ведомого устройства. Также не обязательно что у нас контроллер будет ведущим устройством. Впоследствии мы соберём схему из двух контроллеров, один из которых будет ведомым. Так что именно в этом регистре будет находиться байт и для отправки и для приёма.

SPCR (SPI Control Register) – управляющий регистр

Данный регистр включает в себя следующие биты:

SPIE (SPI Interrupt Enable) – бит, который разрешает прерывания.

SPE (SPI Enable) – бит, включающий шину SPI.

DORD (Data Order) – бит, устанавливающий порядок отправки бит, Если он установлен в 1, то первым отправляется младший бит, если в 0 – старший.

MSTR (Master/Slave Select) – бит, который назначает устройство ведущим либо ведомым. При установке данного бита 1 устройство будет ведущим.

CPOL (Clock Polarity) – полярность синхронизации, определяет, при каком фронте синхронизирующего импульса будет инициироваться режим ожидания

Если данный бит в 1, то режим ожидания будет у нас при восходящем фронте, а если в 0, то при нисходящем.

CPHA (Clock Phase) – бит, отвечающий за фазу тактирования, то есть по какому именно фронту будет осуществляться передача бита.

Посмотрим диаграммы передачи данных в зависимости от установки CPOL и CPHA

Вот такая вот интересная зависимость. Порой мы иногда видим в технических характеристиках какого нибудь устройства, что оно, к примеру, может работать в режиме SPI 0:0 и SPI 1:1, вот это как раз и касается настройки этих битов.

SPR1, SPR0 (SPI Clock Rate Select) – это биты, отвечающие за значение делителя частоты синхронизации, работают совместно с битом SPI2X, находящемся в регистре статуса. Он также управляющий, так как восьми бит в управляющем регистре под все настройки не хватило, а в статусном много свободных.

SPSR (SPI Status Register) – статусный регистр

SPI2X (Double SPI Speed Bit) – бит, удваивающий скорость, работающий совместно с битами SPR1 и SPR0 управляющего регистра.

Посмотрим зависимость частоты от данных трёх битов

SPIF (SPI Interrupt Flag) – Флаг прерывания. Установку данного бита в единицу мы ждём. когда принимаем байт. Как только байт от другого устройства появится полностью у нас в буфере, то данный флаг установится. Данный флаг работает только в случае установки бита, разрешающего прерывания, а также разрешения глобальных прерываний.

WCOL (Write COLlision Flag) – флаг конфликта, или коллизий, установится в том случае, если во время передачи данных будет конфликт битов, если во время передачи данных выполнится попытка записи в регистр данных.

Ну теперь мы, можно сказать, немного познакомились с интерфейсом SPI.

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

Купить программатор можно здесь (продавец надёжный) USBASP USBISP 2.0

Смотреть ВИДЕОУРОК (нажмите на картинку)

Источник

Данная статья является кратким дискурсом по шине SPI и не должна восприниматься как точная техническая документация. Рассматривается только полнодуплексный вариант применения.

Общие сведения:

Несмотря на то, что интерфейс называется 4-х проводным, для подключения нескольких ведомых понадобится по одному проводу SS для каждого ведомого (в полнодуплексной реализации). Сигналы MISO, MOSI и SCK являются общими для всех устройств на шине. Ведущий посылает сигнал SS для того ведомого, обмен данными с которым будет осуществляться. Простыми словами, все ведомые, кроме выбранного ведущим будут игнорировать данные на шине. SS является инверсным (active-low), что означает что ведущему необходимо прижать эту линию для выбора ведомого.

Подключение:

SPI на Arduino:

Arduino UNO/Piranha UNO/Arduino ULTRA

На Arduino UNO/Piranha UNO/Arduino ULTRA выводы аппаратного SPI расположены на 10, 11, 12 и 13 выводах, а так же эти выводы соединены с колодкой ICSP (in circuit serial programmer):

Сигнал Вывод
SS 10
MOSI 11
MISO 12
SCK 13

Arduino MEGA

На Arduino MEGA выводы аппаратного SPI расположены на 50, 51, 52 и 53 выводах, а так же эти выводы соединены с колодкой ICSP (in circuit serial programmer):

Сигнал Вывод
SS 53
MOSI 51
MISO 50
SCK 52

Пример для Arduino

В этих примерах мы соединим две Arduino по SPI по следующей схеме:

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

Arduino UNO в качестве ведущего:

Arduino UNO в качестве ведомого:

После соединения двух Arduino по SPI и загрузки соответствующих скетчей, мы будем получать следующее сообщение в мониторе последовательного порта ведомого микроконтроллера раз в секунду:

SPI на Raspberry Pi

На Raspberry Pi выводы аппаратного SPI расположены на выводах GPIO7, GPIO8, GPIO9, GPIO10, GPIO11:

Подробное описание как это сделать можно посмотреть по ссылке Raspberry Pi, включаем I2C, SPI

Пример работы с SPI на Python:

В отличие от Arduino для Raspberry не существует простых решений для работы в режиме ведомого. Подробней ознакомиться с работой чипа BCM Raspberry можно в технической документации на официальном сайте, стр. 160.

Для проверки работы сценария можно подключить Raspberry по SPI к Arduino со скетчем из примера выше через преобразователь уровней или Trema+Expander Hat:

Подробнее о SPI

Параметры

Существуют четыре режима работы SPI, зависящие от полярности (CPOL) и фазы (CPHA) тактирования:

Режим Полярность Фаза Фронт тактирования Фронт установки бита данных
SPI_MODE0 0 0 Спадающий Нарастающий
SPI_MODE1 0 1 Нарастающий Спадающий
SPI_MODE2 1 0 Нарастающий Спадающий
SPI_MODE3 1 1 Спадающий Нарастающий

В Arduino IDE для установки режима необходимо передать функции, возвращающей объект настроек параметр режима работы SPI_MODE, например:

Для выбора режима работы SPI на Raspberry Pi необходимо вызвать дескриптор объекта SpiDev().mode и присвоить ему битовые значения CPOL и CPHA, например:

Скорость передачи данных

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

Источник

SPI контроллер и SPI RGB лента.

В последние годы светотехнический рынок обогатился RGB лентами с попиксельным управлением – так называемыми SPI контроллер и SPI RGB лента. В отличие от своих предшественниц, они позволяют изменять (как фиксировано, так и динамически) яркость и цвет не только всей линии, но и каждого светодиода или юнита отдельно. Это выводит их на качественно новый уровень возможностей, позволяя создавать эффекты бегущего огня, тени, капли и множество других – с настройкой размера, цвета, направления и скорости «движущихся» фрагментов, их количества, пульсаций, пред- и послесвечения, изменений фона и многого другого. Такие функции, естественно, обеспечивают ещё более широкое и эффектное применение подобных изделий для световой рекламы, медиафасадов, оформления праздников и шоу, интерьерной, архитектурной и ландшафтной декоративной подсветки.

Управление SPI

Управление SPI и DMX управление светодиодными источниками света это особый вид управляемых светодиодных источников света. Если говорить кратко то, как и в многоцветных RGB лентах, используются трехцветные светодиоды с красным (R), зеленым (G) и синим (B) свечением. Отличие обычного DMX устройства от SPI в том, что в устройствах SPI Каждый светодиод является отдельным устройством и управляется отдельно (3 диода разных цветов или несколько таких групп) питается от встроенного в ленту возле него микро чипа-драйвера, который и регулирует свечение в соответствии с последним пришедшим кодом.

Принципиальная особенность управление SPI заключается в том, что кроме светодиодов, непосредственно на ленту или внутрь модулей, монтируются микросхемы управления, в следствии чего появляется возможность управлять не только всеми светодиодами одновременно, но и каждым светодиодом или группой из нескольких светодиодов в отдельности. Эта группа называется «пиксель». В разных типах ленты содержится разное количество светодиодов в пикселе. LED-ленты и модули с напряжением питания 12В обычно имеют по 3 RGB светодиода на пиксель, с питанием 24В – по 6 светодиодов на пиксель. В светодиодных лентах и модулях с напряжением питания 5В управление обычно осуществляется каждым светодиодом отдельно, причем микросхема управления может быть встроена в корпус самого RGB светодиода.

Работой светодиодных лент «Бегущий огонь», «гибкий неон» и флеш-модулями управляют пиксельные контроллеры, которые формируют цифровой сигнал управления.

Пиксельная светодиодная лента бегущий огонь

Управляемый «гибкий неон»

Флеш-модули

Различные типы SPI контроллеров

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

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

Контроллеры, работающие под непрерывным управлением компьютера (On Line). Программы в этом случае также создаются пользователем на ПК и там-же выполняются. Контроллер к компьютеру обычно подключается через порт USB или по локальной сети, используя сетевую карту компьютера.

Архитектурная мультимедийная подсветка зданий с использованием системы управления DMX SPI и SPI совместимых светильников.

Какими бывают SPI контроллер и SPI RGB лента.

Как и обычные RGB, SPI контроллер и SPI RGB лента могут иметь влагозащищенное исполнение и боковое свечение (модели со словом Side в названии). Последнее достигается применением специальных светодиодов с оптическими осями параллельными плоскости пайки. Такие модели удобны для монтажа в узких щелях или на горизонтальных поверхностях при горизонтальном же направлении максимума излучения, что очень часто требуется в подсветке дизайнерских потолков и наружных архитектурных элементов, для окантовки вывесок и рекламных щитов или отдельных объёмных букв и т. п.

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

Управление SPI RGB лент (от английского Serial Peripheral Interface) последовательный: каждый драйвер «берёт» из управляющего кода свою часть информации, а остальное переправляет на следующий. Поэтому выход из строя любого из них останавливает всю ленту. Но благодаря огромному сроку службы и высокой надёжности светодиодов отказы происходят крайне редко, в основном только из-за механических повреждений. Зато не требуется более хлопотная пуско-наладка с прописыванием индивидуального адреса каждого пикселя, как в более универсальном протоколе DMX, а любой повреждённый участок ленты достаточно просто физически – без какой-либо последующей настройки – заменить аналогичной по количеству пикселей (юнитов), то есть просто такой же длины. (Напомним, что юнитами называются кратчайшие отрезки ленты с повторяющейся структурой, по специально обозначенным границам которых её можно резать).

SPI контроллер и SPI RGB лента – принцип действия.

Формируется управляющий сигнал специальным внешним устройством – SPI контроллером, часто содержащим также импульсный стабилизатор для силового питания. В некоторых моделях его напряжение переключается на 5, 12 и 24 В для совместимости с любой лентой. Амплитуды же сигналов (как и сам протокол) на информационных выходах DATA и CLK унифицированы на всех устройствах под уровни TTL. В некоторых системах для управления используется только один провод DATA, но двухпроводные работают стабильнее, имеют выше частоту обновления и скорость обмена данными, что позволяет воспроизводить более сложные и динамичные световые эффекты.

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

SPI контроллер и SPI RGB лента – принципиальная схема.

На SPI RGB лентах изображены стрелки, обозначающие направление передачи управляющих сигналов (так, кстати, легче всего – не разглядывая мелкие буквы – отличать их от обычных RGB лент, концы которых равноправны). Подключение следует производить так, чтобы стрелки указывали в направлении ОТ контроллера к дальнему концу ленты. Другими словами, чтобы выход DATA на SPI контроллере соединялся с входом DI (или DIN) ленты, а её выход DO (или DOUT) – со следующей лентой, если таковая используется. Аналогично при двухпроводном управлении подключаются входы/выходы CLK, CIN и COUT. Вообще суммарная длина подключаемых лент выбирается так, чтобы количество пикселей в них не превышало поддерживаемое данным контроллером. Для значений свыше 1024 существуют контроллеры с несколькими выходными портами.

Схема подключения SPI RGB лент к контролеру.

Управление SPI практические советы.

Из-за низковольтного питания ток, потребляемый светодиодными лентами достаточно велик, а сечение печатных проводников в них ограничено. Падение же напряжения сразу вызывает изменение цветов, а значительное может привести и к сбою в работе. Поэтому, даже если мощности встроенного в SPI контроллер блока питания хватает на все подключаемые к нему ленты, примерно каждые 2,5 их метра должны быть подключены не через предыдущий участок лент, а через дублирующие медные проводники сечением не менее 0,35 кв. мм на каждый ампер потребления и каждые 10 м расстояния. И на цельную 5-метровую ленту питание лучше подавать с обеих сторон. При больших расстояниях бывает рациональнее непосредственно возле точек дополнительного питания расположить несколько маломощных источников – обязательно с защитой от встречного тока на выходе. Блок питания контроллера также должен её иметь или не использоваться для лент.

Управление SPI схема управления.

SPI контроллер и SPI RGB лента – принципиальная схема подключения Artnet.

В данной статье мы кратко описали как работает SPI контроллер и SPI RGB лента подробнее о подобных системах управления читайте в наших следующих статьях.

Источник

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

СОДЕРЖАНИЕ

Интерфейс

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

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

Примечание: на ведомом устройстве MOSI может быть обозначен как SDI (последовательный ввод данных), а MISO может быть обозначен как SDO (последовательный вывод данных).

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

Многие продукты могут иметь нестандартные имена контактов SPI:

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

Главный вход ← Ведомый выход (MISO):

Операция

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

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

Передача информации

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

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

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

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

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

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

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

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

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

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

Режим SPI Полярность часов
(CPOL / CKP)
Фаза часов
(CPHA)
Фронт часов (CKE / NCPHA)
0 0 0 1
1 0 1 0
2 1 0 1
3 1 1 0

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

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

Режим CPOL CPHA
0 0 0
1 0 1
2 1 0
3 1 1

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

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

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

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

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

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

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

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

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

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

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

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

Прерывания

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

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

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

За и против

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

Недостатки

Приложения

В проектах на основе микросхем или ПЛИС иногда используется SPI для связи между внутренними компонентами; встроенная недвижимость может быть такой же дорогой, как и ее бортовой двоюродный брат.

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

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

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

Стандарты

Первоначально SPI Bus был разработан Motorola. Первоначальным определяющим документом был Motorola Application Node AN991. Когда Freescale отделилась от Motorola, ответственность за AN991 перешла на Freescale. Когда NXP приобрела Freescale, NXP также приняла на себя ответственность за AN991, который последний раз пересматривался в январе 2002 года как AN991 / D и до сих пор служит «официальным» определяющим документом для шины SPI.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Двойной SPI

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

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

Quad SPI

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

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

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

QPI / SQI

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Читайте также:  асус гифтбокс что это
Информ портал о технике и не только