SPI, или Serial Peripheral Interface (SPI), это синхронный последовательный интерфейс, который позволяет передавать данные между микроконтроллерами, датчиками, памятью и другими периферийными устройствами. SPI использует четыре линии для обмена данными:
- линия передачи данных (MOSI), или SI – выход ведущего, вход ведомого ( англ. Master Out Slave In )
- линия приема данных (MISO), или SO — вход ведущего, выход ведомого ( англ. Master In Slave Out ).
- линию тактирования (SCLK) или SCK — последовательный тактовый сигнал ( англ. Serial Clock )
- и линию выбора устройства (SS) или SS -сигнал начала/завершения сеанса связи (выбора ведомого устройства для передачи/чтения данных; англ. Chip Select, Slave Select ).
Основные характеристики SPI:
- Синхронность: Обмен данных по SPI является синхронным, это означает, что тактирование устройствами на шине контролируется мастером (или инициатором обмена). Мастер сигнализирует начало передачи данных.
- Мастер-слейв архитектура: В SPI также используется мастер-слейв архитектура. Мастер начинает и управляет обменом данными, а слейв устройства отвечают на запросы мастера.
- Параллельный обмен: SPI поддерживает параллельный обмен данными между мастером и слейвами. Поток битов может передаваться в обоих направлениях одновременно.
- Низкое энергопотребление: SPI способен работать с низким энергопотреблением, особенно когда микроконтроллер находится в режиме ожидания или сна.
- Поддержка разных режимов обмена: SPI поддерживает несколько режимов обмена данными, Это позволяет гибко настраивать обмен данными в соответствии с требованиями устройств.
SPI широко применяется во многих областях, включая медицинские устройства, системы безопасности, хранение данных и телекоммуникации. Важно отметить, что конфигурация и использование SPI требуют правильной настройки и управления.
Расшифровывается как Serial Peripheral Interface (SPI). Он похож на I2C и является другой формой протокола последовательной связи специально разработанного для подключения микроконтроллеров. Работает в режиме полного дуплекса, где данные могут передаваться и получаться одновременно.
Работает на более высокой скорости передачи данных, чем I2C (до 8 Мбит или более). Даже если линии передачи данных/часы совместно используются между устройствами, каждое устройство требует уникального адреса.
Используется в местах, где важна скорость. (например, SD-карты, модули отображения или когда информация обновляется и меняется быстро, например термометры).
Как это работает?
Существует три типа подключения к шине SPI, в каждом из которых участвуют четыре сигнала. Самое простое подключение, в котором участвуют только две микросхемы, показано на рисунке
Здесь, ведущий шины передает данные по линии MOSI синхронно с сформированным им же сигналом SCLK, а подчиненный захватывает переданные биты данных по определенным фронтам принятого сигнала синхронизации. Одновременно с этим подчиненный отправляет свою посылку данных. Представленную схему можно упростить исключением линии MISO, если используемая подчиненная ИС не предусматривает ответную передачу данных или в ней нет потребности. Одностороннюю передачу данных можно встретить у таких микросхем как ЦАП, цифровые потенциометры, программируемые усилители и драйверы. Таким образом, рассматриваемый вариант подключения подчиненной ИС требует 3 или 4 линии связи. Чтобы подчиненная ИС принимала и передавала данные, помимо наличия сигнала синхронизации, необходимо также, чтобы линия SS была переведена в низкое состояние. В противном случае, подчиненная ИС будет неактивна. Когда используется только одна внешняя ИС, может возникнуть соблазн исключения и линии SS за счет жесткой установки низкого уровня на входе выбора подчиненной микросхемы. Такое решение крайне нежелательно и может привести к сбоям или вообще невозможности передачи данных, т.к. вход выбора микросхемы служит для перевода ИС в её исходное состояние и иногда инициирует вывод первого бита данных.
При необходимости подключения к шине SPI нескольких микросхем используется либо независимое (параллельное) подключение:
Либо каскадное (последовательное) :
Количество подключенных устройств SPI не ограничено. Однако существуют практические ограничения из-за количества аппаратных линий выбора, доступных на главном устройстве с помощью метода выбора микросхемы, или сложности передачи данных через устройства в методе последовательного соединения. В связи «точка-точка» интерфейс SPI не требует операций адресации и является полнодуплексной связью, которая является простой и эффективной.
Независимое подключение более распространенное, т.к. достигается при использовании любых SPI-совместимых микросхем. Здесь, все сигналы, кроме выбора микросхем, соединены параллельно, а ведущий шины, переводом того или иного сигнала SS в низкое состояние, задает, с какой подчиненной ИС он будет обмениваться данными. Главным недостатком такого подключения является необходимость в дополнительных линиях для адресации подчиненных микросхем (общее число линий связи равно 3+n, где n-количество подчиненных микросхем). Каскадное включение избавлено от этого недостатка, т.к. здесь из нескольких микросхем образуется один большой сдвиговый регистр. Для этого выход передачи данных одной ИС соединяется со входом приема данных другой, как показано на рисунке 3. Входы выбора микросхем здесь соединены параллельно и, таким образом, общее число линий связи сохранено равным 4. Однако использование каскадного подключения возможно только в том случае, если его поддержка указана в документации на используемые микросхемы. Чтобы выяснить это, важно знать, что такое подключение по-английски называется ‘daisy-chaining’.
Смотри так же:
Что такое UART (Universal Asynchronous Receiver/Transmitter)?