SPI (Serial Peripheral Interface) è un protocollo di comunicazione nato nel secolo scorso che ha il suo punto di forza, ma anche di debolezza, nell'estrema semplicità. L'ambito di applicazione tipico è oggi il collegamento di un microprocessore ad una periferica, a breve distanza ed a velocità (relativamente) elevata.
Il fatto che siano richieste (almeno) tre linee spesso porta ad indicare SPI come 3-wire serial.
Questo protocollo non è mai stato standardizzato e ciò ha prodotto il proliferare di varianti al limite dell'anarchia, dalla nomenclatura alla velocità, dai livelli elettrici al fronte attivo del clock...
Il motivo principale della popolarità di SPI deriva dal fatto che sia il trasmettitore che il ricevitore sono realizzati con un semplice registro a scorrimento ciascuno, collegati allo stesso clock e con l'uscita dell'uno collegata all'ingresso dell'altro.
Il trasferimento degli otto bit (nota 3) contenuti nel registro SISO di sinistra verso il registro SISO di destra richiedo otto fronti di clock. Contemporaneamente gli otto bit nel registro di destra sono trasferiti a sinistra.
Le due linee utilizzate per la trasmissione dei dati nei due versi sono indicate come:
Il clock ha lo scopo di sincronizzare i trasferimenti ed è generato dal dispositivo indicato come Master (nota 1). Non esistono frequenze predeterminate e valori comuni sono compresi tra 10 kHz e 10 MHz. Le informazioni sono scambiate in modalità full-duplex utilizzando contemporaneamente MISO e MOSI.
Il clock può avere come fronte attivo quello di salita oppure quello di discesa. Inoltre, prima della trasmissione, il clock può assumere un livello logico alto oppure basso. Questo comportamento dà origine a quattro diverse modalità di funzionamento, indicate come SPI MODE X, con X variabile da 0 a 3:
In genere lo SPI Mode è programmabile sul Master, fisso sullo Slave (nota 1).
Oltre ai segnali già descritti, è necessario un ulteriore ingresso di Slave Select (SS) per ciascuna periferica, per attivare la comunicazione; nell'immagine di apertura è possibile vedere un esempio. In genere SS è attivo basso, come riconoscibile dal tratto sopra il nome.
Questo segnale permette di collegare più periferiche allo stesso Master, a condizione che ciascuna di esse possieda un SS separato. Di seguito lo schema che mostra il collegamento di due Slave ad un singolo Master (nota 2).
La comunicazione avviene solo tra il Master ed uno Slave alla volta, quello identificato dallo SS basso.
Si noti che è necessario che il MISO sia un'uscita 3-state attivata normalmente da SS, cosa vera per praticamente tutte le periferiche SPI.
Strano dedicare un intero paragrafo ad un aspetto tutto sommato secondario... La ragione è che, non esistendo uno standard, vengono usati spesso nomi assolutamente diversi, facendo nascere il dubbio di essere di fronte a protocolli diversi.
Pagina creata nel dicembre 2021
Ultima modifica: 1 maggio 2022
Appunti scolastici - Versione 0.1026 - Agosto 2024
Copyright 2012-2024, Vincenzo Villa (https://www.vincenzov.net)
Creative Commons | Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)