Fondamenti della comunicazione UART

UART o Universal Asynchronous Receiver Transmitter è un hardware dedicato associato alla comunicazione seriale. L’hardware per UART può essere un circuito integrato sul microcontrollore o un IC dedicato. Questo è in contrasto con SPI o I2C, che sono solo protocolli di comunicazione.

UART è una delle tecniche di comunicazione seriale più semplici e più utilizzate. Oggi, UART è usata in molte applicazioni come ricevitori GPS, moduli Bluetooth, modem GSM e GPRS, sistemi di comunicazione wireless, applicazioni basate su RFID ecc.

Se vi ricordate i vecchi sistemi informatici, dispositivi come mouse, stampante e modem sono collegati usando un pesante connettore sul retro. Tutti questi dispositivi comunicavano usando UART.

Anche se l’USB ha sostituito tutti i tipi di standard di comunicazione sui computer e altri dispositivi, UART è ancora usato nelle applicazioni sopra menzionate.

Quasi tutti i microcontrollori hanno un hardware UART dedicato integrato nella loro architettura. La ragione principale per l’integrazione dell’hardware UART nei microcontrollori è che si tratta di una comunicazione seriale e richiede solo due fili per la comunicazione.

Prima di andare a spiegare ulteriormente l’UART, come funziona e i passi coinvolti nella trasmissione e ricezione dei dati, cercheremo di ricordare alcune informazioni sulla comunicazione seriale e un piccolo confronto tra comunicazione seriale e parallela.

Outline

Breve nota sulla comunicazione parallela e seriale

Il trasferimento di dati digitali da un dispositivo all’altro può essere ottenuto in due modi: Trasferimento dati parallelo e trasferimento dati seriale. Nel trasferimento dati parallelo, tutti i bit vengono trasferiti dalla sorgente alla destinazione in una volta sola.

Questo è possibile perché il trasferimento dati parallelo utilizza più corsie o fili tra il trasmettitore e il ricevitore per trasferire i dati.

I metodi di trasferimento dati paralleli sono più veloci e costosi perché hanno bisogno di più hardware e molti fili. Le stampanti dei vecchi tempi sono il miglior esempio di comunicazione parallela esterna. Altri esempi sono RAM, PCI, ecc.

Con il progresso nella tecnologia dei circuiti integrati, i circuiti integrati digitali stanno diventando più piccoli e più veloci e di conseguenza le velocità di trasferimento nella comunicazione parallela con più corsie hanno raggiunto un collo di bottiglia.

La comunicazione seriale, invece, trasferisce i dati bit per bit usando una singola linea o filo. Per la comunicazione bidirezionale tra il trasmettitore e il ricevitore, abbiamo bisogno solo di due fili per un trasferimento seriale dei dati di successo.

Siccome la comunicazione seriale ha bisogno di meno circuiti e fili, il costo di implementazione è minore. Di conseguenza, usare la comunicazione seriale in circuiti complessi potrebbe essere più pratico della comunicazione parallela.


Ma l’unica preoccupazione dei trasferimenti seriali di dati è la velocità. Poiché il trasferimento dei dati avviene su una sola linea, la velocità di trasferimento nella comunicazione seriale è inferiore a quella della comunicazione parallela. Oggi, la velocità di trasferimento dei dati seriali non è una preoccupazione perché i progressi nella tecnologia hanno portato a velocità di trasferimento più elevate.

Introduzione alla comunicazione UART

UART o Universal Asynchronous Receiver Transmitter è un dispositivo di comunicazione seriale che esegue la conversione dei dati da parallelo a seriale sul lato del trasmettitore e da seriale a parallelo sul lato del ricevitore. È universale perché i parametri come la velocità di trasferimento, la velocità dei dati, ecc. sono configurabili.

Come menzionato nella sezione introduttiva, UART è un pezzo di hardware che funge da ponte tra il processore e il protocollo o porta di comunicazione seriale. L’immagine seguente mostra brevemente questa interfaccia. La comunicazione seriale può essere qualsiasi cosa come USB, RS – 232, ecc.


La lettera ‘A’ in UART sta per Asincrona cioè non c’è nessun segnale di clock per sincronizzare o validare i dati trasmessi dal trasmettitore e ricevuti dal ricevitore (comunicazione seriale asincrona).

Questo è in contrasto con la comunicazione seriale sincrona, che usa un segnale di clock che è condiviso tra il trasmettitore e il ricevitore per “sincronizzare” i dati tra loro.

Se non c’è un clock (o qualsiasi altro segnale di temporizzazione) tra il trasmettitore e il ricevitore, allora come fa il ricevitore a sapere quando leggere i dati? Inoltre, UART usa dei bit speciali all’inizio e alla fine di ogni parola di dati per sincronizzare il trasmettitore e il ricevitore. Maggiori informazioni su questi bit speciali nelle sezioni successive.

Nella comunicazione seriale basata su UART, il trasmettitore e il ricevitore comunicano nel seguente modo. L’UART sul dispositivo mittente, cioè l’UART trasmittente, riceve dati paralleli dalla CPU (microprocessore o microcontrollore) e li converte in dati seriali.

Questi dati seriali sono trasmessi all’UART sul dispositivo ricevente, cioè l’UART ricevente. L’UART ricevente, dopo aver ricevuto i dati seriali, li riconverte in dati paralleli e li dà alla CPU.

Connessione di base UART

Il pin sull’UART trasmittente, che trasmette i dati seriali è chiamato TX e il pin sull’UART ricevente, che riceve i dati seriali è chiamato RX.

Siccome l’UART coinvolge la conversione dei dati da parallelo a seriale e da seriale a parallelo, gli shift register sono una parte essenziale dell’hardware dell’UART (due shift register per essere specifici: Transmitter Shift Register e Receiver Shift Register).

Come funziona UART?

Nella comunicazione seriale UART, i dati sono trasmessi in modo asincrono, cioè non c’è nessun orologio o altro segnale di temporizzazione coinvolto tra il mittente e il ricevitore. Invece del segnale di clock, l’UART usa alcuni bit speciali chiamati Start e Stop bit.

Questi bit sono aggiunti al pacchetto dati attuale rispettivamente all’inizio e alla fine. Questi bit aggiuntivi permettono all’UART ricevente di identificare i dati effettivi.

L’immagine sopra mostra una tipica connessione UART. L’UART trasmittente riceve i dati dal dispositivo di controllo attraverso il bus dati. Il dispositivo di controllo può essere qualsiasi cosa come una CPU di un microprocessore o un microcontrollore, unità di memoria come una RAM o una ROM, ecc. I dati ricevuti dall’UART trasmittente dal bus dati sono dati paralleli.

A questi dati, l’UART aggiunge i bit di inizio, parità e stop per convertirli in un pacchetto dati. Il pacchetto di dati viene poi convertito da parallelo a seriale con l’aiuto dello shift register e viene trasmesso bit per bit dal pin TX.

L’UART ricevente riceve questi dati seriali al pin RX e rileva i dati effettivi identificando i bit di start e stop. Il bit di parità è usato per controllare l’integrità dei dati.

Su separazione dei bit di inizio, parità e stop dal pacchetto di dati, i dati sono convertiti in dati paralleli con l’aiuto dello shift register. Questi dati paralleli sono inviati al controller all’estremità ricevente attraverso un bus di dati.

Struttura del pacchetto di dati o frame

I dati nella comunicazione seriale UART sono organizzati in blocchi chiamati pacchetti o frame. La struttura di un tipico pacchetto di dati UART o il framing standard dei dati è mostrato nell’immagine seguente.

Vediamo ogni pezzo del frame.

Start Bit: Start bit è un bit di sincronizzazione che viene aggiunto prima dei dati reali. Il bit di inizio segna l’inizio del pacchetto di dati. Di solito, una linea dati inattiva, cioè quando la linea di trasmissione dati non sta trasmettendo alcun dato, è tenuta ad un livello di tensione alto (1).

Per iniziare il trasferimento dei dati, l’UART trasmittente tira la linea dati dal livello di tensione alto a quello basso (da 1 a 0). L’UART ricevente rileva questo cambiamento da alto a basso sulla linea dati e inizia a leggere i dati effettivi. Di solito, c’è solo un bit di inizio.

Bit di stop: Il bit di stop, come suggerisce il nome, segna la fine del pacchetto di dati. Di solito è lungo due bit, ma spesso viene usato solo un bit. Per terminare la trasmissione, l’UART mantiene la linea dati ad alta tensione (1).

Parity Bit: La parità permette al ricevitore di controllare se i dati ricevuti sono corretti o no. La parità è un sistema di controllo degli errori a basso livello ed è disponibile in due varietà: Parità pari e Parità dispari. Il bit di parità è opzionale e in realtà non è molto usato.

Bit di dati: I bit di dati sono i dati effettivi che vengono trasmessi dal mittente al ricevitore. La lunghezza del frame di dati può essere ovunque tra 5 e 9 (9 bit se la parità non è usata e solo 8 bit se la parità è usata). Di solito, il LSB è il primo bit di dati da trasmettere (se non diversamente specificato).

Regole di UART

Come detto prima, non c’è un segnale di clock in UART e il trasmettitore e il ricevitore devono concordare alcune regole di comunicazione seriale per un trasferimento di dati senza errori. Le regole includono:

  • Bit di sincronizzazione (bit di start e stop)
  • Bit di parità
  • Bit di dati e
  • Baud Rate

Abbiamo visto i bit di sincronizzazione, bit di parità e bit di dati. Un altro parametro importante è il Baud Rate.

Baud Rate: La velocità alla quale i dati sono trasmessi è menzionata usando il Baud Rate. Sia l’UART trasmittente che l’UART ricevente devono essere d’accordo sul Baud Rate per una trasmissione di dati di successo.

Baud Rate si misura in bit al secondo. Alcuni dei baud rate standard sono 4800 bps, 9600 bps, 19200 bps, 115200 bps ecc. Di questi 9600 bps è il baud rate più comunemente usato.

Vediamo un esempio di frame di dati in cui devono essere trasmessi due blocchi di dati cioè 00101101 e 11010011. Il formato del frame è 9600 8N1 cioè 9600 bps con 8 bit di dati, nessuna parità e 1 bit di stop. In questo esempio, non abbiamo usato il bit di parità.

Vantaggi dell’UART

  • Richiede solo due fili per la trasmissione dati full duplex (a parte le linee di alimentazione).
  • Nessun bisogno di clock o di qualsiasi altro segnale di temporizzazione.
  • Il bit di parità assicura il controllo degli errori di base integrato nel frame del pacchetto dati.

Svantaggi di UART

  • La dimensione dei dati nel frame è limitata.
  • La velocità di trasferimento dei dati è inferiore rispetto alla comunicazione parallela.
  • Trasmettitore e ricevitore devono concordare le regole di trasmissione e deve essere selezionato il baud rate appropriato.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *