Caricare documenti e articoli online 
INFtub.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.


 
Non ricordi la password?  ››  Iscriviti gratis
 

L'UART (Universal Asynchronous Receiver Trasmitter)

informatica




L'UART (Universal Asynchronous Receiver Trasmitter) è un mP usato nel PC per la gestione nell'ambito delle comunicazioni seriali asincrone:


Per svolgere i suoi compiti si avvale di 10 registri interni. Comunica con l'esterno mediante 40 piedini di comunicazione di cui:

25   &n 959g61j bsp; sono l'interfaccia con il mP



13   &n 959g61j bsp; collegano l'UART con il mondo esterno

2 servono per l'alimentazione

Per svolgere i suoi compiti si avvale di 10 registri interni.


Struttura interna

Contiene quattro componenti funzionali principali

·   &n 959g61j bsp;    Il ricevitore

·   &n 959g61j bsp;    Il trasmettitore

·   &n 959g61j bsp;   &n 959g61j bsp; I circuiti di controllo

·   &n 959g61j bsp;   I circuiti di stato





















































Il ricevitore

Le parti principali di un ricevitore sono :

·   &n 959g61j bsp;    il registro di shift [Serial-In / Parall-Out]

  • il registro dati chiamato RBR (Receiver Buffer Register)



Quando il registro di shift è pieno i suoi bit vengono trasferiti al RBR e il registro di shift viene azzerato.

Viene impostato un bit , nel circuito di stato, per segnalare la disponibilità dei dati (data ready). Se viene rilevato, durante la ricezione del dato, un errore saranno impostati altri bit nei circuiti di stato.

Il registro RDR è di sola lettura ed in generale viene letto dalla CPU in presenza di un segnale di interruzione per ricezione Il registro di shift è letto e scritto solo dai circuiti interni del 8250.








Il trasmettitore

E' costituito dal

·   &n 959g61j bsp;   &n 959g61j bsp;   &n 959g61j bsp;   registro THR - registro di attesa- (Trasmitter Holding Register)

·   &n 959g61j bsp;   &n 959g61j bsp;   &n 959g61j bsp;   registro di shift [Parall-Out /Serial-In]



Ogni dato da trasmettere viene trasferito dal bus dei dati al registro holding (registro di attesa). Se il registro holding non è vuoto il precedente contenuto si perde. Il THR è un registro a sola scrittura utilizzato dalla CPU per depositare un dato in risposta ad un segnale di interruzione di trasmissione. Anche il registro di shift del trasmettitore è utilizzato in scrittura e lettura solo dai circuiti interni dall'8250 e converte il dato parallelo in bit seriali. Dopo che il dato dal THR è trasferito allo shift register, se non vi sono altri dati in arrivo, il THR viene riempito con tutti bit di attesa (idling bit) e nei circuiti di stato viene impostato il bit indicante che il THR è vuoto e perciò disponibile per altri dati. Il bit di parità , se previsto, e i bit-stop vengono aggiunti al flusso dei dati serializzati da trasmettere




Circuiti di controllo


Governano tre caratteristiche delle comunicazione:

1   &n 959g61j bsp;    Controllo delle linee:

-   &n 959g61j bsp;   &n 959g61j bsp; lunghezza del dato

-   &n 959g61j bsp;   &n 959g61j bsp; parità da controllare oppure no

-   &n 959g61j bsp;   &n 959g61j bsp; numero di bit-stop

detto controllo viene effettuato tramite il registro LCR (Line Control Register)




LCR - Line Control Register   di lettura e scrittura

-   &n 959g61j bsp;   &n 959g61j bsp; Definisce i parametri di funzionamento.

-   &n 959g61j bsp;   &n 959g61j bsp; Abilita l'invio in linea della sequenza di break.

-   &n 959g61j bsp;   &n 959g61j bsp; Contribuisce alla selezione degli altri registri










0 0 5 bit di dato

0 1 6 bit di dato

1 0 7 bit di dato

1 1 8 bit di dato


0 un solo bit di stop

1 bit di stop (1,5 per 5 bit di dato)


0 0 0 Nessuna parità

0 0 1 Parità ODD (dispari)

0 1 1 Parità EVEN (pari)

1 0 1 Parità 1

1 1 1 Parità 0


1 Invia segnale di BREAK

0 Operazione normale


0 Si riferisce ai dati

1 Si riferisce al BAUD-RATE



2   &n 959g61j bsp;   &n 959g61j bsp;   &n 959g61j bsp;   Controllo del modem :

Mediante il registro MCR

-Controlla le due linee di uscita DTR, RTS.

-Controlla le uscite ausiliarie OUT1 e OUT2.

-Abilita il collegamento in loopback con il quale si può leggere, come dati ricevuti, l'ultimo trasmesso.

MCR - Modem Control Register di lettura e scrittura










Il suo valore negato viene copiato sulla linea DTR (Data Terminal Ready

del connettore RS232C


Il suo valore negato viene copiato sulla linea RTS (Request to Send

del connettore RS232C


1 reset del modem interno OUT1


1 Controlla i segnali d'interrupt OUT2


1 attiva il sel-test dell'UART TEST


X X X non usati



NB OUT2 ad 1 permette all'UART di inoltrare le richieste di interruzione. OUT2 non abilita/disabilita le interruzioni ma permette l'invio dell'interruzione

















3   &n 959g61j bsp;   &n 959g61j bsp;   &n 959g61j bsp;   Controllo velocità di trasmissione e di ricezione dati

Nella fase di inizializzazione viene impostata la velocità di comunicazione mediante i registri

DLL (Division Latch Low) e DHL (Division Latch Hight) entrambi di lettura e scrittura. Sono due registri a 8 bit che insieme formano il PBRG (Programmable Baud Rate Generator).

In valore da inserire nel registro per una particolare velocità e dato dalla formula

Valore registro = clock/(baud rate voluto)*16


Dove i clock piu' usati sono 1.8432 Mhz e 3.0720 Mhz


Comunque, la velocità di trasmissione, BAUD-RATE, può essere selezionata secondo la tabella:


BAUD RATE
















MSB

09H

06H

04H

03H

03H

01H

00H

00H

00H

00H

00H

00H

00H

00H

00H

LSB

00H

00H

17H

59H

00H

80H

C0H

60H

40H

3AH

30H

20H

18H

10H

0CH






IER - Interrupt Enable Register di lettura e scrittura










1 abilita interrupt RDR, ricezione


1 abilita interrupt THR, trasmissione


1 abilita interrupt in caso di errore o di sequenza di break


1 abilita interrupt di stato del modem


X  X X X non usati




Circuiti di stato


Fornisce le informazioni sullo stato al processore. Le informazioni provengono dal:

-modem ( attraverso le linee di input DSR, DCD, CTS, RI)

-UART che segnala disponibilità di dati, richiesta di dati o il rilevamento di errori.


Vengono segnalate con una richiesta di interruzione, se è abilitata.



I circuiti di stato includono:



LSR - Line Status Register di sola lettura


- Segnala la presenza di un dato nel registro di ricezione.

- Gli eventuali errori riscontrati :

·   &n 959g61j bsp;    overrun error (il dato non è stato ancora letto dal buffer di ricezione, quando un nuovo dato deve essere spostato nel buffer)

·   &n 959g61j bsp;    framing error (non si è riconosciuto il bit di stop)

·   &n 959g61j bsp;    errore di parità


- La disponibilità a trasmettere.













1 è stato ricevuto un dato


1 errore di overrun


1 errore di parità


1 errore di framing


1 BREAK ricevuto


1 THR vuoto


1 registro scorrimento vuoto


0 sempre a 0






MSR - Modem Status Register e di sola lettura (si può scrivere ma non ha senso)


Riporta lo stato delle linee provenienti dal modem.

I quattro bit superiori indicano il livello di tensione.



I quattro bit inferiori indicano che il livello di tensione è variato rispetto all'ultima lettura del registro








0 CTS (Clear To Send) è cambiato dopo l'ultima lettura


0 DSR (Data Set Ready) è cambiato dopo l'ultima lettura


0 RI (Ring Indicator) è cambiato dopo l'ultima lettura


0 variazione di DCD (Data Carrier Detect)


riporta lo stato di CTS negato


riporta lo stato di DSR negato


riporta lo stato di RI negato


riporta lo stato di DCD negato








Il registro IID (Interrupt Identifier Register)   di sola lettura


Permette di sapere la causa dell'interruzione

Infatti UART 8250 può individuare quattro tipi di interrupt. Essi sono , secondo i quattro livelli di priorità:


-   &n 959g61j bsp;   &n 959g61j bsp; registro stato di linea

-   &n 959g61j bsp;   &n 959g61j bsp; dato ricevuto disponibile

-   &n 959g61j bsp;   &n 959g61j bsp; registro di memorizzazione del dato di trasmissione vuoto

-   &n 959g61j bsp;   &n 959g61j bsp; stato del modem



IID - Interrupt Identification Register










0 0 1 nessun interrupt attivo

0 0 0 interrupt stato del modem, bit modificato in MSR

0 1 0 interrupt THR, registro trasmissione vuoto, bit impostato in LSR

1 0 0 interrupt RDR, registro ricezione pieno, bit impostato il LCR

1 1 0 interrupt stato della linea, bit d'errore o di BREAK impostato in LSR


X X X X X non usati



I flag di IID per ciascun tipo di interrupt viene disattivato quando il corrispondente registro viene letto(o, in un caso, scritto).




Non tutti i registri citati sono accessibili al programmatore. I registri di shift, per esempio, possono essere letti soltanto dai circuiti interni dell'8250. Comunque i 10 registri a disposizione del programmatore possono essere programmati e testati attraverso sette indirizzi .


Gli indirizzi partono da un indirizzo di base che dipende dalla porta seriale selezionata in un PC (3F8H per la COM1 e 2F8H per la COM2). A tale indirizzo si aggiunge un offset per indirizzare il registro voluto.


OFFSET

REGISTRO

Descrizione

00H

DATA

RDR Receive Data Register, operazione di lettura

THR Trasmit Holding Register, operazione di scrittura

01H

IER

Interrupt Enable Register, per abilitare le interuzioni.

00H

BAUD RATE  0

BRG Division Latch, byte basso  (quando il MSB di LCR=1)

01H

BAUD RATE 1

BRG Division Latch, byte alto (quando il MSB di LCR=1)

02H

IID

Interrupt Identification Register, per identificare gli interrupt

03H

LCR

Line Control Register, per il controllo delle linee

04h

MCR

Modem Control Register, per il controllo del modem

05H

LSR

Line Status Register, per lo stato delle linee

06H

MSR

Modem Status Register, stato del modem





Privacy




Articolo informazione


Hits: 2528
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2024