






Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Documento donde se muestra el empleo y uso del USART
Tipo: Resúmenes
1 / 10
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!







La comunicación serial permite conectar, inicialmente, dos computadoras utilizando solamente dos lineas. Una dedicada a la transmisión de datos en forma serial y la otra a la recepción de datos en forma serial. Intel dispone del USART-8251 ( Universal Serial Asynchronous Receiver/Transmitter ).
Como se ve en la figura 3.1, el USART permitirá conectar una computadora con un periférico. Vea que la conexión de la computadora con el USART es a través del bus de datos y del bus de control del μ Procesador. Del otro lado, el periférico se conecta al USART a través de dos líneas de comunicación serial.
DTE
μ Procesador (^) USART
D 7 − D 0
Control
DCE
Periférico
Tx serial
Rx serial
Figura 3.1: Conexión de un periférico a la computadora a través del USART
El equipamiento del lado de la computadora se denomina DTE ( Data Terminal Equipment ) y el equipamiento del lado del periférico se denomina DCE ( Data Communication Equipment ).
El USART , de manera simultánea, puede recibir datos seriales en la línea Rx-serial para conver- tirlos a datos en paralelo y entregarlos al μ Procesador y, recibir datos en paralelo del μ Procesador para convertirlos a datos en serie y entregarlos al periférico a través de la línea TX-Serial.
Además el USART puede realizar otras tareas que permitirán lograr la comunicación serial. El USART avisa al μ Procesador cuando puede aceptar un dato para transmitirlo, también detecta
1
si el periférico le ha enviado un dato y avisa al μ Procesador para que lo recoja. Aquí un dato no necesariamente es de 8 bits. Finalmente proporciona su estado interno, que consiste en poner en evi- dencia los posibles errores en la comunicación y algunas señales necesarias para control del USART.
μ Procesador
D 7 -D 0
A 19 -A 0 ALE
USART
RT S
CT S
DT R
DSR Control W R
RD
Reset
CLK
Syndet/BD RxC
RxD RxRDY Receptora
T xC
T xEmpty
T xD T xRDY Transmisora
Buffer de datos
C/D (^) CS
Decodificador
Figura 3.2: Las señales de USART
Si entramos un poco mas en el detalle, en la figura 3.2 se muestran las cuatro secciones que tiene el USART. Se estudiaran las señales de este integrado viéndolas desde el punto de vista de la DTE.
La sección transmisora se encarga de enviar datos, en forma serial, al periférico a través de la patita RxD. Si el USART no tiene datos para transmitir, comunica al periférico a través de la señal TxEmpty y con la señal TxRDY comunica al μ Procesador que no tiene datos para transmitir, por tanto el μ Procesador viendo que TxEmpty = 1 podrá enviar un dato al puerto de comunica- ciones ( out dx,al ). Finalmente a esta sección se puede conectar un reloj externo TxC que permite sincronizar la transmisión. La frecuencia del reloj del USART ( CLK ) debe ser por lo menos 16 veces mayor de la frecuencia de TxC.
La sección receptora recibe los datos seriales que envió el periférico a través de la patita RxD , esta sección los convierte a paralelo y los envía al μ Procesador por el bus da datos D 7 - D 0. Cuando se ha completado un dato el USART comunica al μ Procesador con RxRDY = 1 para que lo pueda leer del puerto de comunicaciones ( in al,dx ). Esta sección también permite conectar un reloj ex- terno RxC para sincronizar el receptor. La frecuencia del reloj del USART ( CLK ) debe ser por lo menos 16 veces mayor de la frecuencia de RxC. En esta sección también está señal Syndet/BD que permite realizar dos tareas. Cuando el USART funciona en modo síncrono, indica sincronismo mientras qué si trabaja en modo asíncrono indica la recepción de un carácter de ruptura. Un carác- ter de ruptura está formado por dos cuadros completos de pulsos de arranque y se utiliza a menudo para romper las comunicaciones.
El buffer de datos es bidireccional y es tri-estado, se utiliza para conectar el USART con el μ Procesador. Cuando se ejecuta, in al,dx , se introduce un dato en el μ Procesador, estos datos pasan por el buffer de datos y el bus de datos D 7 - D 0. De la misma manera, cuando se eje-
Instrucción de modo síncrono D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 SCS ESD EP PEN L 2 L 1 0 0
En el mismo registro, también se escribir la instrucción de comando , con esto se puede cambiar el funcionamiento del USART, otra vez la señal C/ D = 1
Instrucción de comando D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 EH IR RTS ER SBRK RxEN DTR TxEN
Finalmente si se lee este registro se muestra la palabra de estado del USART, otra vez la señal C/ D = 1.
Palabra de estado D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0 DSR Syndet FE OE PE TxEM RxRDY TxRDY
initUSART
dx ← 0301h
al ← 00h
dx ⇐= al dx ⇐= al dx ⇐= al
al ← 40h
dx ⇐= al
ret
mov dx ,0301 h ; C / D = 1 mov al ,0 ; -+ out dx , al ; | out dx , al ; | > Reset out dx , al ; | > interno mov al ,40 h ; | out dx , al ; -+
Figura 3.4: Inicialización de USART
Mas adelante veremos el detalle de la función que cumple cada bit de cada una de estas palabras. Por el momento se va ha mostrar el programa de inicialización del USART. Este tiene dos partes, como el Reset por hardware no funciona, se hace un Reset por software y luego se programa el modo; que puede ser síncrono o asíncrono.
En la figura 3.4 se ve que para inicializar el USART es necesario enviar tres veces el 00h y un 40h al puerto cuya dirección es C/D = 1. En esta figura hemos supuesto que el USART esta en las direcciones para prototipo 0300h y 0301h.
initUSART
dx ← 0301h
al ← 00h
dx ⇐= al dx ⇐= al dx ⇐= al
al ← 40h
dx ⇐= al
al ← 4Fh
dx ⇐= al
ret
mov dx ,0301 h ; C / D = 1 mov al ,0 ; -+ out dx , al ; | out dx , al ; | > Reset out dx , al ; | > interno mov al ,40 h ; | out dx , al ; -+ mov al ,4 Fh ; Asincrono 1200 baudios , 8 , N , out dx , al ; Dato de 8 bits ; sin paridad ; un bit de stop
Figura 3.5: USART configurado para trabajar en modo asíncrono
S 2 S 1 EP PEN L 2 L 1 B 2 B 1 0 1 X 0 1 1 1 1 = 4Fh
Bits de stop Tamaño de carácter velocidad de comunicación S 2 S 1 Comentario 0 0 No válido 0 1 1 bit 1 0 1 y 12 bits 1 1 2 bits
L 2 L 1 Comentario 0 0 5 bits 0 1 6 bits 1 0 7 bits 1 1 8 bits
B 2 B 1 Comentario 0 0 Modo SYNC 0 1 1x para TxC y RxC 1 0 16x para TxC y RxC 1 1 64x para TxC y RxC
Bandera de paridad Permiso de paridad EP Paridad 0 Impar 1 Par
PEN Permiso de paridad 0 No permitida 1 Permitida
En el modo asíncrono se transfiere un solo byte a la vez ( a single byte at a time ). Este método de comunicación presenta un problema que se denomina sobrecarga ( overhead ) que en ocasiones puede ser tan grande como el 50%. La sobrecarga puede ser todavía mayor, si el tamaño del carácter es de 5 o 6 bits.
En la figura 3.5 se ve que USART ha sido configurado para trabajar en modo asíncrono, fíjese que el modo de funcionamiento tendrá las características de dato de 8 bits, sin paridad y un bit de stop ;
El problema de overhead que hemos descrito en el modo asíncrono, se trata de resolver en el método síncrono. En el modo síncrono los bits de start y stop se reemplazan por bytes con códigos especiales, además en vez de transmitir un byte a la vez, cientos de bytes son transferidos. En este método un bloque de bytes es enmarcado entre códigos de control y luego transferidos. Los códigos de control son diferentes en función del tipo de protocolo. Los protocolos mas divulgados son: BISYNC y SDLC.
En el protocolo BISYNC , por cada bloque de datos existen uno o más bytes denominados car- acteres de sincronismo. Después de los caracteres de sincronismo está el byte denominado STX ( Start of text ), seguido por el bloque de datos que puede ser de 100 0 mas bytes de información. Al bloque de datos le sigue el byte ETX ( End of text ). El último byte del marco es el BBC ( Block check character ), que se utiliza para detección de errores.
one frame SYNC SYNC STX DATA FIELD ETX BBC PAD
Algunos métodos para detección de errores son el: checksum, CRCs y el código Hamming. Checksum y CRC solo detectan errores, pero Hamming detecta y corrige errores.
Carácter Significado ASCII Carácter Significado ASCII SOH Start of header 01h STX Start of text 02h DLE Data link escape 10h ETX End of text 03h SYN Sync 16h EOT End of transmission 04h ETB End of transmission block 17h ENQ Inquiry 05h PAD End of frame block FFh Figura 3.7: Algunos códigos utilizados en el protocolo BISYNC
El estándar SDLC es el estándar para comunicación serial síncrona que desarrollo IBM. En SDLC el byte SYN se reemplaza por el patrón 01111110. Este byte se conoce como byte flag. Después del flag viene el byte de dirección de una computadora a la que se tiene que enviar la información, se supone que la computadora esta conectada a una red. A continuación esta el byte de control , que contiene información acerca de la secuencia de datos, entre otras cosas. Luego vienen los datos. El dato en SDLC pueden ser miles de bits, en contraste a los datos en BISYNC , que pueden ser miles de bytes. El campo de datos puede estar incluso por encima de 200.000 bits por marco. Después del campo de datos viene un campo de 16 bits, denominado frame check , dedicado a la verificación de errores y, para terminar, viene el byte flag.
one frame begin flag address field Control field Information field frame check end flag 01111110 8 bits 8 bits DATA 16 bits 01111110
initUSART
dx ← 0301h
al ← 00h
dx ⇐= al dx ⇐= al dx ⇐= al
al ← 40h
dx ⇐= al
al ← 0BCh
dx ⇐= al
ret
mov dx ,0301 h ; C / D = 1 mov al ,0 ; -+ out dx , al ; | out dx , al ; | > Reset out dx , al ; | > interno mov al ,40 h ; | out dx , al ; -+ mov al ,0 BCh ; Sincrono 8 bits , paridad par out dx , al ; 1 caracter de sincronismo , Syndet salida
Figura 3.8: USART configurado para trabajar en modo síncrono
Instrucción de modo síncrono SCS ESD EP PEN L 2 L 1 0 0 1 0 1 1 1 1 0 0 = 0BCh
Sincronismo Detección de sincronismo Paridad Habilitar paridad SCS Caracteres 0 2 1 1
ESD Syndet 0 Salida 1 Entrada
EP Paridad 0 Impar 1 Par
PEN habilitar 0 0 No 1 1 Si
L 2 L 1 Longitud de caracter 0 0 5 bits 0 1 6 bits 1 0 7 bits 1 1 8 bits
Cuando ya ha sido configurado el USART en modo asíncrono o síncrono, se puede cambiar el funcionamiento del mismo a través de la instrucción de comando. Por ejemplo si el USART está funcionando en modo síncrono, si el bit EH = 1 pasa a buscar caracteres de sincronismo; es decir a través de la patita Syndet/BD. Otro ejemplo es el uso del bit IR = 1 , este es el bit que permite hacer reset interno, vea la figura 3.4, se envía al puerto de control tres veces 00h y un 40h. También se puede romper las comunicaciones poniendo TxE = 1.
S 2 S 1 EP PEN L 2 L 1 B 2 B 1 0 1 X 0 1 1 1 1 = 4Fh
TxAsinc
al ← 00h dx ← 0301h dx ⇐= al dx ⇐= al dx ⇐= al al ← 40h dx ⇐= al
al ← 4Fh dx ⇐= al
si = msg
al ⇐= dx
al ← al ∧ 00000001b
ZF = 0
al ← [si]
al = ‘$’
ret
TxD
no
yes
yes
no
Tx1:
msg db " La verdad os hara libres$ " ;
mov dx ,0301 h ; C / D = 1 Modo mov al ,0 ; Reset interno out dx , al ; out dx , al ; out dx , al ; mov al ,40 h ; out dx , al ; Asincrono 1200 baudios , 8 ,N , mov al ,4 Fh ; Dato de 8 bits , sin paridad out dx , al ; un bit de stop lea si , msg Tx1 : mov dx ,0301 h ; C / D = 1 Estado in al , dx and al ,00000001 b ; Si TxRDY = 1 jz Tx1 ; mov al ,[ si ] cmp al , '$ ' jne TxD ret TxD : mov dx ,0300 h ; C / D = 0 DATA out dx , al inc si jmp Tx
.
Figura 3.9: Protocolo para transmitir un mensaje utilizando el USART