Содержание
Последовательный периферийный интерфейс SPI (Serial Peripheral Interface) — последовательный стандарт передачи данных. Предназначен для сопряжения микроконтроллеров и периферийных устройств. SPI интерфейс иногда называют четырёхпроводным интерфейсом.
Описание работы интерфейса SPI
Принцип работы SPI заключается в следующем. Данные по SPI передаются последовательно, по 1 биту. Получение и отправка данных осуществляется раздельно и не происходит в один момент времени, а осуществляется при помощи синхронизированного сигнала на специальной шине.
Шина по которой передается синхросигнал зовется шиной тактирования, а сама идея разделения заключается в том, что считывание и установка данных осуществляется по противоположным фронтам генерируемых на шине тактирования.
Такое разделение с течением времени получение и отправки данных, дает возможность использовать только один регистр. Та устройство которое управляет шиной синхроимпульсов является главным и называется «Ведущим» или «Мастером» (Master).
Главное устройство или «Master» осуществляет управление процессами передачи данных. Т.е. он определяет когда начать процесс передачи данных когда его нужно завершить и какой объем данных передать. Другие устройства которые подключаются к мастеру, называются ведомыми или «Slave«.
Наименование выводов интерфейса SPI
При двухстороннем обмене его называют полнодуплексный, в интерфейсе SPI задействованы все 4 линии:
- SCLK — шина тактирования;
- MOSI (Master Out, Slave In) — по этой линии происходит процесс передачи данных ведомому устройству;
- MISO (Master In, Slave Out) — по этой линии мастер принимает данные от ведомых устройств;
- SS (Slave Select) — выбор ведомого устройства
Кодировка уровней происходит логическими «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 демонстрирует картинка ниже.
Важно отметить 1 момент, линия SS это линий которая управляет сеансом обмена, а не только линия для выбора слейва. Поэтому если вы используете только слейв то линию SS подключать нужно подключать.
Похожие записи
Практически все современные микроконтроллеры имеют на своем борту 3 вида памяти: Виды памяти микроконтроллеров память программ FLASH; оперативная память (ОЗУ) SRAM (Static RAM); ...
Это простая схема двойного светодиодного мигающего сигнала. В качестве базовой схемы нестабильного мультивибратора используется таймер NE 555. Светодиоды включаются по очереди, частоту...
Представленная схема полицейской мигалки на микроконтроллере и светодиодах может работать в 16 различных режимах. Режим выбирается при помощи одной кнопки, и собрана на микроконтроллере...
Последовательный интерфейс I2C (также его обозначается как IIC) довольно популярный последовательный интерфейс. Свою популярность он получил за неплохую скорость передачи информации. В...
Последовательный периферийный интерфейс SPI (Serial Peripheral Interface) — последовательный стандарт передачи данных. Предназначен для сопряжения микроконтроллеров и периферийных устройств. SPI...
В это примере подключим и научимся обрабатывать события нажатия кнопок при помощи микроконтроллера AVR. Другими словами мониторить состояние кнопок, и при каких либо изменениях делать что...