Story Transcript
ELECTRÓNICA DIGITAL II
1
COMUNICACIÓN SERIE EN EL 8051 • En la comunicación serie los datos se transfieren bit por bit. • Una interfaz en el microcontrolador los transfiere el dato en paralelo del CPU a serie para trasmitirlo por un solo enlace a otro dispositivo. • En el dispositivo receptor (que puede ser otro microcontrolador) se tiene que reconstruir de serie a paralelo. • Existen dos tipos de comunicación serie: ASÍNCRONA y SÍNCRONA. • En la comunicación asíncrona, el trasmisor y receptor no comparten un reloj común. Cada uno de ellos tiene su propio reloj. El trasmisor también agrega los bits de START, STOP y PARIDAD (figura 1).
Figura 1. Formato de un dato serie asíncrono • • • • • •
El receptor extraerá el dato con su reloj propio y convertirá el dato a paralelo después de quitar los bits de inicio, alto y paridad. Transmisión asíncrona es más fácil de implementar pero con la desventaja de tener que agregar los 2 o 3 bits de control para cada 8 bits de dato. Por tanto se usa para trasmisión de bajo volumen de datos. En la comunicación síncrona, se envían bloques de datos sobre una línea en serie (figura 2). El trasmisor y el receptor comparten un reloj común. El trasmisor típicamente provee el reloj como una señal separada además de la señal de datos (figura 3).
Figura 2. Formato de un dato serie síncrono.
Figura 3. Trasmisión síncrona. • • •
El bloque de datos se complementa con uno o más bytes de sincronización de modo que el receptor pueda identificar cuál grupo de bits en el flujo de bits son datos. Se incluye también un ENCABEZADO (header) para informar al receptor acerca del número de bytes de dato en el bloque y otra información relevante. Después de los bytes de datos están los bytes de verificación de error (check byte).
DR. JAVIER VEGA PINEDA
INSTITUTO TECNOLÓGICO DE CHIHUAHUA
ELECTRÓNICA DIGITAL II
2
• Al final y al inicio del bloque están los bytes de de sincronización respectivamente (sync byte). • Los bytes de verificación permiten al receptor detectar errores de trasmisión. El 8051 incluye un dispositivo periférico llamado UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER (UART) para comunicación serie. La operación esencial del UART es la conversión paralelo a serie del dato de salida y serie a paralelo del datos de entrada y por tanto solo soporta comunicación serie asíncrona. El UART es programable y capaz de trabajar sin mucha asistencia por parte del CPU. El CPU inicializa al UART, le envía los datos y pasa a otras actividades. La salida del UART (en formato serie) pasa por un VOLTAGE LEVEL SHIFTER y convierte el nivel lógico TTL a nivel lógico RS‐232C de ±12V. Esta señal se trasmite al dispositivo externo receptor (figura 4).
Figura 4. Trasmisión serie asíncrona de datos de 7 bits. El UART en el 8051 puede trabajar en varios modos y en un rango amplio de frecuencias de trasmisión. Puede operar en FULL DUPLEX (trasmisión y recepción simultáneas) y con BUFFERING para recepción. Esto permite que un carácter al recibirse sea retenido en un BUFFER mientras un segundo carácter se está recibiendo. Un bit RECEIVE OVERRUN indica cuando un nuevo dato es capturado en el buffer del receptor antes que el byte previo recibido se lea. En trasmisión asíncrona se utiliza el BAUD RATE como medida de velocidad de trasmisión serie. El siguiente ejemplo explica su significado. THROUGHPUT (volumen de trabajo o de información que fluye a través de un sistema) — los datos reales trasmitidos por segundo (bits totales trasmitidos — OVERHEAD)
DR. JAVIER VEGA PINEDA
INSTITUTO TECNOLÓGICO DE CHIHUAHUA
ELECTRÓNICA DIGITAL II
3
Ejemplo: 115,200 baud = 115,200 bits/seg Si usamos datos de 8 bits, 1 start, 1 stop, y sin bits de paridad, el throughput efectivo es: 115,200 * 8 / 10 = 92,160 bits/sec. REGISTROS DE COMUNICACIÓN SERIE DEL 8051
MODOS DE TRASMISIÓN El 8051 cuenta con 4 modos de trasmisión, 3 modos asíncronos y un modo síncrono (el modo 0). MODO 0 El modo 0 se muestra funcionalmente en la figura 5 y el formato de trasmisión y recepción de los datos en la figura 6. La frecuencia de trasmisión es el clock/12. MODO 1. UART DE 8 BITS CON BAUD RATE VARIABLE Provee comunicación asíncrona serie full duplex. Se reciben 10 bits en RX o se trasmiten en TX. Los bits son, un bit de inicio (siempre 0), los 8 bits de dato (LSB primero) y un bit de alto (siempre 1).
DR. JAVIER VEGA PINEDA
INSTITUTO TECNOLÓGICO DE CHIHUAHUA
ELECTRÓNICA DIGITAL II
4
La frecuencia de trasmisión es variable. En recepción el bit de Alto (Stop), se almacena en RB8 de SCON, si SM2=0.
Figura 5. Modo 0 en la trasmisión serie y los pines en el 8051.
Figura 6. Formato de dato en la trasmisión serie modo 0.
Figura 7. Una aplicación directa del modo 0.
DR. JAVIER VEGA PINEDA
INSTITUTO TECNOLÓGICO DE CHIHUAHUA
ELECTRÓNICA DIGITAL II
5
MODO 2. UART DE 9 BITS CON BAUD RATE FIJO Se trasmiten (TX) o reciben (RX) 11 bits. Los bits son, un bit de inicio (siempre 0), 8 bits de dato, un noveno bit de dato programable, en recepción es RB8 y en trasmisión es TB8 (de SCON) y un bit de alto. El baud rate es clock/32 o clock/64. MODO 3. UART DE 9 BITS CON BAUD RATE VARIABLE
Se trasmiten o reciben 11 bits igual que en el modo dos. La diferencia es que el baud rate es variable. Se usa el Timer 1 para generar el baud rate. En los 4 modos, la transmisión se inicia cuando SBUF se usa como registro destino. La recepción se inicia en el modo 0 comienza cuando RI=0, en los otros modos, cuando se detecta el bit de inicio (START) si REN=1.
Baud rate en puerto serie del 8051 BAUD RATE
9600 2400 1200 19200 9600 2400 1200
FRECUENCIA DEL CRISTAL, MHz 12.000 12.000 12.000 11.059 11.059 11.059 11.059
SMOD
1 0 0 1 0 0 0
VALOR DE RECARGA EN TH1 ‐7 (F9H) ‐13 (F3H) ‐26 (E6H) ‐3 (FDH) ‐3 (FDH) ‐12 (F4H) ‐24 (E8H)
BAUD RATE REAL
ERROR
8923 2404 1202 19200 9600 2400 1200
7% 0.16 % 0.16 % 0 0 0 0
EJEMPLOS Inicializando el puerto serie Defina los registros que se deben inicializar para que el puerto serie opere como un UART de 8 bits a un baud rate de 2400 bauds, usando el timer 1 para dicho baud rate. Escriba un programa que realice la inicialización del puerto. REGISTRO SCON: SM0 SM1 SM2 REN TB8 RB8 TI RI 0 1 0 1 0 0 1 0 SM0/SM1 = 0/1, pone el puerto en modo UART 8 bits. REN = 1, habilita al puerto a recibir caracteres. TI = 1, permite la trasmisión del primer carácter indicando que el buffer de trasmisión está vacío.
DR. JAVIER VEGA PINEDA
INSTITUTO TECNOLÓGICO DE CHIHUAHUA
ELECTRÓNICA DIGITAL II
6
REGISTRO TMOD: GTE C/T M1 M0 GTE C/T M1 M0 0 0 1 0 0 0 0 0 M1/M0 = 1/0, pone al timer 1 en modo autoreload de 8 bits. REGISTRO TCON: TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 0 1 0 0 0 0 0 0 TR1 = 1, activa el timer 1. REGISTRO TH1: 1 1 1 1 0 0 1 1 El valor de recarga es 0F3H (‐13), ¿porqué? El programa ORG 8100H INICIO: MOV SCON,#52H ; puerto serie modo 1 MOV TMOD,#20H ;timer 1, modo 2 MOV TH1,#‐13 ; cuenta de recarga SETB TR1 ; arranca el timer END Subrutina para salida de caracteres (co, console output) Escribir una subrutina co para trasmitir por el puerto serie código ASCII de 7 bits disponible en el acumulador, con paridad impar agregada en el octavo bit. Regrese de la subrutina con el acumulador intacto, esto es, con el mismo valor antes de que la subrutina fuera llamada. ORG 8100H CO: MOV C,P ;poner el bit de paridad en carry CPL C ;cambiar a paridad impar MOV ACC.7,C ;insertar al byte REPETIR: JNB TI,REPETIR ;¿Está Tx vacío? No: checa de nuevo, CLR TI ;Sí, limipia bandera y MOV SBUF,A ;envia el caracter CLR ACC.7 ;elimina el bit de paridad RET ; regresa END Esta subrutina es llamada desde un nivel mayor para trasmitir un carácter o una cadena de caracteres. Por ejemplo el código siguiente llamará a la subrutina para trasmitir el código ASCII de la letra Z al dispositivo conectado al puerto serie.
DR. JAVIER VEGA PINEDA
INSTITUTO TECNOLÓGICO DE CHIHUAHUA
ELECTRÓNICA DIGITAL II
7
MOV A,#’Z’ CALL CO (continua) Subrutina para entrada de caracteres (ci, console input) Escribir una subrutina ci para leer un carácter del puerto serie y regresar con el código ASCII de 7 bits en el acumulador. Espere paridad impar en el octavo bit recibido y ponga la bandera del carry si hay un error de paridad. ORG 8100H CI: JNB RI,CI ;esperar por el caracter CLR RI ;limpia la bandera MOV A,SBUF ;lee char al acumulador MOV C,P ;pon paridad en carry CPL C ;paridad impar CLR ACC.7 ;elimina el bit de paridad RET END
DR. JAVIER VEGA PINEDA
INSTITUTO TECNOLÓGICO DE CHIHUAHUA
SISTEMAS DIGITALES II 1
RS‐232C (EIA‐232) INTERFAZ SERIE
Conector tipo D de 25 pines (hembra), DB25.
CARACTERÍSTICAS: • Longitud de cable máxima de 50 píes (15.24 m). • Niveles de voltaje típicos േ12 Volts • Baud rates comunes: 300, 600, 1200, 2400, 4800 y 9600.
DR. JAVIER VEGA PINEDA INSTITUTO TECNOLÓGICO DE CHIHUAHUA
PROCESAMIENTO DIGITAL DE SEÑALES 1
COMUNICACIÓN SERIE DEL 8051 CON LA PC UTILIZANDO EL MAX232
MAX232 El circuito integrado MAX232 cambia los niveles TTL (0 A 5V) a los del estándar RS‐232 (± 12v) cuando se hace una transmisión, y cambia los niveles RS‐232 a TTL cuando se tiene una recepción.
DR. JAVIER VEGA PINEDA INSTITUTO TECNOLÓGICO DE CHIHUAHUA
PROCESAMIENTO DIGITAL DE SEÑALES 2
DR. JAVIER VEGA PINEDA INSTITUTO TECNOLÓGICO DE CHIHUAHUA