1. Количество проводов и пинов:

Параметр I2C SPI
Основные линии 2 провода: SDA (данные), SCL (такт) 4 провода: MOSI (выход), MISO (вход), SCK (такт), SS (выбор устройства)
Дополнительно Нужны pull-up резисторы (~4.7 кОм) Для каждого устройства требуется отдельный SS (CS) пин.
  • I2C экономит пины, но требует резисторов.

  • SPI использует больше пинов, особенно при подключении нескольких устройств.

2. Скорость передачи:

Параметр I2C SPI
Стандартная До 400 кГц (режим Fast Mode) До 10+ МГц (зависит от микроконтроллера)
Преимущество Подходит для медленных устройств Идеален для высокоскоростных задач (например, видео или графика).
  • SPI значительно быстрее, но требует больше ресурсов.

3. Адресация устройств:

Параметр I2C SPI
Адресация У каждого устройства уникальный 7/10-битный адрес Нет адресов — выбор устройства через SS (CS) пин.
Мультимастер Поддерживается Редко поддерживается.
  • В I2C можно подключить несколько устройств на одну шину (например, датчик + дисплей).

  • В SPI для каждого устройства требуется отдельный SS пин.

4. Сложность реализации:

Параметр I2C SPI
Протокол Сложнее: требуется управление старт/стоп битами, подтверждениями (ACK/NACK). Проще: данные передаются в реальном времени по тактовому сигналу.
Библиотеки Wire.h (встроенная в Arduino IDE) SPI.h (встроенная, но часто требуется ручная настройка CS).
  • I2C проще в разводке, но сложнее в протоколе.

  • SPI проще в коде, но сложнее при подключении множества устройств.

5. Энергопотребление:

  • I2C потребляет меньше энергии в режиме ожидания.

  • SPI может быть энергозатратным из-за высокой скорости и активных линий.

6. Примеры использования:

Интерфейс Где применяется Примеры дисплеев
I2C Низкоскоростные устройства, экономия пинов. Символьные LCD (через адаптер), OLED (SSD1306), датчики.
SPI Высокоскоростные задачи, графика. TFT (ILI9341), графические LCD, LED-матрицы.

7. Плюсы и минусы:

Интерфейс Плюсы Минусы
I2C Минимум проводов, поддержка множества устройств. Медленнее, требуется адресация.
SPI Высокая скорость, простота протокола. Много пинов, сложность при масштабировании.

Когда выбрать I2C:

  • Нужно подключить несколько устройств с минимальным количеством проводов.

  • Скорость не критична (например, вывод текста на OLED).

  • Проект с ограниченным количеством пинов Arduino.

Когда выбрать SPI:

  • Требуется высокая скорость (анимация, графика на TFT).

  • Нет ограничений по количеству пинов.

  • Работа с памятью или другими SPI-устройствами.

Советы:

  1. Некоторые дисплеи (например, OLED) поддерживают оба интерфейса — выбор зависит от ваших задач.

  2. Для I2C проверяйте адреса устройств с помощью I2C Scanner.

  3. В SPI избегайте длинных проводов — возможны помехи.