Tutorial Comunicacion Serial

download Tutorial Comunicacion Serial

of 9

Transcript of Tutorial Comunicacion Serial

  • www.psoc-chile.es.tl 1

    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 2

    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 3

    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 4

    El circuito MAX232 que ser instalado en el Protoboard se ve as:

  • www.psoc-chile.es.tl 5

    En el caso del Kit PSOC CY3210 este circuito viene integrado en la placa:

  • www.psoc-chile.es.tl 6

    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 7

    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 8

    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 mov X,

  • www.psoc-chile.es.tl 9

    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