Sistemas Digitales IIClase 12: Comunicación Serial Asíncrona UART-RS232.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Antes de ComenzarAntes de Comenzar
Conociendo la CPU y sus Periféricos…
ADCADC
IRQIRQ
TIMERTIMER
SIMSIME/SE/S
11010110
01101
SCISCI
CPUCPU MEMORIAMEMORIA
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Agenda para la claseAgenda para la clase
11Protocolo UART y RS-232 generalidades de este protocolo de comunicación serial
22Módulo SCI Características de este módulo para comunicación serial en un PIC
33Manipulación del SCI Transmisión y recepción de caracteres mediante este módulo
44Ejemplo Comunicación PC – MCU empleando el protocolo serial UART y RS-232
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Ejemplo comunicación PC - MCU
Manipulación del SCI
Módulo SCI de los PIC
Protocolo UART y RS-232Protocolo UART y RS-232
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Comunicación SerialComunicación Serial
Un valor puede estar representado por n bits (con n > 1).
La CPU normalmente transfiere bits a la memoria de manera paralela.
De igual forma lo hace con los periféricos. Un periférico particular puede disponer de un
canal de comunicación con una sola línea. En el anterior esquema, solo un bit puede ser
transmitido al tiempo.
00111001
CPU
UART
Memoria
MUNDO EXTERIOR
10011100
10011100
8
8
La CPU lo toma de memoria
La CPU se lo pasa a la
UART
El dato se transmite
serialmente.
¿Cómo se transmite el dato 10011100 serialmente?
Esquemas de Comunicación o Especificación Eléctrica: UART. (Protocolo)
• RS-232. (Eléctrica)• RS-485. (Eléctrica)
Universal Serial Bus (USB). (Ambos) Serial ATA. (Ambos) PCI Express. (Ambos)
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Protocolo UARTProtocolo UART
Universal Asynchronous Receiver Transmitter Pieza de hardware que convierte datos paralelos en
una secuencia de bits y viceversa. Circuito integrado usado normalmente en los
computadores para transferir datos entre CPU y periféricos.
Ahora, las CPUs modernas incluyen una UART propia como periférico interno.
Los MCUs también incluyen esta unidad (o parte de ella).
Anteriormente
Ahora
CPUCPU
MPUMPU
UARTP1
P2
P3 P4
P5
UARTUART
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Protocolo UARTProtocolo UART
Trama o Frame en la transmisión: Línea en espera (Stand-By). Bit de Start. 5 a 8 Bits de datos. Paridad: Par, Impar, sin Paridad. Bit de Stop.
START
B0 B1 B2 B3 B4 B5 B6 B7
STOP
P
START
tBIT Velocidad = bps = 1/tbit
‘1’
‘0’
LSB MSB
Si no hay transmisión, la
línea permanece a ‘1’ lógico.
Si no hay transmisión, la
línea permanece a ‘1’ lógico.Para iniciar una
transmisión, la línea debe
cambiar de ‘1’ a ‘0’ lógico
Para iniciar una transmisión, la
línea debe cambiar de ‘1’ a
‘0’ lógico
Debe satisfacer que la trama de n bits junto con P
tenga un número par de ‘1’s.
Debe satisfacer que la trama de n bits junto con P
tenga un número par de ‘1’s.
Debe satisfacer que la trama de n bits junto con P
tenga un número impar de ‘1’s.
Debe satisfacer que la trama de n bits junto con P
tenga un número impar de ‘1’s.
Indica, finalización de la trama. Duración entre 1 y 2 bits.
Indica, finalización de la trama. Duración entre 1 y 2 bits.
La transmisión de otra trama puede comenzar justo
después del STOP.
La transmisión de otra trama puede comenzar justo
después del STOP.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Protocolo UARTProtocolo UART
Velocidad de transferencia de datos Bits por Segundo. Incorrectamente se usa el término de baudios. 9600bps, 19200bps, etc.
1 seg
1 seg
Baudios = 8
BPS = 8
Baudios = 8
BPS = 16
Un símbolo se puede representar
con un solo bit para este caso.
Un símbolo se puede representar
con un solo bit para este caso.
Un símbolo se puede representar con dos bits para
este caso.
Un símbolo se puede representar con dos bits para
este caso.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Protocolo UARTProtocolo UART
Funcionamiento UART
BUFFER TX
UARTBUFFER RX
Registro Desplazamiento TxRegistro Desplazamiento Rx
10011100
10011100
H P 1 0 0 1 1 1 0 0 LH P 1 0 0 1 1 1 0 0LH P 1 0 0 1 1 1 00H P 1 0 0 1 1 10H P 1 0 0 1 11H P 1 0 0 11H P 1 0 01H P 1 00H P 10H P1HPHL L0 0 L0 0 0 L1 1 0 0 L1 1 1 0 0 L1 1 1 1 0 0 L0 0 1 1 1 0 0 L0 0 0 1 1 1 0 0 L1 1 0 0 1 1 1 0 0 LP P 1 0 0 1 1 1 0 0 LH
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Norma RS-232Norma RS-232
Usado para conectar DTEs y DCEs Especificación Eléctrica. DTE: Equipo Terminal de Datos. DCE: Equipo de Comunicación de Datos. PC y Modem.
DTE DCE DCE DTE
MEDIOCOMUNICACIÓN
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Norma RS-232Norma RS-232
Trama basada en UART. Representación de ‘1’ y ‘0’
Un ‘1’ se denomina Marca (Mark)• Representado por un voltaje entre -15V y -3V.
Un ‘0’ se denomina Espacio (Space)• Representado por un voltaje entre 3V y 15V.
Si no se transmiten datos, la señal debe permanecer en Marca: RS-232 Idle State
Se utilizan los bits de Start y Stop como sincronización.
START
B0 B1 B2 B3 B4 B5 B6 B7
STOP
P
START‘0’ = 3V y 15V
‘1’ = -15V y -3V
La misma TRAMA de la UART, teniendo en
cuenta los niveles RS-232
La misma TRAMA de la UART, teniendo en
cuenta los niveles RS-232
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Norma RS-232Norma RS-232
Conexión DTE (PC) – DCE (MODEM): Ambos equipos se alistan para la comunicación. Establecimiento de Conexión. El otro equipo se apodera del canal.
TxRx
DTRDSR
RI
RTSCTS
CD
DTE
TxRx
DTRDSRRI
RTSCTSCD
DCEMEDIO
COMUNICACIÓN
DTR: Equipo Terminal Listo.
DSR: Equipo de Comunicación
Listo.
DTR: Equipo Terminal Listo.
DSR: Equipo de Comunicación
Listo.
El MODEM está recibiendo una
llamada…
El MODEM está recibiendo una
llamada…
Señal de RING…
Señal de RING…
DTE quiere Tx…
DTE quiere Tx…
MODEM comprueba que
el medio esté disponible
MODEM comprueba que
el medio esté disponible
MODEM informa a DTE que
puede Tx…
MODEM informa a DTE que
puede Tx…
DTE no va a Tx más…
DTE no va a Tx más…
Portadora detectada
Portadora detectada
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Norma RS-232Norma RS-232
Conexión DTE – DTE: Full Fuplex. Transmisión, Recepción. Establecimiento de Conexión. Control de Flujo.
TxRx
DTRDSR
RI
RTSCTSDCD
DTE
TxRx
DTRDSRRI
RTSCTSDCD
DTE
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Ejemplo comunicación PC - MCU
Manipulación del SCI
Módulo SCI de losPIC
Protocolo UART y RS-232
Módulo SCI de los PIC
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
SCI
RELOJPROG
Tx
RxTX/RX
Módulo SCI de un PICMódulo SCI de un PIC
Módulo SCI como UART dentro del MCU.
Tasas de Baudios Programable
MCUSCI DTE
Transmisión
Recepción
BUS
EXT
CONFIG Comunicación Full Dúplex, una línea para
Tx y otra para Rx
Comunicación Full Dúplex, una línea para
Tx y otra para Rx
Para algunos MCUs, se puede elegir como
fuente de reloj, el bus interno o la frecuencia
externa
Para algunos MCUs, se puede elegir como
fuente de reloj, el bus interno o la frecuencia
externaSe pueden escoger
las tasas de velocidad
Se pueden escoger las tasas de velocidad
Registro TXREG para Tx y RCREG
para Rx
Registro TXREG para Tx y RCREG
para Rx
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Módulo SCI de un PICMódulo SCI de un PIC
El nombre genérico de los pines de E/S es: Rx (Recepción de Datos). Tx (Transmisión de Datos).
Las líneas de E/S están compartidas con pines de los puertos: RC7/RxD (PIC16F887) RC6/TxD (PIC16F887)
Al habilitar la Tx/Rx, los pines TxD/RxD se convierten en pines del módulo SCI.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Módulo SCI de un PICMódulo SCI de un PIC
Los registros asociados al módulo SCI son: SPBRG: Generador del ratio de baudios. TXSTA: Estado de transmisión y control. RCSTA: Estado de recepción y control. TXREG: Registro de datos de transmisión. RCREG: Registro de datos de recepción. PIR1: Flag de interrupción. PIE1: Habilitación de la interrupción.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Módulo SCI de un PICMódulo SCI de un PIC
Formato de Transmisión: 8 Bit de Datos.
9 Bit de Datos.
START
B0 B1 B2 B3 B4 B5 B6 B7P
STOP
START
B0 B1 B2 B3 B4 B5 B6 B7
STOP
B8P
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Ejemplo comunicación PC - MCU
Manipulación del SCI
Módulo SCI de los PIC
Protocolo UART y RS-232
Manipulación del SCI
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Manipulación del SCIManipulación del SCI
Configuración genérica del UART:
#USE RS232 (opciones)
Esta directiva permite configurar varios parámetros del UART: Velocidad de transmisión Pines utilizados Bit de paridad Modos de operación Tiempos
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Manipulación del SCIManipulación del SCI
Estas opciones se pueden modificar en cualquier parte del programa, pero siempre después de haber definido la directiva
#USE DELAY
Esta directiva habilita el uso de funciones tales como: GETCH PUTCHAR PRINTF
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Manipulación del SCIManipulación del SCI
Ejemplos: #use delay (clock=4000000) #use rs232(BAUD=9600, XMIT=PIN_C6, RCV=PIN_C7, BITS=8) #use rs232(BAUD=19200, XMIT=PIN_C6, RCV=PIN_C7)
OPCIÓN DESCRIPCIÓN
BAUD = x Velocidad de Baudios
XMIT = pin Pin de transmisión
RCV = pin Pin de recepción
RESTART_WDT Provoca que la función GETC( ) borre el WDT si espera un carácter.
PARITY = x Donde x es N, E, O.
BITS = x Donde x es 5-9
STOP = x Número de bits de stop (por defecto 1)
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
Manipulación del SCIManipulación del SCI
Configuración de la Velocidad Tx/Rx: Es la misma tanto para Transmisión como
Recepción
Para una frecuencia de 4MHz y una rata de transmisión de 9600 ¿Cuánto sería el error el la velocidad de transmisión?
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
TransmisiónTransmisión
Transmisión de datos:putc(data);
putchar(data);
Data es un carácter de 8 bits. Esta función envía un carácter mediante el pin XMIT.
La directiva #USE RS232 debe situarse siempre antes de utilizar esta función.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
TransmisiónTransmisión
Transmisión cadenas de caracteres constantes:
puts (string);
string es una cadena de caracteres constante o matriz de caracteres terminada con un \0.
La función puts() manda los caracteres de la cadena, uno a uno, a través del bus RS-232 utilizando la función putc();
Al terminar la cadena envía: RETURN(13)
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
TransmisiónTransmisión
Transmisión cadenas de caracteres y variables:
printf(fname,cstring,values); fname especifica la función a utilizar para escribir
la cadena en el módulo indicado. Para escribir en el bus RS-232 se utiliza la función putc (funcion por defecto).
cstring es una cadena de caracteres o matriz de caracteres terminada con un \0.
values son los valores a incluir en la cadena. Estos de envían de acuerdo al formato selecionado: %c %u %s…
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
RecepciónRecepción
Recepción de datos:
value = getc();
value = getc(h);
value = getchar();
values es un carácter de 8 bits.
Estas funciones esperan recibir un carácter por la línea RS-232 y devuelve
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
RecepciónRecepción
Para evitar esperas en la recepción se puede utilizar las interrupciones:
#INT_RDA
enable_interrupts(INT_RDA);
La interrupción ocurre cuando existe un valor en buffer de recepción.
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
A continuación…A continuación…
Ejemplo comunicación PC - MCU
Manipulación del SCI
Módulo SCI de los PIC
Protocolo UART y RS-232
Ejemplo comunicación PC - MCU
2009/1Circuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales III 2010/1Circuitos Digitales III 2010/1Circuitos Digitales IIICircuitos Digitales IIICircuitos Digitales III 2009/2Sistemas Digitales II Universidad Santo Tomás
EjemplosEjemplos
Desarrollar un programa que (1): Imprima mensajes en la ventana. Realice eco de los caracteres escritos en el
HyperTerminal.
Desarrollar un programa que (2): Imprima mensajes en la ventana Un menú que permita al usuario ingresar su nombre,
apellido y edad. Además debe poder imprimir la información
suministrada.
Sistemas Digitales IIFin de la clase 12