Микроконтроллеры

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

При работе с микроконтроллерами довольно часто приходится использовать последовательный интерфейс SPI. 

SPI - довольно распространенный интерфейс для обмена данными с другими микросхемами, обмен данными осуществляться последовательно. Этот интерфейс так же как и I2C, являются наиболее распространенными интерфейсами обмена данными между микросхемами. Интерфейс SPI придумала компания Motorola, по сей день этот интерфейс существует и им пользуются многие производители электроники. Сокращение SPI представляет собой аббревиатуру от "Serial Peripheral Bus" что означает шина для подключения внешних периферийных устройств. Работает она схеме "подчиненный-ведущий". В роли ведущего выступает микроконтроллер, также может быть программируемая логика, какая нибудь специализированная ИС или DSP контроллер. В качестве подчиненных могу выступать:

  • запоминающие устройства такие как EEPROM, Flash память ,SRAM;
  • часы реального времени RTC;
  • АЦП, ЦАП;
  • цифровые потенциометры;
  • другие микроконтроллеры и др.

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

Подключение устройств по протоколу SPI

По интерфейсу SPI существует 3 основных способа подключения, в каждом таком способе используются 4 сигнала. Самый простой способ подключения включает всего две микросхемы. В этом случае ведущее устройство осуществляет передачу данных по линии MOSI, передачи осуществляется синхронно вместе с сигналом SCLK который также генерируется ведущим устройством. На другой стороне подчиненное устройство осуществляет прием данных, прием осуществляется по определенным фронтам сигнала синхронизации. Одновременно с этими операциями передаются данных ведомого устройства (направления потока информации показаны на рисунке стрелками). Если обратная связь не предусматривается устройством, т.е. если в ответных данных от ведомого устройства нет необходимости до линию MISO можно исключить. Передачу данных в одну осуществляется на таких микросхемах как цифровые потенциометры, драйверы и программируемые усилители. Для них требуется 3 или 4 линии связи. 

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

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

 В случае подключения нескольких устройств к одной шине SPI, можно использовать независимое подключение или параллельное, а можно каскадное или последовательное. Независимое (параллельное) подключение используется чаще. В этой схеме все линии соединены параллельно, за исключением линии выбора устройства. Используя эту линию ведущее устройство выбирает ту или иную микросхему с которой он будет обмениваться теми или иными данными. Но у этого соединение есть один недостаток в виде увеличения количество линий. Количество линий будет равно 3+n, где n - количество подключенных подчиненных устройств.

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

Если у вас много подчиненных устройств. Для того чтобы уменьшить количество линий нужно использовать каскадное соединение. В этом случае все подсоединенные устройства образуют одни сдвиговый регистр. В этом случае выход одной микросхемы подсоединяют ко входу другой. Все выходы выбора микросхемы SS соединяются в одну линию. Используя такую схему подключения подчиненных устройств равно 4-м. Только такое соединение устройств возможно только в том случае если все подключенные устройства поддерживают такое соединение. Узнать поддерживает устройство такой режим работы или нет можно узнать в документации на микросхему, такое соединение называется 'daisy-chaining' 

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

CPOL - начальный уровень сигнала линии сигнализации, если CPOL=0 то от начала и до конца цикла передачи линия синхронизации имеет низкий уровень, т.е. нарастающий первый фронт и падающий последний. Если CPOL=1 то наоборот первый фронт падающий а последний нарастающий.

CPHA - фаза линии синхронизации, от значения этого параметра зависит последовательность выполнения и выборки данных (если CPHA имеет низкое значение то по переднему фронту будет производится выборка данных, а далее по заднему будет установка данных. Если значение CPHA будет иметь высокий уровень то установка данных будет осуществятся по переднему фронту в цикле синхронизации, а выборка наоборот по заднему. 

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

Не меньшей популярность также как и SPI пользуется протокол I2C. Для сравнения ниже представлена таблица преимуществ этих протоколов.

Преимущества SPI интерфейса

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

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

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

Протоколы совместимые с протоколом SPI

Microwire

Данный протокол передачи данных от компании National Semiconductor идентичен в режиме 0 протоколу SPI (CPOL=0, CPHA=0)

Протокол от компании Maxim 

Особенностью этого интерфейса заключается в том, что полудуплексная передача осуществляется по одной двунаправленной линии DQ

Протокол QSPI

Является высокоуровневым протоколом, в отличии от SPI позволяет осуществлять автоматическую передачу без использования ЦПУ.

Электрические сигналы SPI

Ведущий шины Подчиненный шины
Основное обозначение Альтернативное обозначение Описание Основное обозначение Альтернативное обозначение Описание
MOSI DO, SDO, DOUT Выход последовательной передачи данных MOSI DI, SDI, DIN Вход последовательного приема данных
MISO DI, SDI, DIN Вход последовательного приема данных MISO DO, SDO, DOUT Выход последовательной передачи данных
SCLK DCLOCK, CLK, SCK Выход синхронизации передачи данных SCLK DCLOCK, CLK, SCK Вход синхронизации приема данных
SS CS Выход выбора подчиненного (выбор микросхемы) SS CS Вход выбора подчиненного (выбор микросхемы)

Режимы работы интерфейса SPI

Режим SPI 0 1 2 3
CPOL 0 1 0 1
CPHA 0 0 1 1
Временная диаграмма первого цикла синхронизации Режим работы интерфейса SPI Режим работы интерфейса SPI Режим работы интерфейса SPI Режим работы интерфейса SPI

Добавить комментарий


Защитный код
Обновить

Последние комментарии

Последнии темы форума

  • Нет сообщений для показа