SPI интерфейс: как работает, распиновка

Всем привет! В этой статье расскажу про интерфейс общения между микроконтроллерами и периферийными устройствами (дисплеи TFT, SD/MicroSD модули и т.д.) — SPI (Serial Peripheral Interface).
Ведущее (микроконтроллер) устройство называется MASTER, а периферийные устройства называются SLAVE.
Многие микроконтроллеры имеют разное количество комплектов пинов, поддерживающих аппаратный (заложенный производителем) SPI интерфейс. Если Вы подключаете дисплей к Arduino Uno или Nano, то она имеет только один комплект пинов для подключения устройств через интерфейс SPI, поэтому предусмотрен контакт Chip Select, он нужен для идентификации устройства, чтобы, если Вы подключили несколько устройств по SPI, сигналы к разным устройствам не путались.
Все контакты устройств с SPI подключаются параллельно к одним и тем же пинам, а пин CS от каждого устройства подключается в отдельный свой пин (любой свободный).
В интерфейсе SPI используются 4 основных пина:
- SCLK или SCK — Serial Clock — синхронизация работы устройств.
- MoSi — Master Out, Slave In. Выход данных с устройства управления, вход данных в ведомое устройство.
- MiSo — Master In, Slave Out.
- Вход данных в устройство управления, выход данных с ведомого устройства.
- CS или SS — Chip Select, порт для активирования ведомого устройства. Не активированные микроконтроллером устройства не реагируют на команды.
Если на Вашем устройстве есть ещё какие-то пины (кроме питания, конечно), значит, они нужны специально для этого устройства и эти пины управляются библиотекой для устройства и не входят в интерфейс SPI.
Примеры устройств с интерфейсом SPI:
- TFT дисплей 1.8″
- SD/MicroSD модуль