1 Il protocollo RS232 1.1 Introduzione Come noto un dispositivo di interfaccia permette la comunicazione tra la struttura hardware di un calcolatore e uno o più dispositivi esterni. Uno degli obiettivi principali di un’interfaccia consiste nel fornire un mezzo per il trasferimento di dati, garantendo livelli accettabili di affidabilità, velocità, flessibilità e costo. Con il termine standard sono indicati un insieme di specifiche tecniche, fisiche, funzionali, e software che permettono di definire l’interfaccia e ne consentono un corretto utilizzo. La realizzazione delle interfacce di trasmissione si basa, principalmente, su due tecniche di trasferimento dati: • Trasferimento seriale: l’informazione è trasmessa sequenzialmente su di un solo filo. • Trasferimento in parallelo: indica una tipologia di trasmissione in cui i dati viaggiano contemporaneamente su più fili, per esempio 8,16 o 32. La scelta tra l’una e l’altra è legata a diversi fattori (tipo di dati trasmessi, dispositivi collegati, ecc) e viene effettuata tenendo in considerazione pregi e difetti delle due soluzioni: la maggior velocità del trasferimento in parallelo è accompagnata da una maggior complessità della struttura di controllo e, spesso, da problemi di affidabilità su collegamenti per distanze elevate, per esempio superiori a qualche metro. Per contro, la trasmissione seriale offre, in genere, maggiore semplicità nella realizzazione del canale trasmissivo, a parità di tecnologia impiegata (cavo elettrico, fibra ottica,…), superiore distanza tra trasmettitore e ricevitore, al prezzo di una minore efficienza di trasmissione. 1.2 Lo Standard RS-232 Si tratta di una modalità di trasmissione molto utilizzata nel collegamento fra unità centrali e periferiche di varia natura, ad esempio stampanti, modem, dispositivi di puntamento, strumentazione elettronica, ecc. Tale modalità di comunicazione richiede una struttura del trasmettitore e del ricevitore molto semplice, mentre il canale fisico di trasmissione può essere costituito nel caso più semplice da soli tre conduttori, due per la trasmissione bidirezionale dei segnali e il terzo per il riferimento dei potenziali elettrici (GND). Le caratteristiche elettriche dello standard RS232 definiscono il minimo e il massimo voltaggio per il livello logico 1 e 0. Il livello logico 1 o mark è definito nel range -3/-25V ma tipicamente viene usato -12V, mentre il livello logico 0 o space è definito nel range +3/+25V ma tipicamente viene usato +12V. Il segnale tra -3V e +3V è uno stato logico indefinito. 2 1.3 Tipi di connessione Il cavo di collegamento tra periferica e calcolatore è costituito da più conduttori: lo standard fissa il significato assunto da ciascuno di essi, ma non stabilisce il tipo di connettore da utilizzare. I due tipi di connettori più utilizzati sono DB25 a 25 pin e DB9 a 9 pin. 3 Vediamo ora a cosa servono le varie linee di trasmissione: • • • • • • • DCD è pensato per il modem è viene attivato quando e collegato al PC. RD linea di ricezione dati. TD linea di trasmissione dati. DTR è attivato quando il PC è pronto per il collegamento con una periferica esterna. DSR viene attivata dalla periferica quando e pronta. RTS viene posta alta dal PC quando è pronto per trasmettere dati alla periferica. RI viene attivato dal modem quando rileva il trillo di una chiamata telefonica. 1.4 Esempio trasmissione dati usando il protocollo RS232: Se vogliamo trasmettere il byte 00110001 secondo il protocollo RS232 la sequenza verrà trasmessa a partire dal bit meno significativo (bit a destra) fino al bit più significativo. Poiché il protocollo RS232 è di tipo asincrono (i dati sono trasmessi senza l’aggiunta di un segnale di clock, cioè senza alcun segnale comune tra trasmettitore e ricevitore destinato a sincronizzare il flusso di informazioni) è necessaria qualche strategia per sincronizzare la fase di trasmissione con quella di ricezione. La tecnica adottata è quella di rimanere a livello logico 1 per poi trasmettere il bit di start. E' possibile osservare che prima dell'inizio della trasmissione, la linea è posizionata a -12V. Quando la trasmissione inizia, il livello passa a +12V per la durata di un bit (lungo esattamente 104us). Al rilevamento del bit di start il ricevitore inizia a leggere il segnale. Dopo il bit di start si trasmettono gli 8 bit, mentre il passaggio finale a -12V viene chiamato bit di stop. In particolare è possibile impostare il numero di bit di stop a 1, 1.5 o 2. La lunghezza della parola che è possibile inviare può essere di 6,7,8,9 bit. Le velocità che possono essere impostate variano a seconda dell'UART, in particolare il protocollo RS232 prevede una frequenza massima fino a 20 Kb/s (20000 bit per secondo) mentre molti PC prevedono comunque frequenze fino a 115 Kb/s. 1.5 Interfaccia RS232: Per interfacciare la mia scheda di acquisizione dati ho utilizzato l'integrato MAX232 della Maxim, che rappresenta un traslatore di livello TTL/RS232 e viceversa, partendo solo da un'alimentazione a 5 V. Per ottenere le tensioni positive e negative necessarie per il funzionamento dell'integrato viene usata una configurazione a pompa di carica costituito da circuiti interni all'integrato e quattro condensatori esterni. La capacità effettiva dipende dal tipo di integrato e dalla relativa frequenza di commutazione; a volte i condensatori sono presenti all'interno dell'integrato stesso. Sono disponibili anche integrati che richiedono un'alimentazione di sole 3,3 V (MAX3232). L’ingresso ricevente del MAX232 è costituito da due porte invertenti che accettano in ingresso una tensione di +/- 12 V ed in uscita presentano un segnale TTL compatibile. 4 1.6 Esempio circuito a pompa di carica Per ricavare le tensioni positive e negative necessarie per garantire i livelli richiesti dalla RS232 è pratica comune utilizzare un duplicatore ed un invertitore di tensione a pompa di carica. Le figure A e B mostrano come viene ottenuto il raddoppio della tensione. Un’immagine che rende l'idea è quella di un contenitore C2 che preleva acqua da una fonte e la riversa in un secondo contenitore C1 posto a maggiore altezza. Più in dettaglio: • • • Inizialmente il condensatore C2 viene connesso tra massa e Vcc; quindi la corrente (in blu) carica C2 alla tensione di alimentazione (in giallo). Quindi Vc2 = Vcc C2 viene successivamente connesso tra Vcc ed un secondo condensatore C1; la tensione ai capi di C1 deve essere uguale alla somma di Vcc e Vc2 e quindi C2 si scarica verso C1, che aumenta la propria tensione rispetto a massa. Il processo è ripetuto fino a quando la tensione ai capi di C1 è uguale a 2Vcc: in questo caso, infatti, C2 non si può più scaricare. Analogamente le figure C e D mostra l'inversione di tensione: • • Inizialmente C2 è caricato alla tensione di alimentazione (magari, come nel disegno da 2Vcc, ricavata con il precedente circuito) Quindi C2 è connesso tra massa e C1 avendo cura di invertire le polarità. In questo modo C1 si carica a -2Vcc 5 1.7 Schema elettrico: