Программирование программного обеспечения
В большинстве случаев интерфейс связывает два устройства, одно из которых является «ведущим» (Master), а другое – «ведомым» (Slave). Ведущий инициирует обмен данными и синхронизирует их прием и/или передачу. Несколько устройств могут функционировать как ведомые, при этом ведущий должен выбирать ведомого, подавая сигнал выбора (slave select, chip select) на конкретное устройство.
Сигнал SCLK (Serial Clock) представляет собой последовательность синхронизирующих импульсов, генерируемых ведущим. Передача и прием данных
привязаны к передним или задним фронтам синхросигнала. По линии MOSI
(Master Output, Slave Input) передача данных осуществляется от ведущего к ведомому, а линия MISO (Master Input, Slave Output) служит для приема данных от ведомого. Сигнал (Slave Select) генерируется ведущим для конкретного ведомого, разрешая сеанс обмена данными, при этом активным уровнем такого сигнала является уровень логического нуля.
Очень часто ведущие производители оборудования используют и альтернативные обозначения сигналов интерфейса. Например, сигнал синхронизации SCLK
часто обозначается как SCK, MISO может обозначаться как SDI, DI или SI. Сигнал MOSI имеет альтернативные обозначения SDO, DO и SO. Наконец, сигнал выбора ведомого часто встречается под альтернативными обозначениями nCS и CS.
Интерфейс SPI является двунаправленным, тем не менее, большинство устройств, выпускаемых промышленностью, обычно используют усеченную (однонаправленную) версию этого протокола. Например, большинство аналого цифровых преобразователей используют модель, в которой ведущим является устройство, получающее данные (микроконтроллер, компьютер и т. д.). В этих
случаях синхронизацию передачи/приема данных выполняет инициатор обмена.