COMUNICAZIONE SERIALE a cura dell' Ing. Buttolo Marco Un PC può comunicare in vari modi con le periferiche. Fondamentalmente esistono due tipi di comunicazione molto comuni: 1. La comunicazione seriale 2. La comunicazione parallela In realtà negli ultimi anni è uscita la comunicazione tramite porte USB (Universal Serial Bus), ma in questo articolo prenderemo in esame soltanto la comunicazione di tipo seriale. La comunicazione seriale avviene tramite cavo seriale e i dati vengono trasmessi e ricevuti serialmente, ossia un bit alla volta. Consideriamo a titolo di esempio la comunicazione seriale del carattere esadecimale 26h. In binario questo carattere assume la seguente forma: 00100110 Questa sequenza di bit verrà trasmessa su cavo seriale uno alla volta. Indichiamo con il termine baud rate la velocità di trasmissione sulla seriale e viene espresso come numero di bit trasmessi in un secondo (bit/s). Il cavo seriale viene collegato al PC attraverso la così detta porta seriale. La comunicazione seriale su PC è di tipo asincrono ossia è una comunicazione che permette contemporaneamente sia la trasmissione che la ricezione. Lo standard utilizzato nella comunicazione seriale prende il nome di RS-232, ed è tutt'altro che uno standard in quanto purtroppo lascia troppa libertà sulle modalità di trasmissione dei caratteri. Vediamo le caratteristiche di questo standard: 1. Il baud rate può andare dai 300 bit/s fino a 115200 bit/s; 2. E' possibile specificare se inviare 8 bit per carattere oppure inviarne soltanto 7 tralasciando di conseguenza l'ultimo bit. 3. E' possibile utilizzare un particolare bit denominato bit di parità e che viene utilizzato per verificare la correttezza dei dati ricevuti. Il bit di parità può essere pari se il numero di bit pari a 1 trasmessi è pari, altrimenti è dispari. Se in fase di ricezione vengono contati un numero dispari di bit a 1 mentre il bit di parità è settato come numero pari, allora viene generato un errore di parità. 4. E' possibile utilizzare anche un bit di stop. Questo bit serve per evidenziare quando finisce il treno di bit del carattere trasmesso. Non a caso esso viene aggiunto in coda al treno di bit appena citato durante la fase di trasmissione.
Cerchiamo di capire il funzionamento della comunicazione seriale secondo lo standard appena menzionato. Innanzitutto prima di inviare la serie di bit che rappresenta il carattere da trasmettere viene inviato un bit di start (di solito impostato a 0). Successivamente vengono inviati gli 8 bit del carattere e di seguito il bit di stop. In tutto vengono inviati 10 bit per ogni singolo carattere trasmesso. Attenzione che abbiamo ipotizzato che i bit scelti per carattere sono 8, e che il bit di stop è 1 (i bit di stop possono anche essere 2). Supponendo che il baud rate sia 9600 bit/s, se vogliamo inviare 3000 bytes abbiamo bisogno dei seguenti secondi per la trasmissione: 3000/9600 =0,3125 secondi Nella comunicazione seriale è indispensabile una corretta sincronizzazione tra chi trasmette e chi riceve per evitare qualsiasi perdita di informazione. Graficamente si ha una cosa del seguente tipo: TRASMETTITORE BUFFER RICEVITORE Se il ricevitore è più lento del trasmettitore, può facilmente accadere che il buffer si riempia, e di conseguenza si generi il così detto errore di overflow. Questo accade perchè il trasmettitore invia rapidamente i dati nel buffer ed il ricevitore che li estrae per leggerli, effettua l'estrazione meno rapidamente rispetto alla velocità di inserimento. Lo standard RS-232 utilizza due metodi per effettuare la sincronizzazione e sono: 1. DTR-DSR 2. XON/XOFF Vediamo rapidamente queste due tecniche. La prima tecnica si basa su segnali di tipo hardware. In particolare il DTR è un'uscita, mentre il DSR è un ingresso. Il DTR del trasmettitore è collegato direttamente al DSR del ricevitore. Il ricevitore, quando riceve tutti i dati alza(pone a 1) il DTR del trasmettitore (per essere più esatti da il consenso per questa operazione). Il trasmettitore consultando il proprio DSR sa che
può effettuare questa azione e di conseguenza sa che la trasmissione è stata completata. La seconda tecnica si basa su un protocollo software. In questo caso il consenso viene dato da parte del ricevitore inviando un carattere speciale denominato XON(in esadecimale 11h) e quest'ultimo risponderà inviando il carattere XOFF (13h in esadecimale). Analizziamo ora brevemente i due tipi fondamentali di cablaggi fisici di una seriale: 1. DTE 2. DCE Il DTE (Data Terminal Equipment) è sostanzialmente il PC, mentre il DCE (Data Communication Equipment) è sostanzialmente il MODEM. Questi due connettori sono differenti. Tale differenza è stata fatta per poter utilizzare cavi seriali di tipo PIN-TO-PIN. In sostanza il segnale di trasmissione è sullo stesso pin del segnale di ricezione. Questo tipo di comunicazione va bene tra un PC ed un MODEM. Viceversa se si utilizzano due PC, non è possibile utilizzare un collegamento di questo tipo, ma è necessario utilizzare un cavo incrociato. Qui di seguito viene mostrato un breve elenco dei tipi di connettori disponibili per la comunicazione seriale: Connettore DTE da 25 poli di tipo MASCHIO 2 TXD Trasmissione Dati OUT 3 RXD Ricezione Dati IN 4 RTS Request To Send OUT 5 CTS Clear To Send IN 6 DSR Data Set Ready IN 7 GND Ground (Massa segnali) - 20 DTR Data Terminal Ready OUT
Connettore DTE da 25 poli di tipo FEMMINA 2 RXD Ricezione Dati IN 3 TXD Trasmissione Dati OUT 4 CTS Clear To Send IN 5 RTS Request To Send OUT 6 DTR Data Terminal Ready OUT 7 GND Ground (Massa segnali) - 20 DSR Data Set Ready IN Connettore DTE 9 poli maschio (PC) 2 RXD Ricezione Dati IN 3 TXD Trasmissione Dati OUT 4 DTR Data Terminal Ready OUT 5 GND Ground (Massa segnali) - 6 DSR Data Set Ready IN 7 RTS Request To Send OUT 8 CTS Clear To Send IN
Connettore DCE 9 poli femmina (modem) 2 TXD Trasmissione Dati OUT 3 RXD Ricezione Dati IN 4 DSR Data Set Ready IN 5 GND Ground (Massa segnali) - 6 DTR Data Terminal Ready OUT 7 CTS Clear To Send IN 8 RTS Request To Send OUT