Vai al contenuto

Serial Peripheral Interface

Da Wikipedia, l'enciclopedia libera.

Template:Avvisounicode

Bus SPI: connessioni tra un master e un singolo slave
Dettaglio dell'hardware nella comunicazione tra master e un singolo slave in cui si vede la presenza di un buffer circolare a 8 bit

Il Serial Peripheral Interface o SPI (pronuncia: ɛs pi aɪ o spaɪ) è un sistema di comunicazione tra un microcontrollore e altri circuiti integrati o tra più microcontrollori.

È un bus standard di comunicazione ideato dalla Motorola e sviluppato, in una sua variante, anche dalla National Semiconductor con il nome di bus MicrowireTM.

La trasmissione avviene tra un dispositivo detto master e uno o più slave (letteralmente dall'inglese padrone e schiavo). Il master controlla il bus, emette il segnale di clock, decide quando iniziare e terminare la comunicazione[1].

Il bus SPI si definisce:

  • di tipo seriale
  • sincrono per la presenza di un clock che coordina la trasmissione e ricezione dei singoli bit e determina la velocità di trasmissione
  • full-duplex in quanto il "colloquio" può avvenire contemporaneamente in trasmissione e ricezione.

Per quanto riguarda la velocità di scambio dei dati (in pratica la frequenza del clock) non vi è un limite minimo (in quanto i dispositivi sono statici: possono mantenere se alimentati uno stato logico per un tempo indefinito) ma vi è un limite massimo che va determinato dai datasheet dei singoli dispositivi connessi e dal loro numero in quanto ogni dispositivo collegato al bus introduce sulle linee di comunicazione una capacità parassita.

Il sistema di comunicazione di solito serve per lo scambio di dati tra dispositivi montati "sulla stessa scheda elettronica" (o comunque tra schede elettroniche vicine tra di loro) in quanto non prevede particolari accorgimenti hardware per trasferire informazioni tra dispositivi lontani connessi con cavi soggetti a disturbi.

Il sistema è comunemente definito a quattro fili. Con questo si intende che le linee di connessione che portano i segnali sono in genere quattro. Va però tenuto conto che vi deve comunque essere una connessione di riferimento (0 Vdc comunemente indicata con GND, nome che a rigore è improprio) e che fisicamente quindi i fili sarebbero cinque. Discorso analogo si può fare su altri bus seriali definiti a due fili (I²C) o ad un filo in quanto si considerano solo le linee di segnale e si sottintende la connessione di riferimento.

I segnali

Esso si basa su 4 segnali (si riportano i nomi dei segnali che possono variare a seconda del costruttore. Consultare il datasheet del componente che si intende utilizzare in caso di dubbi):

  • SCLK - SCK: Serial Clock (emesso dal master)
  • SDI – MISO – SOMI – DI - SO: Serial Data Input, Master Input Slave Output (ingresso per il master ed uscita per lo slave)
  • SDO – MOSI – SIMO – DO – SI: Serial Data Output, Master Output Slave Input (uscita dal master)
  • CS – SS – nCS – nSS – STE: Chip Select, Slave Select, emesso dal master per scegliere con quale dispositivo slave vuole comunicare (dalla figura, il segnale SS negato, si comprende che per comunicare con il dispositivo slave deve venire messo a livello logico basso)

Di questi il Chip Select (CS o SS) non è indispensabile in tutte le applicazioni.

È facile confondersi nei nomi, spesso ambigui, sui segnali di trasferimento dei dati (ingressi e uscite). In ogni caso la consultazione dei datasheet dei dispositivi scelti dovrebbe chiarire ogni dubbio. Le denominazioni MOSI (Master Output Slave Input), MISO (Master Input Slave Output) sembrano essere quelle che comportano meno equivoci. Il segnale SCLK è il clock seriale che scandisce gli istanti di emissione e di lettura dei bit sulle linee di dati. È un segnale emesso dal master ed è quindi quest'ultimo a richiedere di volta in volta la trasmissione di una "parola"[2]. Il segnale SDI/MISO è la linea attraverso cui il dispositivo (master o slave) riceve il dato seriale emesso dalla controparte. Sullo stesso fronte di commutazione del clock, il dispositivo emette, con la stessa cadenza, il suo output ponendo il dato sulla linea SDO/MOSI (linea di output di dato).

Dispositivi slave controllati singolarmente

Esempio di connessione diretta tra un master e tre slave controllati singolarmente

Vantaggi: comunicazione più rapida tra master e singoli slave.
Svantaggi: necessità di avere un pin SS per ogni dispositivo slave.
La linea CS è dedicata all'abilitazione del dispositivo slave da parte del master, il quale può abilitare un qualsiasi dispositivo slave connesso a trasmettere. La linea CS, normalmente attiva bassa, in caso di disabilitazione (livello logico alto) lascia il dispositivo slave con uscita in alta impedenza e quindi isolato completamente dal bus indifferentemente dall'esistenza del segnale di clock. Il numero di dispositivi slave che si possono connettere al bus è limitato esclusivamente dal numero di possibili linee di chip select gestibili dal dispositivo master. La frequenza di clock, e di conseguenza la velocità del bus, può raggiungere, con questo standard, livelli anche elevati nell'ordine delle decine di MHz ed anche oltre.

Dispositivi slave connessi in catena (daisy chain)

Master connesso a tre slave connessi secondo una terminologia comune in Daisy chain (uscita di un dispositivo collegata all'ingresso del dispositivo successivo nella catena)

Vantaggi: uso di un unico pin per selezionare i dispositivi.
Svantaggi: minore velocità di aggiornamento dei singoli slave.
In questo caso la linea SS serve per indicare agli slave quando campionare il dato presente nel registro (il master inietta i bit sulla linea MOSI, partendo dal bit più significativo da inviare all'ultimo slave. Così facendo, una volta trasmessi tutti i bit destinati a tutti gli slave in questa sequenza, può segnalare agli slave che i dati in loro possesso nel registro di comunicazione sono effettivamente quelli destinati a loro). Se lo Slave Select fosse collegato, per esempio, fisso a massa, gli slave non potrebbero sapere se il dato presente nel loro registro di comunicazione è completo e da campionare, o magari destinato ad uno slave successivo, oppure non allineato alla dimensione del registro stesso. In questa configurazione è anche impossibile avere conflitto sulla linea MOSI del master (cosa che invece accadrebbe nella connessione di dispositivi slave controllati singolarmente dove una eventuale abilitazione di più slave creerebbe un conflitto sulla linea MISO creando problemi nella comunicazione (oltre ad un uso dei dispositivi con uscite in conflitto che non giova alla loro affidabilità nel tempo).

Come avviene la comunicazione

con i telefoni

Note

  1. ^ Il master deve essere unico ma la qualifica di master può essere scambiata tra diversi dispositivi connessi al bus (purché siano in grado di farlo e cioè non siano nati come semplici slaves)
  2. ^ Può essere selezionabile per comunicare con un byte (8 bit) o più (16 bit). Di solito il primo bit trasmesso è il più significativo.

Voci correlate

Altri bus seriali

  • I²C - Bus con tre fili: due di segnale (linea di Clock e linea Dati bidirezionale) ed un comune di riferimento. Comunemente chiamato seriale a due fili.
  • S/PDIF, AES/EBU - Standard usato in ambito audio.
  • EIA RS-485 - Standard industriale seriale a due fili di tipo half-duplex.
  • EIA RS-422 - Standard industriale seriale a quattro fili, full-duplex.
  • Controller Area Network - Standard chiamato CAN bus. Nato per l'ambiente automotive (mezzi mobili) è usato anche in ambiente industriale per la sua immunità ai disturbi.
  • USB - Standard per l'interfacciamento di periferiche ai computer.
  • EIA RS-232 - Standard in passato di abituale uso sui computer e dall'inizio del XXI secolo relegato ad ambiti specifici. Spesso realizzato in maniera semplificata usando solo tre fili: due linee di segnale (Trasmissione e Ricezione) e un comune di riferimento.
  • MIDI - Standard in uso nel campo degli strumenti musicali elettronici.

Altri progetti

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica