Protocollo SPI
Introduzione
Il protocollo di comunicazione seriale RS232 è definito asincrono perché tra i due sistemi coinvolti nella comunicazione non c’è un clock comune e quindi per rendere la comunicazione più affidabile si aggiungono ai dati trasmessi dei bit di controllo.
In questo articolo descriveremo, invece, il protocollo SPI, esso è definito sincrono, poiché’ la comunicazione tra i due dispositivi, definiti Master e Slave, a differenza del protocollo RS232 , c’è un clock comune, generato dal master, che determina la velocità di comunicazione e l’istante di campionamento del dato, questo processo verrà descritto in seguito.
Il protocollo SPI fu’ originariamente introdotto dall’ azienda Motorola, ora Freescale gruppo NXP, per la gestione della comunicazione tra i propri microcontrollori e microprocessori.
A differenza dello standard I2C ideato dalla Philips, l’interfaccia SPI non è stata mai standardizzata; ciononostante è divenuta di fatto uno standard. Il protocollo di comunicazione SPI oltre ad essere sincrono è anche full duplex cioè entrambi i sistemi (Master e Slave) possono trasferire i propri dati contemporaneamente.
Descrizione del protocollo SPI
L’interfaccia di comunicazione prevede l’utilizzo di 4 segnali:
- MISO: Master Input Slave Output
- MOSI: Master Output Slave Input
- SCLK: Serial Clock (clock generato dal master)
- SS: Slave Select
Nella Figura 1 è riportato lo schema a blocchi, con indicazione della provenienza del segnale
Il protocollo SPI, può avere un solo Master e più Slave. Il Master per selezionare la periferica con la quale vuole instaurare la comunicazione, attiva il segnale SS ad essa connessa prima del trasferimento dati.
Quando lo Slave non è selezionato, il segnale SS è nello stato alto, e la sua uscita MISO deve essere posta in alta impedenza per evitare conflitti sul bus.
Come accennato in precedenza, il protocollo SPI è sincrono, il Master e lo Slave , coinvolti nella comunicazione hanno un clock comune, generato dal Master, che sincronizza tutte le acquisizioni di dati, in questo modo abbiamo un sistema più affidabile.
Il timing della comunicazione è riportato in Figura 3.
Il primo segnale che il Master deve attivare è la selezione dello Slave con il quale vuole comunicare, di seguito attiva il clock con i dati da trasferire. Lo Slave legge i dati su bus sul fronte di salita del clock , al temine del trasferimento dei dati, se il Master ha richiesto una risposta, lo Slave pone i dati sul bus ad ogni fronte di salita del clock.
Il protocollo SPI può essere rappresentato come due shift register (registri a scorrimento) che si scambiano dei dati e lo scorrimento dei registri è attivato dal fronte di salita del clock.
Una rappresentazione , seppur semplicistica, del principio di funzionamento è riportata in Figura 4
Nella descrizione del principio di funzionamento del protocollo SPI, sopra riportata , abbiamo considerato il trasferimento di solo 8 bit per volta e la sincronizzazione sul fronte di salita del clock, in effetti, queste caratteristiche, solitamente, possono essere configurate tramite dei registri interni al microcontrollore, per esempio, possiamo decidere di sincronizzare i dati sul fronte di discesa del clock e/o trasferire 16 bit per volta.