SPI - последовательный периферийный интерфейс
SPI означает последовательный периферийный интерфейс. С помощью SPI вы можете молниеносно обмениваться данными между двумя устройствами. При этом вам понадобится всего четыре провода.
Характеристики SPI
Последовательный периферийный интерфейс - это синхронный интерфейс связи на коротких расстояниях. Синхронный означает, что данные отправляются в виде блоков или кадров, а два устройства синхронизируются с помощью часов. Это последовательный интерфейс, поэтому устройства передают по одному биту за раз (в отличие от параллельной связи). Одно из устройств является "ведущим" и диктует тактовый цикл. Другое устройство является "ведомым". Обычно связь осуществляется в полнодуплексном режиме. Таким образом, оба устройства могут передавать данные даже одновременно.

Проводка
Для подключения требуется всего четыре провода, поэтому его очень легко настроить.

Для подключения SPI необходимы четыре контакта: последовательный тактовый генератор (SCL или SCLK), ведущий выходной ведомый вход (MOSI), ведущий входной ведомый выход (MISO) и контакт выбора микросхемы или ведомого устройства (CS или SS).
Подключите соответствующие контакты на ведущем и ведомом устройствах.
Одно ведущее устройство может подключаться к нескольким ведомым устройствам, если у него достаточно выводов выбора микросхемы. Ведущее устройство управляет тем, какое ведомое устройство получает данные, устанавливая соответствующий вывод выбора микросхемы в положение LOW или HIGH.
Raspberry Pi 4 имеет 7 шин SPI. Если вы хотите узнать, как получить доступ к шинам SPI с 1 по 6, оставьте комментарий ниже.
Давайте посмотрим на Шина SPI 0.

Как вы можете видеть в график распиновки над выводом 23 находится вывод SCLK на Raspberry Pi. MISO - это контакт 21, а MOSI - контакт 19. Шина 0 имеет два контакта CS - это контакты 24 и 26.
Если вы хотите использовать шину 0, сначала включите ее.
Выполните команду
sudo raspi-config
Затем выберите 3 Варианты интерфейса и нажмите I4 SPI. Наконец, нажмите Да и Хорошо для включения SPI.
Режимы SPI
Существует четыре различных режима передачи данных, о которых вы должны знать. Они различаются полярностью и фазой синхронизации.

Оба значения могут быть либо 0, либо 1. Что касается полярности тактового генератора, то 0 означает низкий уровень холостого хода, а 1 - высокий уровень холостого хода. Тактовая фаза 0 означает, что данные отправляются по падающему фронту, а 1 означает, что данные отправляются по нарастающему фронту. Перед отправкой данных ведущий и ведомый должны согласовать один из четырех режимов.
Преимущества
Самые большие преимущества - это высокая скорость, простота настройки аппаратного и программного обеспечения и низкое энергопотребление.

Недостатки
Последовательный периферийный интерфейс не является действительно расширяемым по диапазону и количеству устройств, так как Master должен иметь пин выбора микросхемы для каждого устройства. Также отсутствует аппаратное подтверждение Slave, поэтому Master не знает, получены ли данные кем-либо.

Примеры использования
Большинство устройств SPI являются встроенными устройствами или ЖК-дисплеи. Как правило, он используется в тех областях, где требуется небольшое количество устройств и быстрая передача данных.
Это позволяет Raspberry Pi взаимодействовать со всеми видами датчики и устройства. Почти все совместимые с Raspberry Pi устройства используют интерфейс SPI или I2C.
Карты SD также используют интерфейс SPI, поэтому даже устройство чтения карт SD на Raspberry Pi имеет некоторые внутренние выводы MISO и MOSI.