SPI

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...

Schema di principio

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.

SPI: registro a scorrimento

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

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:

SPI modo 0

SPI mode 1

SPI mode 2

SPI mode 4

In genere lo SPI Mode è programmabile sul Master, fisso sullo Slave (nota 1).

Slave Select

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).

SPI Slave select

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.

Nomenclatura

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.

Note

  1. I termini Master e Slave sono considerati da molte persone politicamente scorretti, ma sono quelli oggi più utilizzati. In alternativa sono proposti Controller e Peripheral
  2. Per collegare più periferiche è possibile anche un collegamento in daisy chain, ma è un'opzione ben poco utilizzata
  3. A volte possono essere trasmesse parole più lunghe di otto bit


Pagina creata nel dicembre 2021
Ultima modifica: 1 maggio 2022


Licenza "Creative Commons" - Attribuzione-Condividi allo stesso modo 3.0 Unported


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima