SPI
SPI (Serial Peripheral Interface) — это синхронный последовательный интерфейс для обмена данными между микроконтроллером и периферийными устройствами, работающий по схеме «ведущий-ведомый». В отличие от асинхронных протоколов, SPI использует отдельную тактирующую линию, что позволяет достигать высоких скоростей передачи без привязки к фиксированному битрейту. Интерфейс применяется для подключения памяти (EEPROM, Flash), дисплеев, АЦП, цифровых потенциометров и датчиков движения. В каталоге Zavod.dev SPI-интерфейс поддерживается большинством микроконтроллеров (mikrokontrollery) и AI-плат (ai-dev-boards), где требуется быстрая передача потоков данных для нейросетевых вычислений или управления внешними устройствами.
Инженеры Zavod.dev · обновлено 20 июля 2026
Принцип работы
Физический уровень SPI содержит четыре линии: SCK (тактирующий сигнал), MOSI (данные от ведущего к ведомому), MISO (данные от ведомого к ведущему) и CS (выбор ведомого устройства). Обмен инициируется ведущим, который выставляет уровень на линии CS, активируя конкретный слот, и генерирует тактовые импульсы на SCK. Данные сдвигаются синхронно по обоим каналам одновременно — каждый такт передаёт один бит в каждом направлении, что обеспечивает полнодуплексный режим. Параметры протокола включают полярность (CPOL) и фазу (CPHA) тактового сигнала, которые определяют моменты выборки данных относительно фронтов SCK. Благодаря отсутствию адресации и стартовых битов накладные расходы минимальны, а скорость ограничена только возможностями аппаратных линий.
Ключевые характеристики при выборе
При выборе устройств с SPI необходимо сопоставлять максимальную тактовую частоту, поддерживаемую ведомым (например, память обычно быстрее, чем датчики), и требуемую пропускную способность системы. Длина линий — критичный фактор: при высоких скоростях и длинных проводниках возникают отражения и перекрёстные помехи, поэтому для магистралей более нескольких сантиметров требуются буферы или понижение частоты. Важно учитывать количество доступных линий CS на ведущем — при большом числе устройств может потребоваться мультиплексор или использование дешифратора. Также различается поддержка режимов: однобитный (стандартный), двухбитный (Dual SPI) и четырёхбитный (Quad SPI), что повышает скорость передачи для памяти и дисплеев. Питание логических уровней должно быть согласовано между ведущим и ведомым, иначе необходимы преобразователи уровней.
Где применяется
SPI наиболее востребован во встраиваемых системах для связи с внешней памятью — загрузка прошивок, хранение логов, буферизация данных. В AI-платах интерфейс используется для быстрого съёма данных с АЦП оцифровки сигналов в реальном времени. В дисплейных панелях SPI передаёт команды и видеоданные для обновления экранов. В сенсорных узлах (акселерометры, гироскопы, магнитные компасы) SPI часто предпочтительнее I2C из-за большей скорости опроса. В каталоге Zavod.dev SPI-дисплей на eInk-панели и SPI Flash модуль памяти подключаются через SPI к отладочным платам для систем сбора и обработки информации.
Частые ошибки при подборе
Часто ошибочно предполагают, что все SPI-устройства совместимы по параметрам CPOL/CPHA — несовпадение режимов приводит к неправильной выборке бит. Вторая ошибка — использование слишком длинных линий без учёта импеданса, что ограничивает реальную частоту по сравнению с заявленной. Третья — неправильная организация питания при разных логических уровнях (например, 3.3 В и 5 В), что может повредить входы. Также встречается назначение одного CS для нескольких устройств, что приводит к коллизиям на линии MISO.