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
-
DTR (Data Terminal Ready)
-
il DTE comunica al DCE che è pronto a iniziare una sessione di
comunicazione.
-
DSR (Data Set Ready)
-
il DCE segnala al DTE che è pronto a iniziare la sessione di comunicazione
-
RTS (Request To Send)
-
il DTE comunica al DCE che è pronto a scambiare dati
-
CTS (Clear To Send)
-
il DCE segnala al DTE che è pronto a scambiare dati.
-
DCD (Data Carrier Detect)
-
Usato quando il DCE è un modem
-
in questo caso il modem comunica al DTE che ha rivelato la portante del modem remoto
-
RI (Ring Indicator)
-
usato quando il DCE è un modem
-
il modem segnala che c'è una chiamata.
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
- DR (Data Received)
- OE (Overrun Error)
- il dato precedentemente ricevuto non è stato letto
- PE (Parity Error)
- errore di parità sul dato ricevuto
- FE (Framing Error)
- non è stato ricevuto un bit di Stop valido
- THRE (Transmit Hold Register Empty)
- flag di registro di trasmissione vuoto
MSR
MSR riporta i valori dei corrispondenti segnali d'ingresso
LCR
- NBIT1, NBIT0
- numero di bits per carattere
- 11: 8 bit
- 10 : 7 bit
- STOP
- Numero di bit di STOP
- 0 : 1 bit di STOP
- 1 : 2 bit di STOP
- PE (Parity Enable)
- 1 abilita la parità
- 0 disabilita la parità
- EP
- 1 : parità pari
- 0 : parità dispari
MCR
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
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à):
- Errore di parità, overrun o framing
- Dato ricevuto (RBR pieno)
- Dato trasmesso (THRE vuoto)
- 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
- IP (Interrupt Pending)
- quando è 0 segnala un interrupt pendig
- IR2,IR1:
- 11: interrupt 1
- 10: interrupt 2
- 01 : interrupt 3
- 00 : interrupt 4
IER
Impostando il bit a 1 viene abilitato l'interrupt corrispondente. Es mettendo
IE2=1, si abilita l'interruzione 2 cioè quella su RBR pieno.