Interfacce seriali

[ L'interfaccia seriale RS-232: indice ] [ Pagina successiva ]

RS-232 utilizza un protocollo seriale asincrono, segnali elettrici non bilanciati e collegamenti point-to-point. Vediamo di spiegare il significato di questi termini:

La velocità di trasmissione

Le unità di misura della velocità di trasmissione sono essenzialmente due: il baud ed il bit per secondo (bps o b/s), spesso trattate erroneamente come sinonimi.

Nel caso di trasmissione binaria (cioè è presente un livello di tensione alto ed uno basso) baud rate e bps coincidono numericamente, da cui la parziale equivalenza dei due termini. Nel caso di trasmissioni a più livelli, invece, è possibile trasmettere con una sola transizione più bit, ottenendo un baud rate minore a parità di informazioni trasmesse, guadagnando in termini di minore occupazione di banda a spese di una maggiore complicazione circuitale e peggioramento del rapporto segnale/rumore.

Per esempio la codifica multilivello PAM5 (dove il bit rate per ciascun segnale è doppio del baud rate) permette alle reti gigabit ethernet di raddoppiare la velocità di trasmissione rispetto alla fast ethernet a parità di banda occupata e quindi usando gli stessi cavi.

Lo standard RS232 utilizza due livelli quindi il baud rate coincide numericamente con il bps.

Half-duplex e full-duplex

I due termini fanno riferimento alla situazione in cui due dispositivi si scambiano informazioni tra di loro, comportandosi entrambi sia da sorgente di informazioni (cioè da talkner o, in sigla, Tx) sia da ricevitore (listener o Rx).

Lo standard RS232 permette tutte e tre queste modalità di funzionamento in quanto è utilizzato un conduttore separato per ciascun verso di trasmissione. In genere nel caso di trasmissione duplex è necessario che i dati in trasmissione e ricezione abbiano lo stesso formato e la stessa velocità. Inoltre ciascuno dei due nodi deve avere sufficiente potenza di calcolo per la gestione del duplice flusso di informazioni, condizione non sempre possibile quando la codifica del segnale è fatta solo utilizzando il software e senza assistenza di hardware dedicato.

Come è fatto un segnale RS-232

La cosa più semplice per descrivere un segnale RS232 è partire con un esempio.

Nell’immagine che segue è visualizzato, in modo idealizzato, cosa appare collegando un oscilloscopio ad un filo su cui transita un segnale RS-232 a 9600 bps del tipo 8n2 (più avanti verrà spiegata questa sigla) rappresentante il valore binario 00110000.

rs232 - Trasmissione di un byte seriale

L’ampiezza del segnale è caratterizzata da un valore "alto" pari a circa +12V ed un valore "basso" pari a circa –12V. Da notare che, nello standard RS-232 un segnale alto rappresenta lo zero logico ed uno basso un uno, come indicato nel disegno e rovesciato rispetto al "comune pensare". Occorre prestare attenzione che in genere i microcontrollori gestiscono segnali seriali dove H ed L corrispondono rispettivamente a 5 V (o 3.3 V) e 0 V, cioè il segnale appare capovolto.

A volte un segnale alto (+12V, cioè uno zero logico) è indicato come space ed uno basso (-12V, uno logico) come mark.

Tutte le transizioni appaiono in corrispondenza di multipli di 104 µs), pari ad 1/9600 cioè ciascun bit dura esattamente l'inverso del baud rate.

La linea si trova inizialmente nello stato di riposo, bassa (nessun dato in transito); la prima transizione da basso in alto indica l’inizio della trasmissione (inizia il "bit di start", lungo esattamente 104us). Segue il bit meno significativo (LSB), dopo altri 104 us il secondo bit, e così via, per otto volte, fino al bit più significativo (MSB). Da notare che il byte è trasmesso "al contrario", cioè va letto da destra verso sinistra. Segue infine un periodo di riposo della linea di almeno 208 us, cioè due bit di stop e quindi (eventualmente) inizia un nuovo pacchetto di bit con un nuovo bit di start (in grigio nel disegno).

Le varianti possibili sono le seguenti:

In genere il formato del pacchetto trasmesso è indicato da una sigla composta da numeri e cifre, per esempio 8n1 e 7e2:

Tenendo conto che esiste sempre un solo bit di start, un singolo blocco di bit è quindi, per i due esempi riportati, costituito rispettivamente da 10 (1+8+0+1) e 11 (1+7+1+2) bit. Da notare che di questi bit solo 8 e, rispettivamente, 7 sono effettivamente utili.

Lo standard originale prevede una velocità fino a 20 kbps. Uno standard successivo (RS-562) ha portato il limite a 64 kbps lasciando gli altri parametri elettrici praticamente invariati e rendendo quindi i due standard compatibili a bassa velocità. Nei normali PC le cosiddette interfacce seriali RS-232 arrivano in genere almeno a 115 kbps, 230 kbps o anche più: pur essendo tali valori formalmente al di fuori di ogni standard ufficiale non si hanno particolari problemi di interconnessione.

Una precisazione: trasmettitore e ricevitore devono accordarsi sul modo di trasmettere prima di iniziare la trasmissione stessa, pena l'impossibilità di instaurare la trasmissione o ricevere bit che appaiono casuali. Questa operazione va fatta configurando opportunamente il software e/o modificando manualmente alcuni dip-switch o altri dispositivi hardware.

E' importante garantire il rigoroso rispetto della durata dei singoli bit: infatti non è presente alcun segnale di clock comune a trasmettitore e ricevitore e l'unico elemento di sincronizzazione è dato dal fronte si salita del bit di start. Come linea guida occorre considerare che il campionamento in ricezione è effettuato di norma al centro di ciascun bit: l'errore massimo ammesso è quindi, teoricamente, pari alla durata di mezzo bit (circa il 5% della frequenza di clock, considerando che anche il decimo bit deve essere correttamente sincronizzato). Naturalmente questo limite non tiene conto della difficoltà di riconoscere con precisione il fronte del bit di start (soprattutto su grandi distanze ed in ambiente rumoroso) e della presenza di interferenze intersimboliche tra bit adiacenti: per questo spesso si consiglia caldamente di usare un clock con una precisione migliore dell'1% imponendo, di fatto, l'uso di oscillatori a quarzo.

Si potrebbe anche ipotizzare un meccanismo che tenta di estrarre il clock dai fronti intermedi ma si tratta nel caso specifico di un lavoro poco utile, visto che la lunghezza del pacchetto è piuttosto breve.

Il bit di parità

Oltre ai bit dei dati (in numero variabile tra 5 ed 9) viene inserito un bit di parità (opzionale) per verificare la correttezza del dato ricevuto. Esistono diversi tipi di parità:

L'idea è quella di predeterminare la quantità di 1 (e di conseguenza di 0) da trasmettere, facendo in modo che il loro numero sia sempre pari (o dispari, a secondo della scelta che si vuole fare): così facendo, se durante la trasmissione dovesse accadere un errore su un singolo bit, il ricevitore sarebbe in grado di rilevare l'errore, ma non di correggerlo. Si tratta ovviamente di un protocollo di controllo degli errori elementare e di conseguenza in disuso a favore di altri sistemi basati su codici a ridondanza ciclica (CRC) o altri algoritmi più complessi.

Il bit di parità a volte viene mantenuto sempre ad un livello prestabilito, per esempio in alcuni protocolli usati da macchine industriali. Ciò dà origine ad ulteriori due tipologie di parità, peraltro non molto comuni:

Tali configurazioni sono a volte usate per identificare la tipologia del byte trasmesso, per esempio potrebbe indicare se si tratta di un dato piuttosto che di un indirizzo.

L'interfaccia seriale RS-232: indice

  1. Le caratteristiche generali delle interfacce seriali
  2. I parametri elettrici della RS-232
  3. La piedinatura del connettore RS-232 del PC

Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima