Итак, последовательный периферийный интерфейс — последовательный синхронный режим передачи данных. SPI на ряду с I2C является одним из самых часто используемых. Сейчас уже наверное нет системы в которой отсутствует данный тип передачи данных. Очень удобно всего по четырём проводам передавать данные с высокой скоростью. Тем более что в сейчас уже даже хорошие цифровые датчики стоят не так то и дорого.
Вот она схема:
В ней два блока. Мастер — ведущее устройство (оно инициирует передачу данных) и slave — ведомое. Имеется линия «часов» по которой передаётся тактовый сигнал (SCLK), SS — выбор кристала (дело в том, что удобно к одному SPI порту контроллера подключать несколько устройств (см изображение ниже), при помощи SS выбираем то, с которым намерены общаться сейчас) и две линии передачи данных MOSI и MISO.
Немного подробнее о них.
- MOSI или SI — выход ведущего, вход ведомого (англ. Master Out Slave In). Служит для передачи данных от ведущего устройства ведомому.
- MISO или SO — вход ведущего, выход ведомого (англ. Master In Slave Out). Служит для передачи данных от ведомого устройства ведущему.
Я уже писал о передаче данных по SPI в микроконтроллерах STM32 на примере работы с платой STM32F4 DISCOVERY. Пример передачи данных из SPI1 в SPI2.
На практике это оказывается не сложнее чем на бумаге, так что дерзайте.