Bauman National Library
Персональные инструменты
Видео:AVR 38# Последовательный интерфейс SPIСкачать
SPI (Serial Peripheral Interface)
SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный периферийный интерфейс, служит для связи периферии и микроконтроллера. Например, в качестве периферии может быть: дисплей, различные датчики, FLASH память, SD карта (да, да, SD карта или «флешка» которую вы используете в телефонах и фотоаппаратах общается с внешним миром с помощью интерфейса SPI) и т.д.Интерфейс SPI, наряду с I2C, относится к самым широко-используемым интерфейсам для соединения микросхем. Изначально он был придуман компанией Motorola, а в настоящее время используется в продукции многих производителей. Его наименование является аббревиатурой от ‘Serial Peripheral Bus’, что отражает его предназначение — шина для подключения внешних устройств. Шина SPI организована по принципу ‘ведущий-подчиненный’. В качестве ведущего шины обычно выступает микроконтроллер, но им также может быть программируемая логика, DSP-контроллер или специализированная ИС. Подключенные к ведущему шины внешние устройства образуют подчиненных шины. В их роли выступают различного рода микросхемы, в т.ч. запоминающие устройства (EEPROM, Flash-память, SRAM), часы реального времени (RTC), АЦП/ЦАП, цифровые потенциометры, специализированные контроллеры и др. Устройства SPI взаимодействуют в полнодуплексном режиме, используя архитектуру master-slave с одним ведущим устройством. Главное устройство инициирует кадр для чтения и записи. Иногда SPI называют четырехпроводной последовательной шиной, контрастирующей с трех-, двух-и однопроводными последовательными шинами. SPI может рассматриваться, как синхронный последовательный интерфейс, но он отличается от протокола синхронного последовательного интерфейса (SSI), который также является четырехпроводным синхронным последовательным протоколом связи. Протокол SSI использует дифференциальную сигнализацию и предоставляет только один симплексный канал связи. [Источник 1] .
Видео:Лекция 307. Интерфейс SPIСкачать
Интерфейс
В SPI используются четыре цифровых сигнала:
- MOSI или SI – выход ведущего, вход ведомого (англ. Master Out Slave In). Служит для передачи данных от ведущего устройства ведомому;
- MISO или SO – вход ведущего, выход ведомого (англ. Master In Slave Out). Служит для передачи данных от ведомого устройства ведущему.
- SCK или SCLK – последовательный тактовый сигнал (англ. Serial CLocK). Служит для передачи тактового сигнала для ведомых устройств.
- CS или SS – выбор микросхемы, выбор ведомого (англ. Chip Select, Slave Select).Как правило, выбор микросхемы производится низким логическим уровнем.
В зависимости от комбинаций полярности и фазы синхроимпульсов возможны четыре режима работы SPI. [Источник 2] . Хотя приведенные выше имена контактов являются наиболее популярными, в прошлом иногда использовались альтернативные соглашения об именовании контактов, поэтому имена контактов портов SPI для более старых продуктов IC могут отличаться от тех, которые представлены ниже:
Режим SPI | Временная диаграмма |
Режим SPI0 |
Активные уровень импульсов — высокий. Сначала защёлкивание, затем сдвиг.
Активные уровень импульсов — высокий. Сначала сдвиг, затем защёлкивание.
Активные уровень импульсов — низкий. Сначала защёлкивание, затем сдвиг.
Активные уровень импульсов — низкий. Сначала сдвиг, затем защёлкивание.
- MSB — старший бит;
- LSB — младший бит.
Мастеру приходится настраиваться на тот режим, который используется ведомым. При обмене данными по интерфейсу SPI микроконтроллер может работать как ведущий (режим Master) либо как ведомый (режим Slave). При этом пользователь может задавать следующие параметры:
- режим работы в соответствии с таблицей;
- скорость передачи;
- формат передачи (от младшего бита к старшему или наоборот).
Видео:Передача данных - шина SPIСкачать
Операции
Шина SPI может работать с одним ведущим устройством и с одним или несколькими ведомыми устройствами.
Если одно ведомое устройство используется, то SS может быть зафиксирован на низком логическом уровне, если позволяет ведомое устройство. Некоторые ведомые устройства требуют понижение сигнала чипа для начала действий. Примером может служить Maxim MAX1242 ADC, который запускает преобразование при переходе high→low. С множественными ведомыми устройствами, независимый сигнал SS необходим от ведущего для каждого ведомого устройства.
Большинство ведомых устройств имеют три состояния выходов, поэтому их сигнал MISO будет высокоимпедансным, когда устройство не выбрано.
Передача данных
Рисунок 1 — Типичная конфигурация системы с использованием двух сдвиговых регистров для формирования интер-чипа кольцевого буфера
Протокол передачи по интерфейсу SPI предельно прост и, по сути, идентичен логике работы сдвигового регистра, которая заключается в выполнении операции сдвига и, соответственно, побитного ввода и вывода данных по определенным фронтам сигнала синхронизации. Установка данных при передаче и выборка при приеме всегда выполняются по противоположным фронтам синхронизации. Это необходимо для гарантирования выборки данных после надежного их установления. Если к этому учесть, что в качестве первого фронта в цикле передачи может выступать нарастающий или падающий фронт, то всего возможно четыре варианта логики работы интерфейса SPI. Эти варианты получили название режимов SPI и описываются двумя параметрами:\
- CPOL — исходный уровень сигнала синхронизации (если CPOL=0, то линия синхронизации до начала цикла передачи и после его окончания имеет низкий уровень (т.е. первый фронт нарастающий, а последний — падающий), иначе, если CPOL=1, — высокий (т.е. первый фронт падающий, а последний — нарастающий));
- CPHA — фаза синхронизации; от этого параметра зависит, в какой последовательности выполняется установка и выборка данных (если CPHA=0, то по переднему фронту в цикле синхронизации будет выполняться выборка данных, а затем, по заднему фронту, — установка данных; если же CPHA=1, то установка данных будет выполняться по переднему фронту в цикле синхронизации, а выборка — по заднему).
Ведущая и подчиненная микросхемы, работающие в различных режимах SPI, являются несовместимыми, поэтому, перед выбором подчиненных микросхем важно уточнить, какие режимы поддерживаются ведущим шины. Аппаратные модули SPI, интегрированные в микроконтроллеры, в большинстве случаев поддерживают возможность выбора любого режима SPI и, поэтому, к ним возможно подключение любых подчиненных SPI-микросхем (относится только к независимому варианту подключения). Кроме того, протокол SPI в любом из режимов легко реализуется программно.
Часы полярности и фазы
Как показано на рисунке 2, в дополнение к установке тактовой частоты, ведущий должен также установить полярность и временной участок по отношению к данным. Временная диаграмма на рисунке, показывает полярность и фазу часов — красные линии обозначают начальные края часов,а синие-конечные.
Рисунок 2 — Временная диаграмма SPI
Возможны четыре комбинации фазы (CPHA) и полярности (CPOL) сигнала SCLK по отношению к сигналам данных. Режимы работы определяются комбинацией бит CPHA и CPOL:
- CPOL = 0 — сигнал синхронизации начинается с низкого уровня;
- CPOL = 1 — сигнал синхронизации начинается с высокого уровня;
- CPHA = 0 — выборка данных производится по переднему фронту сигнала синхронизации;
- CPHA = 1 — выборка данных производится по заднему фронту сигнала синхронизации.
Для обозначения режимов работы интерфейса SPI принято следующее соглашение:
- режим 0 (CPOL = 0, CPHA = 0);
- режим 1 (CPOL = 0, CPHA = 1);
- режим 2 (CPOL = 1, CPHA = 0);
- режим 3 (CPOL = 1, CPHA = 1).
Топология систем связи на базе SPI
В простейшем случае к ведущему устройству подключено единственное ведомое устройство и необходим двусторонний обмен данными. В таком случае используется трехпроводная схема подключения. Интерфейс SPI позволяет подключать к одному ведущему устройству несколько ведомых устройств, причем подключение может быть осуществлено несколькими способами, как показано на рисунках 3 и 4 [Источник 3] .
Первый способ позволяет реализовать радиальную структуру связи (топология типа «звезда»), его принято считать основным способом подключения нескольких ведомых устройств. В данном случае для обмена более чем с одним ведомым устройством ведущее устройство должно формировать соответствующее количество сигналов выбора ведомого устройства (SS). При обмене данными с ведомым устройством, соответствующий ему сигнал SS переводится в активное (низкое) состояние, при этом все остальные сигналы SS находятся в неактивном (высоком) состоянии. Выводы данных MISO ведомых устройств соединены параллельно, при этом они находятся в неактивном состоянии, а перед началом обмена один из выходов (выбранного ведомого устройства) переходит в активный режим.
Второй способ позволяет реализовать структуру связи типа «кольцо». В данном случае для активации одновременно нескольких ведомых устройств используется один сигнал SS, а выводы данных всех устройств соединены последовательно и образуют замкнутую цепь. При передаче пакета от ведущего устройства этот пакет получает первое ведомое устройство, которое, в свою очередь, транслирует свой пакет следующему ведомому устройству и так далее. Для того, чтобы пакет от ведущего устройства достиг определенного ведомого устройства, ведущее устройство должно отправить еще несколько пакетов.
Видео:MCP2515, контроллер CAN шины с интерфейсом SPIСкачать
Синхронизация в SPI
Частота следования битовых интервалов в линиях передачи данных определяется синхросигналом SCK, который генерирует ведущее устройство, ведомые устройства используют синхросигнал для определения моментов изменения битов на линии данных, при этом ведомые устройства никак не могут влиять на частоту следования битовых интервалов. Как в ведущем устройстве, так и в ведомом устройстве имеется счетчик импульсов синхронизации (битов). Счетчик в ведомом устройстве позволяет последнему определить момент окончания передачи пакета. Счетчик сбрасывается при выключении подсистемы SPI, такая возможность всегда имеется в ведущем устройстве. В ведомом устройстве счетчик обычно сбрасывается деактивацией интерфейсного сигнала SS. [Источник 4] .
Так как действия ведущего и ведомого устройства тактируются одним и тем же сигналом, то к стабильности этого сигнала не предъявляется никаких требований, за исключением ограничения на длительность полупериодов, которая определяется максимальной рабочей частотой более медленного устройства. Это позволяет использовать SPI в системах с низкостабильной тактовой частотой, а также облегчает программную эмуляцию ведущего устройства.
Видео:Лекция 308. Шина I2CСкачать
Приложения
SPI используется с различными периферийными устройствами, такими как:
- Датчики: температуры, давления, АЦП, сенсорные экраны, видео игровые контроллеры
- Устройства контроля: аудио кодеки, цифровые потенциометры, ЦАП
- Камера: объектив Canon EF
- Коммуникации: сеть Интернет, интерфейс USB, USB, USART, CAN, IEEE 802.15.4, IEEE 802.11
- Память: Флэш и EEPROM
- Часы реального времени
- ЖК, иногда даже для управления изображения данных
- Любые ММС или CD карты (в том числе поддержка SDIO)
Для высокопроизводительных систем, FPGAs иногда использует SPI интерфейс как ведомый к ведущему, а ведущий к датчикам, или для флэш-памяти, используемой для загрузки, если они основаны на SRAM. [Источник 5] .
Видео:Видеоуроки по Arduino. Интерфейсы SPI (8-я серия, ч1)Скачать
Преимущества и недостатки интерфейса SPI
Преимущества
- Полнодуплексная передача данных по умолчанию.
- Более высокая пропускная способность по сравнению с I²C или SMBus.
- Возможность произвольного выбора длины пакета, длина пакета не ограничена восемью битами.
- Простота аппаратной реализации:
- более низкие требования к энергопотреблению по сравнению с I²C и SMBus;
- возможно использование в системах с низкостабильной тактовой частотой;
- ведомым устройствам не нужен уникальный адрес, в отличие от таких интерфейсов, как I²C, GPIB или SCSI.
Недостатки
- Необходимо больше выводов, чем для интерфейса I²C.
- Ведомое устройство не может управлять потоком данных.
- Нет подтверждения приема данных со стороны ведомого устройства (ведущее устройство может передавать данные «в никуда»).
- Нет определенного стандартом протокола обнаружения ошибок.
- Отсутствие официального стандарта, что делает невозможным сертификацию устройств.
- По дальности передачи данных интерфейс SPI уступает таким стандартам, как UART и CAN.
- Наличие множества вариантов реализации интерфейса.
- Отсутствие поддержки горячего подключения устройств.
Видео:SPI шина на осциллографеСкачать
Стандарты
Шина SPI- стандарт это де-факто. Однако отсутствие официального стандарта находит свое отражение в самых различных вариантах протокола. Различные размеры слова являются общими. Каждое устройство определяет свой собственный протокол, в том числе, если оно поддерживает команды. Некоторые устройства предназначены только для передачи, другие-только для приема. Некоторые протоколы сначала передают наименьший бит.
Некоторые устройства даже имеют незначительные отклонения от режимов CPOL/CPHA, описанных выше. Отправка данных от ведомого устройства к ведущему может использовать противоположный временной край в качестве ведущего устройства к ведомому. Устройства часто требуют дополнительного времени простоя времени перед первым, после последнего, или между командой и ее ответом. Некоторые устройства имеют два часа, один для чтения данных, а другой для передачи его в устройство.
Многие микросхемы SPI поддерживают только сообщения, кратные 8 битам. Такие чипы не могут взаимодействовать с JTAG или SGPIO протоколами, или с любым другим протоколом, в котором сообщения, не кратны которые 8 битам. [Источник 6] . Существуют также аппаратные различия. Некоторые микросхемы объединяют MOSI и MISO в единую линию передачи данных (SI/SO); это иногда называют «трехпроводной» сигнализацией (в отличие от обычного «четырехпроводного» SPI). SafeSPI- это отраслевой стандарт для SPI в автомобильной промышленности. Его основным фокусом является передача данных датчика между различными устройствами.Видео:О шине SPI и библитоеке SPI. Arduino.Скачать
Пример программной реализации
Ниже представлен пример программной реализации SPI мастера на языке Си. Линия CS (chip select, выбор микросхемы) должна быть активирована (в большинстве случаев — притянута к низкому уровню), перед тем, как начнётся обмен данными, и деактивирована после окончания обмена. Большинство устройств требуют несколько сеансов передачи с активной линией CS. Эта функция может быть вызвана несколько раз, пока линия активна.
🎥 Видео
Микросхемы и программаторы, Шины I2C и SPIСкачать
Интерфейсы :: SPI :: Часть 1:: Общие сведенияСкачать
SPI интерфейсСкачать
Лекция "Интерфейсы (часть I). RS-232/422/485. SPI"Скачать
Введение в шину I2CСкачать
Цифровые интерфейсы: 04. SPI (Периферийный последовательный интерфейс)Скачать
Программирование МК AVR. УРОК 24. Знакомство с шиной SPIСкачать
arduino spiСкачать
2020Весна ЦУиМП Шины RS485, RS422, SPI, I2SСкачать
STM32. Урок 20. SPI. Serial Peripheral InterfaceСкачать
Интерфейс SPIСкачать
Интерфейс SPI на примере STM32. Подключение периферии - экрана и памяти.Скачать