Está en la página 1de 15

10- Comunicacin Serial

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.

Ing. Juan Ramon Terven Salinas

152

10- Comunicacin Serial

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

Figura 10-1. Diagrama de bloques simplificado (tomado de[12] ).

Ing. Juan Ramon Terven Salinas

153

10- Comunicacin Serial

Protocolo serial RS-232


Un uso comn que se le da al mdulo UART es comunicar el microcontrolador con
una computadora usando el puerto serie. El protocolo RS-232 es el que usa el Puerto
Serie de la computadora. Este puerto ha sido una parte integral de todas las
computadoras por ms de 20 aos. A pesar de que muchos sistemas nuevos han
abandonado el puerto serie completamente y adoptado conexiones por USB, el puerto
serie sigue siendo usado en la industria, en los equipos de instrumentacin y en mdulos
embebidos, debido a su sencillez en comparacin con protocolos seriales modernos
como el USB o el IEEE1394.
En el protocolo RS-232, el dispositivo a conectar es llamado DCE (Data
Communication Equipment) y la computadora es llamada DTE (Data Terminal
Equipment).
Todos los sistemas operativos en uso hoy en da suportan los puertos serie, porque
estos puertos se han usado por dcadas.
El trmino "serial" viene del hecho de que el puerto serie "serializa" los datos. Esto
quiere decir que toma un byte de datos y transmite un bit a la vez. La ventaja del puerto
serie es que necesita nicamente 1 solo cable para transmitir los 8 bits (mientras que un
puerto paralelo necesita 8). La desventaja es que dura 8 veces ms para transmitir el
dato que si tuviramos 8 cables.
En el protocolo RS-232, antes de cada byte de informacin, se envia un bit de
Start, el cual es un bit con valor de 0, despus se enva el octeto y finalmente se
enva un bit de Stop para indicar que el byte ha sido completado como se muestra en la
Figura 10-2. Algunas veces tambin se manda un bit de paridad para verificacin de
errores.

Figura 10-2. Serializacin de un byte

Ing. Juan Ramon Terven Salinas

154

10- Comunicacin Serial

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.

Figura 10-3. Conector Serie


Tabla 10-1. Conector de 9 pines

PIN

ABREV.

NOMBRE

CD

Carrier Detect

RD

Receive Data

3
4

TD
DTR

5
6

SG
DSR

Transmit Data
Data Terminal
Ready
Signal Ground
Data Set Ready

RTS

Request To Send

CTS

Clear To Send

RI

Ring Indicator

Ing. Juan Ramon Terven Salinas

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

10- Comunicacin Serial


Tabla 10-2. Conector de 25 pines

PIN

ABREV.

NOMBRE

1
2
3

TD
RD

No utilizado
Transmit Data
Receive Data

RTS

Request To Send

CTS

Clear To Send

DSR

Data Set Ready

7
8

SG
CD

Signal Ground
Carrier Detect

9-19
20
21
22

DTR

RI

23-25

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.

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.

Ing. Juan Ramon Terven Salinas

156

10- Comunicacin Serial

Control de Flujo por Software


Algunas veces llamado Xon/Xoff, usa dos caracteres Xon y Xoff. El carcter Xon
comnmente es el ASCII17 y el carcter ASCII 19 es el Xoff.
Cuando la computadora llena el buffer del MODEM, este enva el carcter Xoff
indicandole a la computadora que deje de enviar datos. Una vez que el MODEM tiene
espacio para ms datos enva el carcter Xon y la computadora reanuda el envio de
datos.
Este tipo de control de flujo tiene la ventaja de que no requiere ms cables, ya que
los caracteres Xon y Xoff son enviados por las lneas TD/RD. La desventaja de este
control de flujo es que tenemos que enviar ms datos haciendo la transmisin ms lenta.

Control de Flujo por Hardware


Tambin llamado Control de flujo RTS/CTS. Usa dos cables ms en la conexin, los
pines RTS y CTS. Cuando la computadora desea enviar datos activa la lnea RTS
(Request to send), si el MODEM tiene espacio para los datos, contesta activando CTS
(Clear to send) y la computadora comienza a enviar datos. Si el MODEM ya no tiene
espacio entonces desactiva la lnea CTS.

Ing. Juan Ramon Terven Salinas

157

10- Comunicacin Serial

Conexin de MODEM nulo

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.

Figura 10-4. Conexin Modem nulo

La conexin de MODEM nulo mostrada en la Figura 10-4 solo requiere de 3 cables:


1. Transmit Data (Transmisin)
2. Receive Data

(Recepcin)

3. Signal Ground (Tierra)

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.

Ing. Juan Ramon Terven Salinas

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.

Conexin del PIC32MX con una computadora por puerto serie


La conexin de MODEM nulo la podemos usar para conectar el PIC32 con una
computadora. El modulo UART del PIC32 usa el formato non-return-to-zero (NRZ)
(donde un nivel TTL alto indica un 1 y un nivel TTL bajo indica un 0, vea Figura
10-5) con un bit de Start, ocho o nueve bits de datos y uno o dos bits de Stop (el
modo ms comun es 8 bits, sin paridad, 1 bit de Stop denotado como 8,N,1, el cual es el
modo predeterminado al Reset).

Figura 10-5. Formato tipo NRZ (tomada de [25] ).

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.

Ing. Juan Ramon Terven Salinas

159

10- Comunicacin Serial

Convertir de niveles RS-232


Uno de los convertidores mas comunes es el MAX3232, este convertidor convierte
niveles de TTL a niveles RS-232 y viceversa. Incluye 2 receptores y 2 transmisores en
el mismo encapsulado. Existen muchas variaciones de este convertidor dispositivo
inclusive algunos con capacitores internos. En la Figura 10-6 se muestra el diagrama de
pines de un MAX3232 y una vista interna de los componentes que lo conforman,
adems de los componentes externos que debe tener.

Figura 10-6. MAX3232

Ing. Juan Ramon Terven Salinas

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.

Figura 10-7. Conexion del dsPIC con la computadora

Ing. Juan Ramon Terven Salinas

161

10- Comunicacin Serial

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]

Ing. Juan Ramon Terven Salinas

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)

TasaCalculada TasaDeseada
100
TasaDeseada

9596.92 9600
100 = 0.03%
9600

El protocolo RS-232 tiene una tolerancia de 2% , por lo tanto, el valor obtenido de


520 para el UxBRG es adecuado.

Ing. Juan Ramon Terven Salinas

163

10- Comunicacin Serial

Ejemplo 1. Comunicacin Serial


Para el siguiente ejemplo se us una librera llamada uartP32.h la cual
proporciona varias funciones tiles para implementar comunicacin serial. El siguiente
ejemplo muestra el uso de todas las funciones de la librera uartP32.
Este ejemplo est hecho para ser probado usando la Hyperminal.

Programa 10-1. Ejemplo de transmisin serial


/*****************************************************************
*
DEMOSTRACIN DE COMUNICACIN SERIAL USANDO UART
*
REALIZA UNA COMUNICACIN SERIAL A 9600 BPS
*****************************************************************/
#include <p32xxxx.h>
#include "../librerias/retardos/retardos.h"
#include "../librerias/uart/uartP32.h"
//Bits de configuracion
#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPLLMUL = MUL_20
#pragma config FPLLIDIV = DIV_2, FPLLODIV = DIV_1
#pragma config FPBDIV = DIV_1, FWDTEN = OFF, UPLLEN = ON
#pragma config UPLLIDIV = DIV_2, FVBUSONIO = ON, FUSBIDIO = ON
#pragma config FSOSCEN = OFF, CP = OFF, FCKSM = CSECMD
int main(void)
{
char cadena[] = "Probando la comunicacion serie";
unsigned char contador, datoLeido;
AD1PCFG = 0xFFFF;

// configura pines como digitales

//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();

//Envia dato de 8 bits


//Lee dato del UART

//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

}
}

Ing. Juan Ramon Terven Salinas

164

10- Comunicacin Serial

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.

Figura 10-10. Propiedades de la comunicacin

5. Encienda su circuito con el Ejemplo1 grabado y listo!. La siguiente figura


muestra el ejemplo 1 en Hyperterminal.

Ing. Juan Ramon Terven Salinas

165

10- Comunicacin Serial

Figura 10-11. HyperTerminal funcionando con el ejemplo 1

Ing. Juan Ramon Terven Salinas

166

También podría gustarte