Está en la página 1de 9

Tutorial N4

Introduccin a Comunicacin Serial en PSOC


La comunicacin serial es un protocolo muy comn (no hay que confundirlo con el Bus
Serial de Comunicacin, o USB) para comunicacin entre dispositivos que se incluye de
manera estndar en prcticamente cualquier computadora. La mayora de las
computadoras incluyen dos puertos seriales RS-232. La comunicacin serial es tambin
un protocolo comn utilizado por varios dispositivos para instrumentacin; existen varios
dispositivos compatibles con GPIB que incluyen un puerto RS-232. Adems, la
comunicacin serial puede ser utilizada para adquisicin de datos si se usa en conjunto
con un dispositivo remoto de muestreo.

El concepto de comunicacin serial es sencillo. El puerto serial enva y recibe bytes de


informacin un bit a la vez. Aun y cuando esto es ms lento que la comunicacin en
paralelo, que permite la transmisin de un byte completo por vez, este mtodo de
comunicacin es ms sencillo y puede alcanzar mayores distancias. Por ejemplo, la
especificacin IEEE 488 para la comunicacin en paralelo determina que el largo del
cable para el equipo no puede ser mayor a 20 metros, con no ms de 2 metros entre
cualesquier dos dispositivos; por el otro lado, utilizando comunicacin serial el largo del
cable puede llegar a los 1200 metros.

Tpicamente, la comunicacin serial se utiliza para transmitir datos en formato ASCII. Para
realizar la comunicacin se utilizan 3 lneas de transmisin: (1) Tierra (o referencia), (2)
Transmitir, (3) Recibir. Debido a que la transmisin es asincrnica, es posible enviar datos
por un lnea mientras se reciben datos por otra. Existen otras lneas disponibles para
realizar handshaking, o intercambio de pulsos de sincronizacin, pero no son requeridas.
Las caractersticas ms importantes de la comunicacin serial son la velocidad de
transmisin, los bits de datos, los bits de parada, y la paridad. Para que dos puertos se
puedan comunicar, es necesario que las caractersticas sean iguales.

Los principales parmetros de configuracin son:

Velocidad de transmisin (baud rate):

Indica el nmero de bits por segundo que se transfieren, y se mide en baudios (bauds).
Por ejemplo, 300 baudios representan 300 bits por segundo. Cuando se hace referencia
a los ciclos de reloj se est hablando de la velocidad de transmisin. Por ejemplo, si el
protocolo hace una llamada a 4800 ciclos de reloj, entonces el reloj est corriendo a 4800
Hz, lo que significa que el puerto serial est muestreando las lneas de transmisin a
4800 Hz. Las velocidades de transmisin ms comunes para las lineas telefnicas son de
14400, 28800, y 33600. Es posible tener velocidades ms altas, pero se reducira la
distancia mxima posible entre los dispositivos. Las altas velocidades se utilizan cuando
los dispositivos se encuentran uno junto al otro, como es el caso de dispositivos GPIB

www.psoc-chile.es.tl 1
Bits de datos:

Se refiere a la cantidad de bits en la transmisin. Cuando la computadora enva un


paquete de informacin, el tamao de ese paquete no necesariamente ser de 8 bits. Las
cantidades ms comunes de bits por paquete son 5, 7 y 8 bits. El nmero de bits que se
enva depende en el tipo de informacin que se transfiere. Por ejemplo, el ASCII estndar
tiene un rango de 0 a 127, es decir, utiliza 7 bits; para ASCII extendido es de 0 a 255, lo
que utiliza 8 bits. Si el tipo de datos que se est transfiriendo es texto simple (ASCII
estndar), entonces es suficiente con utilizar 7 bits por paquete para la comunicacin. Un
paquete se refiere a una transferencia de byte, incluyendo los bits de inicio/parada, bits
de datos, y paridad. Debido a que el nmero actual de bits depende en el protocolo que
se seleccione, el trmino paquete se usar para referirse a todos los casos.

Bits de parada:

Usado para indicar el fin de la comunicacin de un solo paquete. Los valores tpicos son
1, 1.5 o 2 bits. Debido a la manera como se transfiere la informacin a travs de las
lneas de comunicacin y que cada dispositivo tiene su propio reloj, es posible que los
dos dispositivos no estn sincronizados. Por lo tanto, los bits de parada no slo indican el
fin de la transmisin sino adems dan un margen de tolerancia para esa diferencia de los
relojes. Mientras ms bits de parada se usen, mayor ser la tolerancia a la sincrona de
los relojes, sin embargo la transmisin ser ms lenta.

Paridad:

Es una forma sencilla de verificar si hay errores en la transmisin serial. Existen cuatro
tipos de paridad: par, impar, marcada y espaciada. La opcin de no usar paridad alguna
tambin est disponible. Para paridad par e impar, el puerto serial fijar el bit de paridad
(el ltimo bit despus de los bits de datos) a un valor para asegurarse que la transmisin
tenga un nmero par o impar de bits en estado alto lgico. Por ejemplo, si la informacin
a transmitir es 011 y la paridad es par, el bit de paridad sera 0 para mantener el nmero
de bits en estado alto lgico como par. Si la paridad seleccionada fuera impar, entonces
el bit de paridad sera 1, para tener 3 bits en estado alto lgico. La paridad marcada y
espaciada en realidad no verifican el estado de los bits de datos; simplemente fija el bit
de paridad en estado lgico alto para la marcada, y en estado lgico bajo para la
espaciada. Esto permite al dispositivo receptor conocer de antemano el estado de un bit,
lo que servira para determinar si hay ruido que est afectando de manera negativa la
transmisin de los datos, o si los relojes de los dispositivos no estn sincronizados.

Qu es RS-232?

RS-232 (Estndar ANSI/EIA-232) es el conector serial hallado en las PCs IBM y


compatibles. Es utilizado para una gran variedad de propsitos, como conectar un ratn,
impresora o modem, as como instrumentacin industrial. Gracias a las mejoras que se
han ido desarrollando en las lneas de transmisin y en los cables, existen aplicaciones
en las que se aumenta el desempeo de RS-232 en lo que respecta a la distancia y
velocidad del estndar. RS-232 est limitado a comunicaciones de punto a punto entre
los dispositivos y el puerto serial de la computadora. El hardware de RS-232 se puede
utilizar para comunicaciones seriales en distancias de hasta 50 pies.
www.psoc-chile.es.tl 2
La electrnica ha cambiado un poco. Antes se utilizaban aparatos de relativamente
alto poder y alto voltaje, 12V. Los aparatos modernos no operan a voltajes
tan altos. De hecho, PSOC corre entre 0V y 5V.

Entonces como hacemos conversar el RS232 a nuestro micro de 5V con voltajes


de +/-12V?
Este problema fue solucionado por los fabricantes de integrados del mundo.
Fabricaron un IC que es genricamente conocido como el MAX232 (casi RS232
o no?).
El MAX232 es un IC originalmente diseado por una compaa llamada Maxim IC
que convierte las seales de +/-12V del RS232 a seales de 0/5V para que
nuestra Psoc pueda entenderlas. Tambin aumenta el voltaje de nuestra Psoc al
voltaje de +/-12V que necesita el protocolo de RS232 para que el computador
pueda entender nuestra seal
Para hacer que nuestro micro enve caracteres seriales a un computador
necesitamos enviar estas seales a travs de un circuito MAX232, para que el
computador reciba seales de RS232 a +/-12V.
No se preocupe si ests ocupando un chip que diga ICL232 o ST232, estos
son genricos de MAX232. Las funciones son todas las mismas y prcticamente
tienen los mismos pines de salida.

www.psoc-chile.es.tl 3
El circuito MAX232 que ser instalado en el Protoboard se ve as:

www.psoc-chile.es.tl 4
En el caso del Kit PSOC CY3210 este circuito viene integrado en la placa:

www.psoc-chile.es.tl 5
Configurar PSOC

Para poder transmitir los datos de forma serial al Pc, en una primera instancia debemos
seleccionar el modulo UART, el cual consta de 2 bloques, uno transmisor (TX) y otro
receptor (RX), como se muestra en la figura

El Globar Resources debe configurarse considerando que los datos que ingresar a la
UART se deben dividir por 8, por lo que si queremos transmitir a una velocidad de 19200
bps , el clock que ingresa al bloque debe ser 8 veces mas grande (*).

www.psoc-chile.es.tl 6
Considere que en el ejemplo la UART esta siendo alimentada por VC3, el cual esta
alimentado por SYSCLOCK/1

VC3 SOURCE= SYSCLOCK/1= 24MHZ


VC3= 156

24000000 /156=153846 / 8 (*) = 19200

Propiedades de la UART, recuerde que no debe quedar ninguna propiedad en blanco

www.psoc-chile.es.tl 7
Codigo Assembler
;-----------------------------------------------------------------------------
; Assembly main line
;-----------------------------------------------------------------------------

include "M8C.inc" ; part specific constants and macros

include "PSoCAPI.inc" ; PSoC API definitions for all User Modules

export _main:

// Declaracion de variables
area bss(RAM)

// Variable para almacenar el dato de ADC

iResult: blk 2

// Declaracion de Codigo
area text(ROM,REL)

_main:
mov A, UART_1_PARITY_NONE // Define paridad en la Uart
call UART_1_Start // Habilita UART

mov A, >THE_STR
mov X, <THE_STR

// Display example string

lcall UART_1_CPutString //
lcall UART_1_PutCRLF // Retorno del carro

mov A, PGA_1_MEDPOWER // Habilita Potencia en PGA

lcall PGA_1_Start // Habilita PGA


mov A, ADCINC12_1_MEDPOWER //Habilita ADC power

lcall ADCINC12_1_Start // Habilita ADC


mov A, 0

lcall ADCINC12_1_GetSamples // Muestreo Continuo

lcall LCD_1_Start // Habilita the LCD

mov A, 0 // Posicion Fila en lcd


mov X, 0 // Posicion Columna en lcd
lcall LCD_1_Position // Carga posicion definida en lcd

mov A, >THE_STR
mov X, <THE_STR

lcall LCD_1_PrCString // Display dato(string) en lcd

www.psoc-chile.es.tl 8
M8C_EnableGInt // Habilita interrupciones globales

loop:

lcall ADCINC12_1_fIsDataAvailable // espera a que el dato sea convertido...


jz loop

lcall ADCINC12_1_iGetData // Obtiene el dato sin signo se copia en iResult

mov [iResult+1], A
mov [iResult+0], X

add [iResult+0], 0x08 // suma 0x0800 al resultado


lcall ADCINC12_1_ClearFlag //Limpia indicador(Flag) de conversin

mov A, [iResult+1]
mov X, [iResult+0]

// Print result to UART

lcall UART_1_PutSHexInt //imprime el valor de iResult en el Puerto serial

lcall UART_1_PutCRLF // retorna el cursor al inicio

mov A, 1 // Fila
mov X, 4 // columna
call LCD_1_Position

mov A, [iResult+1] // envia el dato al lcd en hexadecimal


mov X, [iResult+0]
call LCD_1_PrHexInt

jmp loop

.LITERAL
THE_STR:
DS " Psoc-Chile "
DB 00h ; indica final de datos en db
.ENDLITERAL

www.psoc-chile.es.tl 9

También podría gustarte