Site icon Renzo Mischianti

i2c, SPI e UART a confronto

i2c vs SPI vs UART confronto velocità distanza complessità

i2c vs SPI vs UART confronto velocità distanza complessità

Spread the love

i2c vs SPI vs UART comparison speed distance complexity

I2C, SPI e UART sono protocolli che incontriamo continuamente in questo mondo, ma perché abbiamo bisogno di tutti questi protocolli per interconnettere periferiche esterne? Bene! La risposta è semplice perché ci sono molte esigenze da soddisfare e ogni protocollo ha un ambito ben definito.
In questo articolo faremo un confronto riassuntivo per poter sempre selezionare il protocollo corretto.

UART

L’universal asynchronous receiver transmitter (UART) è un dispositivo hardware per computer per la comunicazione seriale asincrona in cui il formato dei dati e le velocità di trasmissione sono configurabili. Invia i bit di dati uno per uno, dal meno significativo al più significativo, incapsulati dai bit di avvio e di arresto in modo che il canale di comunicazione gestisca una tempistica precisa. Un circuito di pilotaggio esterno all’UART gestisce i livelli dei segnali elettrici.

Velocità

La velocità di trasmissione dati di un’interfaccia UART è simile a quella di un’interfaccia I2C.  Le interfacce UART hanno una velocità dati massima di circa 5 Mbps. C’è anche un overhead del protocollo sotto forma di bit di avvio, arresto e parità.

Interfaccia

La  polarità  dei segnali è +5V per mark o high e 0 V per space o low. Tuttavia, la trasmissione di dati seriali lungo il cavo in un’interfaccia di trasmissione RS232 richiede da −15 a −12V per il mark e da +12 a +15 V per lo space. I line driver vengono utilizzati per convertire i livelli logici richiesti dall’UART in quelli necessari per i pin dell’interfaccia RS232 TD e RD.

TTL  – Transistor-Transistor Logic non è un protocollo. È una tecnologia più vecchia per la logica digitale, ma il nome è spesso usato per riferirsi alla tensione di alimentazione a 5V, di solito riferendosi erroneamente a ciò che dovrebbe essere chiamato UART.

UART wiring one master, one slave

Può operare tra dispositivi in ​​3 modi:

Distanza

Un UART può lavorare su lunghe distanze con driver di linea appropriati: da 15 metri (m) per il bus dati seriale RS-232 a 1000m per le interfacce RS-485 o RS-422. La distanza è influenzata anche dalla qualità del cavo e dal baud rate.

Comunicazione

UART communication example

Pacchetto

UART data packet

Conclusioni

Vantaggi

Svantaggi

I2C

2 C  (Inter-Integrated Circuit,  eye-squared-C ) è in alternativa noto come I2C o IIC. È un bus di comunicazione seriale sincrono, multi-master, multi-slave, a commutazione di pacchetto, single-ended. Inventato nel 1982 da Philips Semiconductors. È ampiamente utilizzato per collegare circuiti integrati periferici a bassa velocità a processori e microcontrollori nelle comunicazioni a breve distanza all’interno della scheda. (cit. WiKi)

Velocità

I2C supporta 100 kbps, 400 kbps e 3,4 Mbps. Alcune varianti supportano anche 10 Kbps e 1 Mbps.

ModalitàVelocità
massima
Capacità 
massima
DriveDirezione
Modalità standard (Sm)100 kbit/s400 pFOpen drainBidirezionale
Modalità veloce (Fm)400 kbit/s400 pFOpen drainBidirezionale
Modalità veloce Plus (Fm+)1 Mbit/s550 pFOpen drainBidirezionale
Modalità ad alta velocità (Hs)1.7 Mbit/s400 pFOpen drainBidirezionale
Modalità ad alta velocità (Hs)3.4 Mbit/s100 pFOpen drainBidirezionale
Modalità ultra veloce (UFm)5 Mbit/sPush-pullUnidirezionale

Interfaccia

Come la comunicazione UART, I2C utilizza solo due fili per trasmettere dati tra dispositivi:

I2C è un protocollo di comunicazione seriale, quindi i dati vengono trasferiti bit per bit lungo un unico filo (la linea SDA).

Come SPI, I2C è sincrono, quindi l’uscita dei bit è sincronizzata con il campionamento dei bit da un segnale di clock condiviso tra il master e lo slave. Il master controlla sempre il segnale di clock.

Ci saranno più slave e più master e tutti i master potranno comunicare con tutti gli slave.

i2c data packet

Connessioni dei dispositivi

i2c wiring one master one slave

Poiché I2C utilizza l’indirizzamento, più slave possono essere controllati da un unico master. È possibile collegare/indirizzare fino a 27 dispositivi slave nel circuito di interfaccia I2C. Con un indirizzo a 7 bit sono disponibili 128 (27) indirizzi univoci. L’utilizzo di indirizzi a 10 bit è raro ma fornisce 1.024 (210) indirizzi univoci.

i2c wiring one master multiple slaves

È possibile collegare più master a uno o più slave. Il problema con più master nello stesso sistema si verifica quando due master tentano di inviare o ricevere dati contemporaneamente sulla linea SDA. Ogni master deve rilevare se la linea SDA è bassa o alta prima di trasmettere un messaggio per risolvere questo problema. Se la linea SDA è bassa, significa che un altro master ha il controllo del bus e il master deve attendere per inviare il messaggio. Se la linea SDA è alta, è possibile trasmettere il messaggio. Per collegare più master a più slave

i2c wiring multiple masters multiple slaves

Distanza

La stragrande maggioranza delle applicazioni utilizza I2C nel modo in cui è stato progettato inizialmente: circuiti integrati periferici collegati direttamente a un processore sulla stessa scheda a circuito stampato e quindi su distanze relativamente brevi inferiori a 30 cm (1 piede) senza connettore. Tuttavia, utilizzando un driver diverso, una versione alternativa di I2C può comunicare fino a 20 metri (anche oltre 100 metri) su CAT5 o altri cavi.

Conclusioni

Vantaggi

Svantaggi

SPI

La Serial Peripheral Interface (SPI) è una specifica di interfaccia di comunicazione seriale sincrona utilizzata per la comunicazione a breve distanza, principalmente nei sistemi embedded. I dispositivi SPI comunicano in modalità full duplex utilizzando un’architettura master-slave con un unico master. Il dispositivo master origina il frame per la lettura e la scrittura. Più dispositivi slave sono supportati attraverso la selezione con singole linee di selezione slave (SS), a volte chiamate chip select (CS).

Velocità

Il limite massimo di velocità dati non è specificato nell’interfaccia SPI. Solitamente supporta circa da 10Mbps a 20Mbps.

Non esiste un insieme standard di velocità definito per il protocollo SPI. Le velocità tipiche del bus sono nella gamma di 50MHz. Poiché non vi è alcun overhead aggiunto dal protocollo, come l’indirizzamento e il controllo del flusso, il throughput che può essere ottenuto utilizzando SPI rispecchia la frequenza di clock. Per una linea SPI a 50MHz, il throughput è di 50Mbps. Un’altra cosa da ricordare è che la comunicazione è full-duplex. Quindi, il throughput effettivo nel caso menzionato può arrivare fino a 100 Mbps (se sia il master che lo slave possono scambiarsi dati significativi).

Interfaccia

Il bus SPI specifica quattro segnali logici:

Slave Select ha la stessa funzionalità di chip select e viene utilizzato al posto di un concetto di indirizzamento. MOSI su un master si collega a MOSI su uno slave. MISO su un master si collega a MISO su uno slave.

Nota: su un dispositivo solo slave, MOSI può essere etichettato come SDI (Serial Data In) e MISO può essere etichettato come SDO (Serial Data Out)

I nomi dei segnali sopra riportati possono essere utilizzati per etichettare in modo inequivocabile sia i pin del dispositivo master e slave, sia le linee di segnale tra di essi e sono i più comuni nei prodotti moderni. I nomi dei pin sono sempre in maiuscolo, ad esempio “Slave Select”, non “slave select”.

I prodotti più vecchi possono avere nomi di pin SPI non standard:

Ogni azienda o produttore ha i propri protocolli specifici per comunicare con le periferiche. Quindi è necessario leggere il datasheet per conoscere il protocollo di lettura/scrittura per la comunicazione SPI da stabilire. Ad esempio, se vogliamo comunicare con SPI tra il microcontrollore e la EPROM. Qui è necessario esaminare il diagramma operativo di lettura/scrittura nel foglio dati EPROM.

Comunicazione

SPI wiring one master, one slave

Ogni slave richiede un segnale di abilitazione separato in un sistema multi-slave, che è leggermente più complicato sull’hardware rispetto al sistema I2C.

SPI wiring one master multiple slaves

L’interfaccia SPI è in realtà costituita da due semplici shift registers nell’hardware interno. Viene trasmesso bit per bit sotto il segnale di abilitazione slave e lo shift pulse generato dal dispositivo master. I dati trasmessi sono 8 bit. Il bit alto è nella parte anteriore e il bit basso è nella parte posteriore.

L’interfaccia SPI è una trasmissione seriale sincrona di dati tra la CPU e il dispositivo periferico a bassa velocità. Sotto lo shift pulse del dispositivo master, i dati vengono trasmessi bit per bit. Il bit alto è nella parte anteriore e il bit basso è nella parte posteriore. È una comunicazione full-duplex e la velocità di trasmissione dei dati è complessivamente più veloce del bus I2C che può raggiungere velocità di pochi Mbps.

Distanza

Sebbene il metodo di comunicazione SPI sia generalmente adatto a distanze fino a circa 10m può coprire distanze maggiori, spesso è necessario un ripetitore a causa dell’attenuazione dovuta alla maggiore resistenza di linea dei cavi lunghi.

Conclusioni

Vantaggi

Svantaggi

Tavola di comparazione

UARTI2CSPI
Nome completoUniversal Asynchronous Receiver-TransmitterInter-Integrated CircuitSerial Peripheral Interface
ComplessitàMolto bassaBassa anche con molti dispositiviCablaggio e gestione complessi con molti dispositivi
Num. min. di cavi224
DuplexFull-duplexHalf-duplexFull-Duplex
Tipo di comunicazioneAsincronaSincronaSincrona
Numero di slave1128 con indirizzo predefinito a 7 bit. 
Per impostazione predefinita, è possibile collegare/indirizzare fino a 27 dispositivi slave nel circuito di interfaccia I2C.
Limitato dai pin SS disponibili
Numero di masterNon applicabileUno o più1
Distanza da 15 a 1000mda 20 a 100mpiù di 10m
Velocitàvelocità dati massima di circa 5Mbpsvelocità dati massima da 3,4Mbps a 5Mbpsvelocità dati massima predefinita di circa 50Mbps ma con condizioni particolari 100Mbps

Conclusione

Per me, non c’è un vincitore e tutti i protocolli hanno la loro utilità. UART può essere utilizzato per lunghe distanze e quando si desidera una semplice implementazione del protocollo. i2c può essere utilizzato per collegare molti dispositivi a bassa velocità con semplici connessioni hardware. SPI può essere utilizzato con alcuni dispositivi ad alta velocità.

Grazie


Spread the love
Exit mobile version