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

Описание работы интерфейса SPI

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

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

Такое разделение с течением времени получение и отправки данных, дает возможность использовать только один регистр. Та устройство которое управляет шиной синхроимпульсов является главным и называется «Ведущим» или «Мастером» (Master).

Главное устройство или «Master» осуществляет управление процессами передачи данных. Т.е. он определяет когда начать процесс передачи данных когда его нужно завершить и какой объем данных передать. Другие устройства которые подключаются к мастеру, называются ведомыми или «Slave«.

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

Наименование выводов интерфейса SPI

При двухстороннем обмене его называют полнодуплексный, в интерфейсе SPI задействованы все 4 линии:

  1. SCLK — шина тактирования;
  2. MOSI  (Master Out, Slave In) — по этой линии происходит процесс передачи данных ведомому устройству;
  3. MISO (Master In, Slave Out) — по этой линии мастер принимает данные от ведомых устройств;
  4. SS (Slave Select) — выбор ведомого устройства

При двухстороннем обмене его называют полнодуплексный, в интерфейсе SPI

Кодировка уровней происходит логическими «1» и «0» на шине данных (MOSI и MISO). Другими словами «1» это высокий уровень напряжения, а «0» соответственно низкий. То как выставляется уровень напряжения на шине не имеет значения, т. е. выводы передатчиков могут быть как с «открытым коллектором» там и «push-pull». Высокий уровень соответствует  равен напряжению питания микросхему. Если у нас схема запитана от 5 В то и высокий уровень — 5 В, если 3.3 то соответственно высокий уровень — 3.3 В.

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

Название линий могу отличаться у разных производителей:

MISO: SOMI, SDO (на устройстве), DO, DON, SO, MRSR;

MOSI: SIMO, SDI (на устройстве), DI, DIN, SI, MTST;

SCLK: SCK, CLK, SPC (SPI serial port clock);

SS: nCS, CS, CSB, CSN, NSS, nSS, STE, SYNC.

 

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

Прием и передача и данных в интерфейсе SPI

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

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

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

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

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

  • CPOL = 0 — сигнал синхронизации начинается с низкого уровня;
  • CPOL = 1 — сигнал синхронизации начинается с высокого уровня;
  • CPHA = 0 — выборка данных производится по переднему фронту сигнала синхронизации;
  • CPHA = 1 — выборка данных производится по заднему фронту сигнала синхронизации.

Для обозначения режимов работы интерфейса SPI принято следующее соглашение:

  • mode0 — режим 0 (CPOL = 0, CPHA = 0);
  • mode1 — режим 1 (CPOL = 0, CPHA = 1);
  • mode2 — режим 2 (CPOL = 1, CPHA = 0);
  • mode3 — режим 3 (CPOL = 1, CPHA = 1).

 Режимы работы SPI демонстрирует картинка ниже.

Режимы работы SPI Mode0, Mode1, Mode2 и Mode3

 

Важно отметить 1 момент, линия SS это линий которая управляет сеансом обмена, а не только линия для выбора слейва. Поэтому если вы используете только слейв то линию SS подключать нужно подключать.

Похожие записи

Память микроконтроллера. Виды памяти микроконтроллеров

Практически все современные микроконтроллеры имеют на своем борту 3 вида  памяти: Виды памяти микроконтроллеров память программ FLASH; оперативная память (ОЗУ) SRAM (Static RAM); ...

Светодиодная мигалка на микросхеме NE 555

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

Схема полицейской мигалки на микроконтроллере

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

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

Последовательный интерфейс I2C (также его обозначается как IIC) довольно популярный последовательный интерфейс. Свою популярность он получил за неплохую скорость передачи информации. В...

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

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

Подключение кнопки к микроконтроллеру AVR

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

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