Interfaccia seriale




L'interfaccia seriale, definita da uno standard noto come RS-232D, stabilisce le modalità di comunicazione seriale, al livello fisico, fra due dispositivi:  il DTE (Data Terminal Equipment) e il DCE (Data Circuit Equipment). Il DTE è generalmente un computer, il DCE può essere un modem, un computer o altro dispositivo compatibile con l'interfaccia.  RS-232D può essere vista come un insieme di segnali accessibili attraverso un connettore femmina a 9 pin, come raffigurato sotto. Nel computer ne sono montati due e costituiscono le note porte COM1 e COM2.  

Come si vede, dalla figura, sono presenti 2 linee dati una per la ricezione, Rx, e l'altra, Tx, per la trasmissione. Le rimanenti linee trasportano segnali di controllo

E' possibile mettere in comunicazione due PC collegando le due porte con un cavo ad hoc (reperibile in commercio) chiamato "null-modem".  Una delle modalità di collegamento dei pin  è riportato nella figura sopra.  
La ricezione/invio dei dati  viene effettuata secondo la modalità asincrona e segue un protocollo chiamato start-stop.  Esso prevede il seguente formato del pacchetto:

1 bit di start dato (7 o 8 bit) 1 bit di parità 1 o 2 bit di stop


Il controller

Il controller per la porta seriale è chiamato UART (Universal Asynchronous Receiver Transmitter). 

 

RBR: Registro dati input

THR: Registro dati output

 

                                                                                 LSR
0   THRE   FE PE OE DR
 

 

                                                                                  MSR
DCD RI DSR CTS        

MSR riporta i valori dei corrispondenti segnali d'ingresso

 

                                                                                   LCR
      EP PE STOP NBIT1 NBIT0

 

 

                                                                                   MCR
0 0 0       RTS DTR
 

Imposta a 1 o O i segnali d'uscita RTS e DTR. I bit sono complementati: se si vuole mettere a 1 si deve porre a 0 il bit corrispondente.

 

                                                                                   IIR
  0 0     IR2 IR1 IP

Permette di identificare la causa dell'interruzione. L'UART può effettuare una richiesta d'interruzione in seguito ad uno di questi quattro eventi (in ordine di priorità):

  1. Errore di parità, overrun o framing
  2. Dato ricevuto (RBR pieno)
  3. Dato trasmesso (THRE vuoto)
  4. Attivazione di una delle linee d'ingresso : DSR,CTS,RI,DCD

Se si verificano due eventi contemporaneamente un bit di IIR segnalerà la condizione di pending

 

                                                                                    IER

0 0 0   IE4 IE1 IE3 IE2
 

Impostando il bit a 1 viene abilitato l'interrupt corrispondente. Es mettendo IE2=1, si abilita l'interruzione 2 cioè quella  su RBR pieno.