|
INTRODUZIONE
In
questa tutorial analizzeremo la interfaccia SPI (Serial
Peripheral Interface) e come questa è usata per
trasferire i dati da/verso i microcontrollori PIC.
Il protocollo SPI è frequentemente usato quando sono
disponibili poche linee di ingresso/uscita, ma la
comunicazione fra due o più dispositivi deve essere
veloce e facile da effettuare. In primo luogo faremo una
descrizione generale del protocollo SPI introducendo i
concetti di base. Successivamente esamineremo l'uso della
interfaccia SPI sui MCU PIC esaminando nei dettagli
come la SPI e' implementata in essi. Infine verrà
mostrato un esempio di codice in cui saranno messi in
evidenza le parti di codice relative al master e allo
slave.
Generalità
sulla SPI
La
acronimo SPI, che sta per Serial Peripheral Interface, si
riferisce ad una periferica di interfaccia con
caratteristiche seriali. Nella comunicazione SPI sono presenti un unico
dispositivo principale detto "
MASTER" e un certo numero di dispositivi secondario detti "SLAVE"
connessi al MASTER mediante un bus a 4 fili su ci viaggiano i
segnali necessari alla comunicazione SPI trai i vari dispositivi.
L' SPI usa i seguenti segnali per serializzare lo scambio di dato con un altro dispositivo:
SS - Questo segnale è conosciuto come "SLAVE Select ". Quando passa a livello basso, il dispositivo slave si mette in attesa
pronto ad ascoltare il segnali di clock e i dati.
SCK - clock seriale generato dal MASTER che controlla l'invio e la ricezione dei dati
SDO - linea di uscita seriale dei dati di uscita da un dispositivo all'altro.
SDI - linea di ingresso seriale dei dati in ingresso ad un dispositivo SPI
I dati
sono "scambiati" sempre fra i vari dispositivi collegati al
bus.
Nessun dispositivo può essere solo un trasmettitore o
solo un ricevitore nel protocollo SPI. Ogni dispositivo
ha due linee di dati, una di ingresso SDI e una di uscita
SDO.
Lo scambio di dati e' scandito da un segnale di temporizzazione
detto clock presente sulla linea denominata con SCK. Il
clock e' generato dal MASTER che, tramite esso, sincronizzazione
gli
eventi, controlla quando i dati possono cambiare in
uscita e quando possono essere letti. Soltanto
il dispositivo MASTER può controllare la linea di clock SCK.
Questo e' un vantaggio perché il clock può variare senza distruggere o
corrompere i dati. La frequenza dei dati (data rate)
cambierà semplicemente con i cambiamenti del clock. Ciò
rende l' SPI ideale quando si ha un clock
impreciso come nel caso in cui si utilizzi un oscillatore
RC.
La sincronizzazione con il segnale di clock SCK dei dati
in uscita sul bus SDO avviene in corrispondenza dei
fronti di salita o di discesa del clock. I dati presenti
sul bus di ingresso SDI vengono logicamente letti in
corrispondenza del fronte opposto a quello in cui si
effettua il cambiamento in uscita. Si suppone che nel
punto di lettura i dati siano gia validi. In figura 1 e' mostrato un
esempio della comunicazione SPI

Fig.
1 diagramma temporale dei segnali SCK,SDO e SDI
Le
frecce indicano quando si verifica un fronte (salita o
discesa) del clock e dei segnali su SDO. Nel caso del SDI il dato e' campionato sul fronte del clock opposto a quello
in cui cambia l'uscita. La modalità di comunicazione SPI
mostrata in figura e' detta SPI mode 1,1.
Tutti i
dispositivi SLAVE, collegati allo stesso BUS, sono
controllati dal clock generato dal l'unico MASTER che
controlla il bus. I dispositivi SLAVE non possono
controllare o alterare il segnale di clock.
Quando nel sistema esiste più di uno SLAVE per selezionare
il dispositivo con cui comunicare il MASTER attiva il
segnale conosciuto come SS (SLAVE Select). Il segnale è spesso attivo al livello basso per migliorare
l'immunità al rumore del sistema. La relativa funzione
è di resettare lo SLAVE in modo che sia pronto a
ricevere il byte successivo.
|