m09-03 теория 6 мин

SPI: быстро, четыре провода

SPI — быстрый последовательный интерфейс на четырёх проводах. Используется там, где нужна скорость: SD-карты, дисплеи, flash-память, радиомодули.

Линии: SCLK (такт), MOSI (данные от ведущего), MISO (данные к ведущему), CS (выбор устройства). Плюс земля.

Как работает: ведущий выдаёт такты, данные идут в обе стороны одновременно (полный дуплекс). Устройство выбирается низким уровнем на CS — поэтому каждому нужно отдельное CS.

Скорости: от 1 до 100 МГц и выше. На практике 10–40 МГц.

Режимы (CPOL/CPHA): четыре комбинации полярности такта и фазы. Если режим не совпадает с даташитом, данные читаются «со сдвигом» — классическая ошибка. Указывается как mode 0, 1, 2, 3.

Плюсы: быстро, просто, полный дуплекс, никаких адресов и конфликтов.

Минусы: четыре провода и отдельный CS на каждое устройство (пять устройств — пять CS), нет подтверждения приёма, короткие расстояния.

Типичная ошибка новичка: подключил MISO/MOSI наоборот и получил 0xFF или 0x00 в ответ. Другая: забыл CS — устройство не отвечает. Третья: частота выше, чем поддерживает модуль.

Проверка: если данные не читаются, снизь частоту до 1 МГц и проверь режим. В 80 % случаев проблема в этом.

Для светодиодных лент WS2812 SPI не подходит (там свой протокол 800 кГц), а вот для сдвиговых регистров 74HC595 и драйверов экранов — идеально.

Четыре линии и отдельный CS на каждое устройство
Четыре линии и отдельный CS на каждое устройство
Зачем

SPI быстрее I2C в разы, и без него не работают экраны, карты памяти и быстрые АЦП.

Сделай сейчас

Подключи модуль microSD или дисплей по SPI. Выведи ID регистра (например, 0x00 у многих чипов) — это проверка связи.

Проверь себя

Почему на SPI каждому устройству нужен свой CS?

Шина общая, и все устройства слышат такты. CS говорит, кому именно адресованы данные. Если у двух устройств общий CS, они ответят одновременно и «подерутся» на MISO.

Пройти тест 5 заданий
0 из 102 · 0%
Источники
  1. Wikipedia: Serial Peripheral Interface
    SPI: линии и режимы
  2. SparkFun: Serial Peripheral Interface
    SPI на практике