Professional Documents
Culture Documents
10 COMUNICACIN SERIAL
Una caracterstica importante en todo microcontrolador es la capacidad de poder comunicarse con otros componentes (memorias, convertidores, RTC, etc) o con otros dispositivos (computadora personal, u otros microcontroladores). Los PIC32MX poseen varios mdulos de comunicacin serial diseados para permitir la comunicacin del microcontrolador con otros componentes o dispositivos esternos. El PIC32MX534F064H posee: 6 mdulos para comunicacin serial asncrona UART (Universal Asynchronous Receiver and Transmitter). 3 mdulos para comunicacin serial sncrona SPI (Serial Peripheral Interface). 4 mdulos para comunicacin serial sncrona I2C (Inter-Integrated Circuit). 1 mdulo para comunicacin CAN (Controller Area Network). 1 mdulo para comunicacin USB OTG (Universal Serial bus On-the-go).
La diferencia principal entre una interface sncrona (como SPI o I2C) y una ascrona (como UART, CAN o USB) es la forma en la que la informacin de sincronizacin es pasada del transmisor al receptor. Los perifricos sncronos necesitan una lnea fsica (un cable) dedicada a la seal de reloj, proporcionando la sincronizacin entre los dos dispositivos. Los perifrico asncronos no usan una seal de reloj, la informacin de sincronizacin es extraida de los mismos datos. Se agregan bit de inicio y de parada, adems de un formato preciso a una tasa de transferencia fija.
152
UART
El mdulo UART de la siglas en Ingles Universal Asynchronous Receiver Transmitter permite comunicacin serial asncrona full-duplex con otros dispositivos, o componentes tales como computadoras, convertidores, mdulos inalmbricos, etc.
Las caracteristicas principales del mdulo UART son: Transmisin Full-duplex de 8- o 9-bits a travs de los pines UxTX and UxRX. Opciones de paridad Par, Impar o Sin paridad para datos de 8 bits. Uno o dos bits de parada (Stop bits). Deteccin automtica de la tasa de baudios. Un generador de baudios integrado con prescaler de 16 bits. Tasas de transferencia de desde 76 bps hasta 20 Mbps a 80 MHz. Deteccin de errors de paridad y desbordamiento de buffer. Soporte para modo de 9 bits con deteccin de direccin (bit 9 en 1). Interrupciones de transmission y recepcin. Modo de circuito cerrado (Loopback) para diagnstico y depuracin.
La Figura 10-1 muestra el diagrama simplificado del UART, el cual consiste de los siguientes elementos principales: Generador de Baudios Transmisor Asncrono Receptor Asncrono
153
154
El conector serial
El conector externo para un puerto serie puede ser de 9 o de 25 pines (Figura 10-3). Originalmente el uso de un puerto serie era para conectar un modem a la computadora. La asignacin de los pines refleja esta conexin como se muestra en la Tabla 10-1 y Tabla 10-2. Comnmente se usa un conector DB9 hembra para conectarlo en el conector serial DB9 macho que poseen las computadoras.
PIN
1 2 3 4 5 6 7 8 9
ABREV.
CD RD TD DTR SG DSR RTS CTS RI
NOMBRE
Carrier Detect Receive Data Transmit Data Data Terminal Ready Signal Ground Data Set Ready Request To Send Clear To Send Ring Indicator
FUNCIONAMIENTO
Determina si el modem est conectado a una lnea telefnica en funcionamiento. La computadora recibe la informacin enviada por el modem. La computadora enva informacin al modem. Esta seal le dice al MODEM que el UART est listo para establecer una conexin. Tierra Esta seal le dice al UART que el MODEM est listo para establecer una conexin. Esta lnea le informa al MODEM que el UART est listo para intercambiar datos. Esta lnea indica que el MODEM est listo para intercambiar datos. Una vez que una llamada ha tomado lugar, la computadora reconoce por esta seal (enviada por el modem) que una llamada es detectada.
155
PIN
1 2 3 4 5 6 7 8 9-19 20 21 22
ABREV.
TD RD RTS CTS DSR SG CD
NOMBRE
No utilizado Transmit Data Receive Data Request To Send Clear To Send Data Set Ready Signal Ground Carrier Detect No utilizado Data Terminal Ready No utilizado Ring Indicator
FUNCIONAMIENTO
La computadora enva informacin al modem. La computadora recibe la informacin enviada por el modem. Esta lnea le informa al MODEM que el UART est listo para intercambiar datos. Esta lnea indica que el MODEM est listo para intercambiar datos. Esta seal le dice al UART que el MODEM est listo para establecer una conexin. Tierra Determina si el modem est conectado a una lnea telefnica en funcionamiento. Esta seal le dice al MODEM que el UART est listo para establecer una conexin. Una vez que una llamada ha tomado lugar, la computadora reconoce por esta seal (enviada por el modem) que una llamada es detectada.
DTR
RI
23-25
No utilizado
Control de Flujo
Un aspecto importante de la comunicacin serial es el concepto de control de flujo. Esta es la capacidad de sincronizacin entre transmisor y receptor con la finalidad de que el receptor no se sature. Existe el control de flujo por software y control de flujo por hardware. Imagine un MODEM que se comunica a 56Kbps con la red, y la conexin serial entre la computadora y el modem es de a 115Kbps, el cual es mas del doble de rpido que lo que el MODEM puede transmitir hacia la red. Esto significa que el modem est recibiendo ms informacin de la computadora que la que puede transmitir por la lnea telefnica. Aun si el modem tuviera un buffer grande para almacenar datos, este rpidamente se llenara y sera incapaz de funcionar correctamente con toda la informacin recibiendo de la computadora. Esta es una aplicacin clsica donde se requiere control de flujo. Imagine otra aplicacin en donde se tiene conectado un PIC32MX a una computadora con el sistema operativo Windows y se est realizando una comunicacin serial de alta velocidad (por ejemplo 20 MHz), el SO Windows es multitarea y debido a esto sus aplicaciones pueden experimentar largos retardos provocando prdidas de datos enviados por el PIC32MX. Aqu tambin necesitamos un control de flujo.
156
157
La conexin de MODEM nulo se usa para conectar dos DTEs, proporciona una manera econmica de conectar dos computadoras o bien una computadora con un dispositivo Embedded, en nuestro caso un PIC32MX a la computadora.
La conexin de MODEM nulo mostrada en la Figura 10-4 solo requiere de 3 cables: 1. Transmit Data (Transmisin) 2. Receive Data (Recepcin)
La teora de funcionamiento es sencilla, la meta consiste en hacer que la computadora piense que est hablando con un MODEM, en lugar de con otra computadora.
Todo dato transmitido de una computadora debe ser recibido por la otra, de tal forma que TD est conectado con RD en ambas computadoras, la seal de tierra tambin debe estar unida entre ambas.
El pin Data Terminal Ready est interconectado con el pin Data Set Ready y con Carrier Detect en ambos extremos. De tal forma que cuando el pin Data Terminal Ready se active, entonces Data Set Ready y Carrier Detect se activarn inmediatamente. En este punto, la computadora piensa que el MODEM al cual est conectada est listo y ha detectado la portadora de la lnea telefnica.
158
10- Comunicacin Serial Los pines que quedan son Request to Send y Clear To Send. Como ambas computadoras se comunican a la misma velocidad, el control de flujo no es necesario de tal forma que estos dos pines estn tambin interconectados.
Cuando la computadora desea enviar datos, enva la seal Request To Send y esta misma seal es atrapada en el pin Clear To Send de tal forma que siempre obtiene la respuesta del MODEM que est listo para recibir datos.
Note que el pin Ring Indicador no est conectado a nada. Esta lnea solo se usa para decirle a la computadora que hay una seal en la lnea telefnica, pero como no tenemos un MODEM conectado a la lnea telefnica, lo dejamos desconectado.
Sin embargo todos los pines del puerto serie de la computadora usa niveles RS-232, en los cuales un voltaje de +3 a +25 indican un 0 (espacio) y de -3 a -25 volts indican un 1 (marca). Cualquier voltaje entre -3 y 3 volts es un bit indefinido. Debido a esto es necesario un Convertidor de niveles RS-232.
159
160
10- Comunicacin Serial Usando el MAX 232 y control de flujo por hardware, el diagrama de conexin sera como el de la Figura 10-7.
161
Generador de Baudios
Regresando al mdulo UART, el generador de Baudios controla la velocidad de transmisin o recepcin de los datos. Por medio del registro UxBRG controlamos la tasa de baudios (bits por segundo). Los PIC32MX manejan 2 velocidades: Baja (bit BRGH=0) y Alta (bit BRGH=1). El bit BRGH se encuentra en el registro UxMODE. La Figura 10-8 muestra la frmula para calcular el valor de UxBRG para una determinada tasa de transferencia en baja velocidad.
Figura 10-8. Formula para calcular la tasa de baudios en baja velocidad (BRGH=0) [12]
La Figura 10-9 muestra la frmula para calcular el valor de UxBRG para una determinada tasa de transferencia para alta velocidad.
Figura 10-9. Formula para calcular la tasa de baudios en alta velocidad (BRGH=0) [12]
162
10- Comunicacin Serial Por ejemplo: Se desea una tasa de transferencia de 9600 bits/seg trabajando con una FPB de 80 MHz. Baud Rate = 9600 FPB = 80 x106 Como se trata de una velocidad muy lenta, usamos las frmulas de la Figura 10-8. 1. Primero calculamos el valor de UxBRG:
UxBRG = 80 10 6 1 = 519.83 520 16 9600
2. Como no dio exacto y solamente podemos usar valores enteros, calculamos el error: Con 520 en UxBRG la tasa de transferencia es:
BaudRate =
El Error en % se define como Entonces el error es E =
80 10 6 = 9596.93 16 (520 + 1)
163
//Inicia UART2 con FPB de 80MHz y una tasa de transferencia de 9600bps openUART(UART2, 80000000, 9600); //Espera un breve retardo retardoms(10); //Limpia consola de Hyperterminal clearConsoleUART(); //Envia variable cadena putsUART(cadena); //Inicia contador en el primer caracter visible (ASCII 32 = espacio en blanco) contador = 32; while(1) { putcUART(contador); datoLeido = getUART();
//Si el dato fue una 'A', limpia hyperterminal e imprime "Hola" if(datoLeido == 'A') { clearConsoleUART(); putsUART("Hola"); } //pero si el dato leido es 'B' regresa el cursor al inicio del hyperterminal else if(datoLeido == 'B') { returnHomeUART(); } contador++; retardoms(100); } } //incrementa contador que envia por puerto serie
164
HyperTerminal
El sistema operativo Windows incluye un programa llamado HyperTerminal el cual permite comunicarnos por puerto serie. Este programa se encuentra en Inicio> Todos los programas> Accesorios> Comunicaciones> HyperTerminal.
Pasos para configurar la HyperTerminal 1. Abra el programa HyperTerminal 2. Escriba nombre a la Nueva Conexin. 3. Seleccione el puerto COMx que est usando. 4. Seleccine las propiedades de la comunicacin. En este caso 9600 baudios, 8 bits, sin paridad, 1 bit de parada y control de flujo ninguno como se muestra en la Figura 10-10.
5. Encienda su circuito con el Ejemplo1 grabado y listo!. La siguiente figura muestra el ejemplo 1 en Hyperterminal.
165
166