📌 SPI (Serial Peripheral Interface)

SPI (Serial Peripheral Interface) — это синхронный последовательный протокол, предназначенный для высокоскоростной передачи данных между CPU (или микроконтроллером) и периферийными устройствами. Разработан Motorola.

Используется в системах с ограниченными ресурсами: сенсоры, дисплеи, флэш-память, FPGA и др.

🧠 Как работает

Обмен данными по SPI осуществляется по 4 линиям:

  • MOSI (Master Out Slave In) — данные от ведущего к ведомому
  • MISO (Master In Slave Out) — данные от ведомого к ведущему
  • SCLK — тактовый сигнал, формируемый ведущим
  • SS или CS (Slave Select / Chip Select) — выбор ведомого устройства

Режим синхронизации определяется:

  • CPOL (Clock Polarity)
  • CPHA (Clock Phase)

Всего 4 режима SPI: 0, 1, 2, 3

⚙️ Где применяется

  • Дисплеи (OLED, TFT)
  • Flash Memory, EEPROM, SD-карты
  • АЦП/ЦАП
  • Сенсоры (IMU, температурные и т.п.)
  • Между MCU и FPGA

✅ Преимущества

  • Высокая скорость передачи (до десятков МГц)
  • Простота реализации
  • Поддержка full-duplex
  • Гибкая структура с множеством ведомых

❌ Недостатки

  • Нет встроенной адресации (требует выделенного пина CS для каждого ведомого)
  • Не поддерживает hot-swap и acknowledgment (в отличие от I2C)
  • Не стандартизован на уровне верхнего протокола (разные устройства могут иметь несовместимые форматы)