Un’interfaccia seriale periferica (SPI) è un’interfaccia di flusso di dati di comunicazione seriale sincrona full-duplex a quattro fili a basso costo che opera in una relazione master-slave. Il trasferimento dei dati nei dispositivi seriali avviene un bit alla volta, rendendo SPI un’interfaccia a bassa velocità. È comunemente usato come collegamento tra circuiti integrati con dispositivi periferici lenti a bordo a cui si accede in modo intermittente. È in concorrenza con i dispositivi di trasmissione dati paralleli, ma man mano che SPI aumenta in efficienza, il vantaggio del primo si riduce. SPI viene talvolta definito “microwire”, sebbene questo sia considerato un protocollo di sottoinsieme di SPI.
I trasferimenti di dati da un’interfaccia periferica seriale avvengono tramite protocollo full duplex. I dati vengono trasferiti e ricevuti contemporaneamente in entrambe le direzioni. Le applicazioni che utilizzano SPI ottengono molta efficienza in questa modalità; una di queste applicazioni è tra un codificatore-decodificatore (codec) e un processore di segnale digitale (DSP). Altre applicazioni includono sensori di temperatura e pressione, nonché memorie flash.
Ogni volta che due dispositivi di interfaccia periferica seriale comunicano, un dispositivo viene indicato come “master”, mentre l’altro dispositivo è “slave”. Il dispositivo master avvia tutte le comunicazioni trasmettendo segnali al dispositivo slave. Un bus di interfaccia per periferiche seriali può collegare più dispositivi slave a un singolo master.
I dispositivi di interfaccia periferica seriale utilizzano tre registri: registro di controllo (SPCR), registro di stato (SPSR) e registro dati (SPDR) – nell’invio dei dati, insieme a quattro diversi segnali. Il primo segnale è chiamato orologio seriale (SCLK), che genera solo il dispositivo master. Questo è seguito da master-out slave-in (MOSI), master-in slave-out (MISO) e slave select (SSn), dove “n” è il numero di dispositivi slave a cui è collegato il dispositivo master.
In una tipica configurazione single-slave, un ingegnere che cerca di utilizzare un’interfaccia periferica seriale collegherebbe SCLK all’ingresso di un dispositivo slave. MOSI quindi trasporta i dati dal dispositivo master al dispositivo slave mentre MISO trasferisce i dati dallo slave al master. Per determinare quale dispositivo è master e quale slave, il primo collega Master SSn a Slave SSn e genera un segnale di ingresso/uscita discreto generico a quest’ultimo.
Per collegare più slave a un master in un’interfaccia periferica seriale, vengono collegati segnali SSn separati dal dispositivo master a slave separati. Ad esempio, SS1 è connesso allo Slave 1, SS2 è connesso allo Slave 2 e così via. Analogamente alla configurazione a slave singolo, SCLK è collegato dal dispositivo master ai più slave. Sono collegati MOSI da master a slave, così come MISO da slave a master.