AFON // радиотехник affonya@mail.ru
← Радиотехника

Интерфейс SPI

Быстрый синхронный интерфейс «ведущий-ведомый»: четыре линии (SCK, MOSI, MISO, CS), полнодуплексный обмен, режимы CPOL/CPHA и применение для скоростной периферии.

Что такое SPI

SPI (Serial Peripheral Interface) — синхронный последовательный интерфейс для скоростного обмена между микроконтроллером и периферией: памятью, дисплеями, АЦП, радиомодулями, картами SD. В отличие от UART, SPI имеет отдельную линию тактирования и работает по схеме «ведущий-ведомый», обеспечивая высокую скорость.

Линии и схема

Классический SPI использует четыре линии:

  • SCK — тактовый сигнал (от ведущего);
  • MOSI — данные от ведущего к ведомому;
  • MISO — данные от ведомого к ведущему;
  • SS/CS — выбор ведомого (отдельная линия на каждое устройство).

Обмен полнодуплексный: с каждым тактом бит уходит и бит приходит одновременно. Несколько ведомых подключают к общим SCK/MOSI/MISO, выбирая нужного своей линией CS.

Режимы (CPOL/CPHA)

Момент выборки данных задают два параметра: CPOL (полярность такта в покое) и CPHA (фаза — по какому фронту защёлкивать бит). Их сочетание даёт четыре режима (0…3). Ведущий и ведомый должны работать в одном режиме, иначе данные читаются неверно.

Скорость и применение

SPI быстр (единицы-десятки МГц и выше) и прост аппаратно, но требует отдельной линии CS на каждое устройство и не имеет встроенного подтверждения приёма. Применяется там, где нужна скорость на короткой дистанции: флеш-память, дисплеи, датчики, ЦАП/АЦП, радиотрансиверы.

Частые вопросы

Чем SPI отличается от I²C?

SPI быстрее и проще, полнодуплексный, но требует 4 линии и отдельный CS на каждое устройство. I²C — всего 2 линии с адресацией, но медленнее и полудуплексный. SPI выбирают ради скорости, I²C — ради экономии выводов.

Что делать, если данные искажаются?

Проверьте совпадение режима (CPOL/CPHA) ведущего и ведомого, порядок бит (MSB/LSB вперёд) и скорость — на высокой частоте важны короткие линии и согласование.

Итоги

SPI — быстрый синхронный полнодуплексный интерфейс «ведущий-ведомый» на четырёх линиях (SCK, MOSI, MISO, CS). Ключ к работе — единый режим CPOL/CPHA и отдельная линия выбора на каждое устройство. Идеален для скоростной периферии на короткой дистанции.

Смотрите также: I²C · UART · Распиновки · АЦП/ЦАП.