Tutorials - Elettronica

 
 

RS-232


L' UART

Proprio per evitare problemi dovuti ad una gestione puramente software di segnali hardware ben precisi, le funzioni della comunicazione sono, da lungo tempo, demandate a componenti specifici, denominati UART (Universal Asinchronous Receiver Transmitter) che provvedono alla trasmissione ed alla ricezione dei pacchetti dati. Si tratta essenzialmente di sistemi di shift register per serializzare e de serializzare i dati da e per la linea di trasmissione. 

L' UART effettua autonomamente le seguenti operazioni:

  1. converte dati ricevuti in parallelo dalla CPU in un flusso seriale di bit e viceversa

  2. formatta il dato seriale aggiungendo bit di start, parità e stop 

  3. gestisce il sincronismo del trasmettitore e del ricevitore

  4. rende disponibili le linee per il controllo hardware del flusso

  5. dispone di buffer FIFO (da 2 bytes nei microcontroller a 128 e più)

Inoltre può anche contenere  il generatore di baud rate.

UART intergrati, come 8250 di Intel o 16450-16550 di NS, hanno gestito per lungo tempo le COM dei personal computer, prima di cedere il posto ai chip di I/O multifunzione che contengono anche le interfacce per la porta parallela, la tastiera, il mouse, ecc.

Nei microcontroller embedded il modulo UART è un elemento spesso presente, a volte in più di una unità nello steso chip, dato che la comunicazione seriale asincrona è un elemento di cui si può fare a meno solo con grande difficoltà, sia per la lunga tradizione di uso, sia per i costi, sia per la semplicità di implementazione rispetto ad altre soluzioni, come la più recente USB.

La struttura UART di base si è poi evoluta con l' aggiunta di funzioni addizionali, dando origine a:

  • USART (Universal Sinchronous Asinchronous Receiver Transmitter), con la possibilità di gestire comunicazioni asincrone e sincrone.
     

  • AUSART (Addressable USART), con la possibilità di essere associato ad un indirizzo in una connessione multi drop
     

  • EUSART (Enhanced USART), con funzioni avanzate, come il riconoscimento automatico del baud rate (auto-baud rate).

In ogni caso, la consultazione dei fogli dati dei componenti è la via migliore per comprendere le funzioni e le possibilità di questi moduli.

La trasmissione seriale si svolge a frequenze basse rispetto ai cicli di istruzione dei microprocessori e microcontroller, per cui, in applicazioni non critiche, la potenza di calcolo permette di emularla via software (bit banging), utilizzando comini pin di I/O per uso generico. Questo consente di disporre di comunicazione RS-232 anche in microcontroller che non hanno il modulo dedicato.

Comunque, l' impiego di un UART rende estremamente semplice la comunicazione seriale, permettendo sia gestioni in polling che in interrupt.



Va osservato che l' impiego dell' UART non è limitato a RS-232, ma si estende a tutte le comunicazioni seriali asincrone (422/423/485/current loop/IrDA/wireless, ecc), comunque basate sulla trasmissione di bit in serie.
Inoltre, dispositivi USART sono in grado di supportare anche comunicazioni di tipo sincrono, in cui è trasmesso il clock, come descritto più avanti. 

(Questa modalità sincrona non è da confondere con gli standard di comunicazione SPI e I2C), che, nei microcontroller , sono gestite da un modulo specifico, chiamato SSP o MSSP.


La modalità sincrona

Un USART (Universal Sinchronous Asinchronous Receiver Transmitter) consente di gestire anche una modalità sincrona, in cui viene fornito il clock.
Questo modo consente velocità di trasmissione più elevate ed è più efficiente di quella asincrona, anche per la struttura a pacchetti (data packet) dei dati scambiati.

Nella modalità sincrona, in generale, la comunicazione è  half-duplex, ovvero trasmissione e ricezione non sono contemporanee, dato che si può utilizzare una sola linea dati condivisa.
Si può realizzare una struttura a bus, dove un master gestisce il clock e può trasmettere e ricevere, mentre gli altri dispositivi sono slave e non possono governare il clock.

Non sono presenti i bit speciali (Start, Stop, Parità) e questo migliora l' efficienza (in un pacchetto asincrono del genere xx, 8, n, 1 il 20% dei bit trasmessi è "inutile" come dato, ma ha esclusivamente scopo di correttezza della trasmissione).
In modo sincrono, il sincronismo per lo scambio dei pacchetti di dati è fornito da una sequenza di inizio (header), contenete le informazioni necessarie al ricevitore per trattare il pacchetto, che viene chiuso da una coda (tail) che integra i checksum per la verifica e la correzione di eventuali errori.
Dato il sistema di trasmissione a pacchetti di dati, header e tail influiscono per percentuali trascurabili sul tempo di trasmissione dei dati.

La modalità sincrona, però, non è comune nell'ambito dei PC.


Copyright © afg. Tutti i diritti riservati.
Aggiornato il 23/04/12.