I livelli elettrici di RS-232
Del tutto indifferenti per l' utilizzatore IT o di PC, diventa
indispensabile la loro conoscenza per chi realizza o lavora a stretto contatto
con le strutture hardware dello standard.
La linea RS-232 è, fisicamente, del tipo single ended, ovvero è
costituita da un cavo che porta il segnale e da uno di ritorno che è la massa
comune di tutti i segnali.
Questa soluzione è meno insensibile ai disturbi e alla struttura del cavo di
una differenziale (come ad esempio 422/485), che consente una maggiore
distanza di comunicazione, ma, per contro, è molto più semplice e più
economica.
Trattandosi di una linea di lunghezza sensibile, essa sarà
pilotata da un driver e terminata con un ricevitore.
L’impedenza di uscita del driver deve essere >300 ohm,
mentre quella di ingresso del ricevitore deve essere compresa tra i 3 ed i 7
kohm. La corrente in uscita, senza alterazione dei livelli di tensione, deve
essere di almeno di 1.6 mA, anche se molti driver possono erogare correnti molto
maggiori.
Per contro, la corrente erogata su un corto circuito a massa deve essere minore di 100mA.
Molto importante, la tensione sulla linea RS-232 varia tra una
tensione positiva e una negativa rispetto a massa (tensione duale).
Lo standard definisce definisce due livelli che il segnale può assumere:
Stato |
Livello
logico |
Tensione
sulla
linea RS-232 |
MARK |
1 |
-V |
tra -3V e -25V |
SPACE |
0 |
+V |
tra +3V e +25V |
Qualsiasi livello tra -3V e +3V non è valido (zona di incertezza) e deve
essere evitato.
Si tratta di una soluzione del genere NRZ (No Return
to Zero), dove un livello logico è rappresentato con un segnale a polarità
positiva e l' altro con un segnale a polarità negativa.
In effetti si tratta di una codifica di non ritorno a Zero con inversione, dove
l' '1' logico diventa il livello più negativo e lo '0' logico il livello più
positivo.
Non si tratta di una vera e propria codifica, dato che i dati non vengono
modificati se non nel livello di tensione. Questa situazione è stata scelta in
quanto all' epoca di creazione dello standard era uno dei sistemi più robusti,
ma nello stesso tempo più semplici.
Lo stato di riposo della linea (idle) corrisponde al valore
negativo della tensione, ovvero al logico '1' dal lato TTL.
La tensione in uscita sulla linea RS-232 normalmente nel PC è
+/-12V, in relazione
alle tensioni generate dall' alimentatore.
In altri casi dipende dalla
natura dell' apparecchio, se alimentato da rete o a batteria, potrà essere
maggiore (ad esempio +/-15V) o limitata a valori minori per ridurre le emissioni EMC e favorire maggiori velocità di trasmissione.
Un trasmettitore (driver) riceve il segnale logico dall' UART
e fornisce l' adeguata tensione/corrente alla linea, al termine della quale un
ricevitore converte questi impulsi a livello logico per i circuiti successivi.
|
Poichè i circuiti logici lavorano alimentati da una tensione singola,
tipicamente 5V, il driver di linea RS-232 è essenzialmente un traslatore di
livello che trasforma il segnale logico TTL in un segnale
bipolare.
Ad esempio, a lato uno dei quattro gate a doppio ingresso contenuti
nel driver RS-232 integrato MC1488. |
Osserviamo che l' integrato richiede due alimentazioni, la
positiva (Vcc) e la negativa (Vee), che devono essere fornite dall' alimentatore
del sistema.
L' ingresso, a livello TTL, viene convertito in una tensione bipolare NRZ tra
Vcc e Vee. Una resistenza in serie al pin di uscita limita la corrente in caso
di corto circuito, mentre alcuni diodi eliminano le tensioni inverse
eventualmente applicate.
E' da osservare che il driver è invertente, ovvero si
avrà::
Livello
logico |
Livello
sulla
linea RS-232 |
1 |
-V |
0 |
+V |
Quindi un livello logico '1' corrisponderà sulla linea RS-232
ad una tensione negativa.
Il ricevitore compie l' operazione opposta.
|
Ecco la struttura interna di uno dei quattro receiver contenuti nell'
integrato MC1489.
Si osserva che anche il receiver è invertente.
|
Una resistenza in ingresso limita la corrente, mentre un diodo elimina la
componente negativa del segnale. Un ingresso ausiliario (response control)
permette di aggiungere una capacità esterna per ridurre lo slew rate del
segnale, questo nella direzione di una limitazione delle emissioni elettromagnetiche;
lo standard impone allo lo slew-rate (variazione nel tempo del segnale nel passare da
un livello logico all' altro) un limite di 30V/us.
Il segnale viene reso a livello TTL all' uscita.
Dato che sia driver che receiver sono invertenti, il segnale logico in ingresso
nel driver sarà reso identico all' uscita del receiver.
Dunque, la trasmissione sulla linea avviene in questo modo:
ad esempio,
inviando il byte di dati 01001110 (4Ehex, carattere
ASCII 'N') si ha una sequenza di impulsi, di durata ben determinata dal clock, a
livello TTL, in ingresso nel driver.
Questo li trasforma in un segnale bipolare sulla linea.
Il byte viene emesso a partire dal bit meno significativo,
preceduto dal bit di Start e seguito da quello di Stop.
All' altro estremo della linea, il ricevitore ricostruirà il
segnale originale a livello logico unipolare, invertendo ed eliminando la
componente negativa.
La struttura interna della sezione RS-232 di un dispositivo
DTE tipicamente sarà questa: tra l' UART, o il microcontroller, che
lavorano a livelli logici (3.3-5V) sarà interposto un sistema di
driver/reciever con lo scopo di convertire questa tensione nei livelli
bipolari previsti da RS-232.
|
All' uscita del microcontroller o dell' UART il segnale è a
livello logico, ovvero varia tra 0V e 5V (o 3.3V).
Solitamente driver e receiver sono costituiti da circuiti integrati
appositi. Di questi ne esiste un gran numero, dato che molti costruttori
forniscono le più diverse soluzioni (vedi link a fondo tutorial). Peraltro si possono realizzare circuiti di interfaccia anche con
componenti discreti.
I dievres richiedono una alimentazione duale, +V e -V.
Nel caso di apparecchi alimentati a batteria, è convenienete
utilizzare interfacce dotate di pompa di carico che generano le due
tensioni di linea a partire da una singola tensione di alimentazione.
|
Per migliorare la qualità della ricezione, sovente i ricevitori
hanno funzione di Schmitt trigger.
Il numero dei ricevitori e dei trasmettitori necessari dipende
dal numero dei segnali usati nella connessione e va da un minimo di un
ricevitore ed un trasmettitore per una comunicazione full duplex senza handshake
hardware a 3 driver e 5 receiver per il set completo di segnali del connettore
a 9 poli.
Per il DCE si avrà la situazione opposta, ovvero quelli che sono
pin di ingresso per il DTE diventeranno uscite per il DCE e viceversa.
In queste condizioni, un cavo pin to pin, terminato con un connettore
maschio da una parte e femmina dall' altro collegherà con semplicità i
due apparecchi.
Anche qui, tra la linea RS-232 e la sezione logica occorre interporre
un sistema di driver/receiver che convertano i livelli di tensione. Si
avranno 3 receiver e 5 driver per il set completo di segnali del connettore
a 9 poli. |
|
Come accennato, RS-232 è un sistema point-to-point,
ovvero adatto a collegare due dispositivi posti alle estremità del cavo e non
che
prevede una struttura a bus (come invece è in 485), anche se è
possibile, entro certi limiti, realizzare sistemi multi drop del genere di
quelli possibili con RS-422, ovvero un trasmettitore a più ricevitori.
I circuiti di driver della linea RS-232 sono, di solito, molto
resistenti alle connessioni errate, per cui in genere sopravvivono quando
segnali attivi sono collegati a massa o tra di loro.
Per contro va ricordato che la connessione RS-232 non è isolata e mette in
contatto le masse dei due dispositivi collegati agli estremi del cavo.
- Va notato che il livello di tensione sulla linea NON va mai a 0V,
essendo questo valore nell' ambito di incertezza +/- 3V. Quindi la
tensione in linea viene commutata tra la massima negativa e la massima
positiva, senza incertezze.
Ne deriva che la linea RS-232 non può essere pilotata direttamente
e non può essere ricevuta direttamente da un gate TTL, ma richiede
opportuni driver/receiver, o, comunque, un sistema di adattamento
della tensione.
- Va notato anche che il range di tensione nei personal computer è limitato a
+/-12V, che sono le tensioni fornite dall' alimentatore, mentre
è comune che le tensioni nei portatili siano inferiori e, invece, superiori in apparecchiature
telefoniche o industriali, dove è comune un +/- 15V o 24V.
- ATTENZIONE: carichi induttivi o tensioni indotte derivanti dai cavi
non sufficientemente schermati o molto lunghi può provocare tensioni
sul ricevitore al di sopra del range di ± 25 V, con conseguenti danni.
Occorrere curare la schermatura del cavo ed evitare di farlo passare in prossimità
di carichi di commutazione ad alta corrente, come motori elettrici o relè.
|
|