Английское полное название SPI — Serial Peripheral Interface, что, как следует из названия, представляет собой последовательный периферийный интерфейс. SPI — это спецификация интерфейса синхронной последовательной связи, которая в основном используется для связи на короткие расстояния во встроенных системах. Интерфейс был разработан Motorola в середине 1980-х годов и с тех пор превратился в отраслевую спецификацию.
Связь между устройствами SPI использует полнодуплексный режим, который представляет собой режим ведущий-ведомый между ведущим и одним или несколькими ведомыми. Хост отвечает за кадр инициализации. Этот фрейм передачи данных может использоваться как для операций чтения, так и для записи. Линия выбора чипа может выбрать одно из нескольких подчиненных устройств для ответа на запрос хоста.
Для нескольких ведомых устройств каждому ведомому требуется линия CS/SS для подключения к хосту, чтобы хост мог общаться с любым ведомым. Как показано на рисунке ниже, это метод подключения одного ведущего и нескольких ведомых.

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

передача данных
В связи SPI ведущее устройство SPI отправляет ведомое устройство SPI через линию SCLK на частоте, поддерживаемой ведомым устройством, что также означает, что ведомое устройство не может активно отправлять данные ведущему, но ведущее устройство может только опрашивать ведомое устройство для отправки. данные подчиненному. Или ведомое устройство активно информирует хост о поступлении данных через порт ввода-вывода.
В каждом такте SPI выполняется полнодуплексная передача данных. Когда мастер отправляет 1 бит по линии MOSI, ведомое устройство также отправляет 1 бит данных по линии MISO после его считывания. Это означает, что этот порядок связи сохраняется, даже если имеет место только симплексная связь.
Передачи SPI обычно включают два сдвиговых регистра заданной длины слова. Например, 8-битный регистр сдвига в ведущем и ведомом. Они соединены в топологии виртуального кольца, при этом данные обычно смещаются первым старшим битом. По фронту тактового сигнала и ведущий, и ведомый сдвигают 1 бит данных из линии передачи друг к другу. Когда приходит следующий фронт тактового сигнала, приемники с обеих сторон производят выборку бита на линии передачи и устанавливают его как новый младший значащий бит регистра сдвига. После того, как биты регистра сдвинуты наружу и внутрь, ведущий и ведомый обмениваются значениями регистров. Если необходимо подкачать больше данных, перезагрузите сдвиговый регистр и повторите процесс. Передача может длиться любое количество тактов. Когда это будет сделано, хост перестанет переключать тактовый сигнал.