SPI, Ардуино.

SPI — популярный интерфейс для последовательного обмена данными между микросхемами. Интерфейс SPI, наряду с I²C, относится к самым широко-используемым интерфейсам для соединения микросхем. Изначально он был придуман компанией Motorola, а в настоящее время используется в продукции многих производителей.

шина SPI

Шина SPI

Его наименование является аббревиатурой от «Serial Peripheral Interface Bus», что отражает его предназначение — шина для подключения внешних устройств. Шина SPI организована по принципу «master-slave». На шине может быть одно ведущее устройство (master) и несколько ведомых (slave).

Интерфейс использует 4 линии для обмена данными:

  • SCLK — Serial Clock: тактовый сигнал (от ведущего)

Другие обозначения: SCK, CLK
Arduino: пин 13

  • MOSI — Master Output, Slave Input: данные от ведущего к ведомому

Другие обозначения: SDI, DI, SI
Arduino: пин 11

  • MISO — Master Input, Slave Output: данные от ведомого к ведущему

Другие обозначения: SDO, DO, SO
Arduino: пин 12

  • SS — Slave Select: выбор ведомого; устанавливается ведущим

Другие обозначения: nCS, CS, CSB, CSN, nSS, STE
Arduino: по умолчанию пин 10

Стандартный алгоритм работы SPI таков:

  1. «master» устанавливает низкий уровень на той линии SS, к которой подключен нужный «slave».
  2. «master» задаёт такт, «дёргая» уровнем на SCLK, и одновременно с каждым дёрганьем SCLK выставляет нужный уровень на MOSI, передавая в «slave» по биту за такт.
  3. «slave» на каждый «дрыг» SCLK выставляет нужный уровень на MISO, передавая в «master» по биту за такт.
  4. Для завершения передачи «master» устанавливает высокий уровень на SS.

SPI является полнодуплексной шиной — данные передаются одновременно в обе стороны. Типичная скорость работы шины лежит в пределах 1-50 МГц. Благодаря исключительной простоте алгоритма передачи SPI получил широчайшее распространение в самых различных электронных устройствах — например, в датчиках, чипах памяти, радиомодулях, и т.д.

Вообще, у SPI есть четыре режима передачи, которые основаны на комбинации «полярности» тактового сигнала (clock polarity, CPOL) и фазы синхронизации (clock phase, CPHA). Проще говоря, CPOL — это уровень на тактовой линии до начала и после окончания передачи: низкий (0) или высокий (1). А фаза определяет, на фронте или спаде тактового сигнала передавать биты:
Режим 0: CPOL=0, CPHA=0
Чтение бита происходит на фронте тактового сигнала (переход 0 ⇨ 1), а запись — на спаде (1 ⇨ 0).
Режим 1: CPOL=0, CPHA=1
Чтение — на спаде, запись — на фронте.
Режим 2: CPOL=1, CPHA=0
Чтение — на спаде, запись — на фронте.
Режим 3: CPOL=1, CPHA=1
Чтение — на фронте, запись — на спаде.

Метки: , , , . Закладка Постоянная ссылка.

Комментарии запрещены.