comunicación serial asíncrona con el stellaris

6
Comunicaci´ on Serial As´ ıncrona Zaraos V´ azquez Jorge Alejandro , Toala Hern´ andez Jahaziel, Rodr´ ıguez Morales Guillermo de Jesus Instituto Tecnol´ ogico de Tuxtla Gutierrez, Chiapas [email protected] angelblack [email protected] nemesis [email protected] Resumen En esta pr´ actica utilizaremos dos Stellaris, donde se quiere manipular la trama de datos que recibir´ a un Stellaris se configuraran las UART’s como objetivo principal de la pr´ actica es recibir y transmitir datos por la UART, lo que se pretende hacer es manipular el dato que se recibe. I. INTRODUCCI ´ ON UART es el componente clave del subsistema de comunica- ciones series. El UART toma bytes de datos y transmite los bits individuales de forma secuencial. En el destino, un segundo UART reensambla los bits en bytes completos. La transmisi´ on serie de la informaci´ on digital (bits) a trav´ es de un cable ´ unico u otros medios es mucho m´ as efectiva en cuanto a costo que la transmisi´ on en paralelo a trav´ es de m´ ultiples cables. Se utiliza un UART para convertir la informaci´ on transmitida entre su forma secuencial y paralela en cada terminal de enlace. Cada UART contiene un registro de desplazamiento que es el m´ etodo fundamental de conversi´ on entre las forma serie y paralelo. La transmisi´ on serial es aquella donde la informaci´ on es enviada bit por bit hacia un determinado destino. Es lenta pero mucho m´as confiable por lo que tiende a usarse para transmisiones a larga distancia que no requieran de altas velocidades de respuesta. La transmisi´ on serial as´ ıncrona es aquella en la que los bits de datos de una car´ acter se transfieren de manera independiente en el tiempo con respecto a otro car´ acter, precedidos de un bit de arranque y un bit de paro. De tal manera que para esta t´ ecnica cada car´acter consta de tres partes: un bit de inicio, bits de caracteres y un bit de paro. El bit de inicio siempre es cero y se utiliza para anunciar que comienza un car´ acter. El bit de paro siempre es 1, valor que se mantiene por al menos el tiempo correspondiente a un bit para indicar que ha culminado el car´ acter enviado. La unidad receptora puede detectar un car´ acter a trav´ es del conocimiento de las siguientes reglas: Una l´ ınea desocupada siempre se encuentra en estado uno. El inicio de la transmisi´ on puede detectarse a partir del bit de inicio que es siempre cero. Los bits que le prosiguen le corresponden a los bits del car´ acter. Para se˜ nalar la culminaci´ on de la transmisi´ on se utiliza un bit de alto, el cual consiste en una l´ ınea que se mantiene en estado uno por m´ as tiempo de lo predeterminado para un bit. De tal manera el reloj interno del receptor, que conoce la ve- locidad de transmisi´on de los bits examina la l´ ınea de tiempos y puede reconocer el inicio y fin de una trama. El tiempo del bit de paro puede ser el concerniente a uno o dos bits, que es el tiem- po que necesitar´ an las unidades para sincronizarse de nuevo. II. FUNDAMENTOS TE ´ ORICOS A. Stellaris LM4F120 El stellairs LM4F120 LaunchPad Evaluation Board es una plataforma de evaluacion de bajo costo para ARM Cortex -M4F basados en microcontroladores de Texas Instrument, el dise˜ no de el LaunchPad stellaris destaca LM4F120H5QR microcontrolador con un dispos- itivo de interfaz USB 2,0 y un m´ odulo de hibernaci´ on. El EK-LM4F120XL tambi´ en cuenta con botones pro- gramables de usuario y un LED RGB para aplicaciones personalizadas, las cabeceras de la apilables Stellaris R LM4F120 LaunchPad BoosterPack XL hace que sea f´ acil y sencillo para ampliar la funcionalidad de la Stellaris R LaunchPad, al conectarse a otros perif´ ericos con Stellaris R BoosterPacks y BoosterPacks MSP430 TM . El Stellaris R LM4F120 LaunchPad funciona a bordo de emulaci´ on, lo que significa que se puede programar y depurar sus proyectos sin la necesidad de herramientas adicionales.Compatibilidad del BoosterPackDos de doble- genero, 20-pines de cabeceras apilables ofrecen grandes op- ciones de conexi´ on de la caja.

Upload: alex-vazquez

Post on 01-Jun-2015

900 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Comunicación Serial Asíncrona con el Stellaris

Comunicacion Serial AsıncronaZaraos Vazquez Jorge Alejandro , Toala Hernandez Jahaziel,

Rodrıguez Morales Guillermo de Jesus

Instituto Tecnologico de Tuxtla Gutierrez, Chiapas

[email protected]

angelblack [email protected]

nemesis [email protected]

Resumen – En esta practica utilizaremos dosStellaris, donde se quiere manipular la trama dedatos que recibira un Stellaris se configuraran lasUART’s como objetivo principal de la practica esrecibir y transmitir datos por la UART, lo que sepretende hacer es manipular el dato que se recibe.

I. INTRODUCCION

UART es el componente clave del subsistema de comunica-ciones series. El UART toma bytes de datos y transmite losbits individuales de forma secuencial. En el destino, un segundoUART reensambla los bits en bytes completos. La transmisionserie de la informacion digital (bits) a traves de un cable unicou otros medios es mucho mas efectiva en cuanto a costo que latransmision en paralelo a traves de multiples cables. Se utilizaun UART para convertir la informacion transmitida entre suforma secuencial y paralela en cada terminal de enlace. CadaUART contiene un registro de desplazamiento que es el metodofundamental de conversion entre las forma serie y paralelo.

La transmision serial es aquella donde la informacion esenviada bit por bit hacia un determinado destino. Es lentapero mucho mas confiable por lo que tiende a usarse paratransmisiones a larga distancia que no requieran de altasvelocidades de respuesta. La transmision serial asıncrona esaquella en la que los bits de datos de una caracter se transfierende manera independiente en el tiempo con respecto a otrocaracter, precedidos de un bit de arranque y un bit de paro.De tal manera que para esta tecnica cada caracter consta detres partes: un bit de inicio, bits de caracteres y un bit deparo. El bit de inicio siempre es cero y se utiliza para anunciarque comienza un caracter. El bit de paro siempre es 1, valorque se mantiene por al menos el tiempo correspondiente aun bit para indicar que ha culminado el caracter enviado.

La unidad receptora puede detectar un caracter a traves delconocimiento de las siguientes reglas:

Una lınea desocupada siempre se encuentra en estadouno.

El inicio de la transmision puede detectarse a partirdel bit de inicio que es siempre cero. Los bits que leprosiguen le corresponden a los bits del caracter.

Para senalar la culminacion de la transmision seutiliza un bit de alto, el cual consiste en una lıneaque se mantiene en estado uno por mas tiempo de lopredeterminado para un bit.

De tal manera el reloj interno del receptor, que conoce la ve-locidad de transmision de los bits examina la lınea de tiempos ypuede reconocer el inicio y fin de una trama. El tiempo del bit deparo puede ser el concerniente a uno o dos bits, que es el tiem-po que necesitaran las unidades para sincronizarse de nuevo.

II. FUNDAMENTOS TEORICOS

A. Stellaris LM4F120

El stellairs LM4F120 LaunchPad Evaluation Boardes una plataforma de evaluacion de bajo costo paraARM Cortex -M4F basados en microcontroladores deTexas Instrument, el diseno de el LaunchPad stellarisdestaca LM4F120H5QR microcontrolador con un dispos-itivo de interfaz USB 2,0 y un modulo de hibernacion.

El EK-LM4F120XL tambien cuenta con botones pro-gramables de usuario y un LED RGB para aplicacionespersonalizadas, las cabeceras de la apilables Stellaris R©LM4F120 LaunchPad BoosterPack XL hace que sea facily sencillo para ampliar la funcionalidad de la StellarisR© LaunchPad, al conectarse a otros perifericos conStellaris R© BoosterPacks y BoosterPacks MSP430 TM.

El Stellaris R© LM4F120 LaunchPad funciona a bordode emulacion, lo que significa que se puede programar ydepurar sus proyectos sin la necesidad de herramientasadicionales.Compatibilidad del BoosterPackDos de doble-genero, 20-pines de cabeceras apilables ofrecen grandes op-ciones de conexion de la caja.

Page 2: Comunicación Serial Asíncrona con el Stellaris

Estos 40 pines permiten anadir soporte de pantallas,interfaces inalambricas, sensores y otras capacidades a losproyectos muy facilmente y tambien ofrecen compatibili-dad basica con los actuales MSP430 y C2000 LaunchPad’s.

El microcontrolador Stellaris ofrece una LM4F120H5QR80 MHz, 32-bit ARM Cortex-M4 CPU con pun-to flotante, 256Kbytes de 100.000 FLASH ciclo deescritura-borrado y muchos perifericos tales como ADC1MSPS, 8 UARTs, 4 SPIs, 4 I2Cs, USB y hasta 27timers, algunos configurable hasta 64 bits. Dos in-terruptores de uso general de usuarios, un boton dereinicio, LED de encendido y LED programable RGB.

Fig. 1 Stellaris LM4120 LaunchPad

B. UART

UART son las siglas de Universal AsynchronousReceiver-Transmitter”( en espanol, Transmisor-ReceptorAsıncrono Universal ). Este controla los puertos y dis-positivos serie. Se encuentra integrado en la placa baseo en la tarjeta adaptadora del dispositivo. Un UARTdual, o DUART, combina dos UARTs en un solo chip. Elreceptor / transmisor asıncrono (UART) API universalproporciona un conjunto de funciones para el uso de losmodulos UART Stellaris. Se proporcionan funciones paraconfigurar y controlar los modulos UART, para enviar yrecibir datos, y para gestionar las interrupciones para losmodulos UART.

El Stellaris UART realiza las funciones de conversionesde paralelo a serie y serie-paralelo. Es muy similar en fun-cionalidad a un 16C550 UART, pero no es compatible.Algunas de las caracterısticas de la Stellaris UART son:

Un poco 16x12 FIFO de recepcion y un poco 16x8transmision FIFO.

Generador de velocidad en baudios programable.

Generacion automatica y extraccion de inicio,parada y bits de paridad.

Interfaz serial programable.

5, 6, 7, o 8 bits de datos, par, impar, palo o ningu-na generacion bit de paridad y deteccion, 1 o 2bits de parada generacion generacion de velocidadde transmision, de la CC a procesador clock/16

Este controlador se encuentra en driverlib/uart.c, condriverlib/uart.h que contiene las definiciones de API parael uso de aplicaciones.

Fig. 2 Diagrama Bloques UART

C. Comunicacion Serial Asıncrona

El otro metodo, el utilizado en las computadoras,consiste en agregar marcadores dentro del flujo de bitspara ayudar a seguir cada bit de datos. al introducirun bit de inicio que indica el inicio de un corto flujode datos, la posicion de cada bit puede ser determinadocronometrando los bits a intervalos regulares, enviandobits de inicio al comienzo de cada flujo de 8 bits losdos sistemas pueden no estar sincronizados por unasenal de reloj, lo unico que es importante es que am-bos sistemas esten configurados a la misma velocidad.

Cuando el dispositivo receptor de la comunicacion recibeel bit de inicio comienza un temporizador de corto tiempo.Al mantener los flujos cortos no hay suficiente tiempo paraque el reloj salga de sincronıa. Este metodo es conocidocomo comunicacion asıncrona debido a que las terminalesde la comunicacion no estan sincronizados por una lıneade senal.

Cada flujo de bits es separado en grupos de 5a 8 bits llamados palabras. Usualmente en el am-biente de la computacion se encuentran palabrasde 7 y 8 bits, el primero es para acomodar to-das las letras mayusculas y minusculas del alfabetoen codigo ASCII, con un total de 127 caracteres.

Page 3: Comunicación Serial Asíncrona con el Stellaris

Las palabras de 8 bits son utilizadas para correspondera un byte. Por convencion, el bit menos significativo dela palabra es enviado primero y el mas significativo alfinal. Durante la comunicacion, el transmisor codificacada palabra agregandole un bit de inicio al principioy 1 o 2 bits al final. Algunas ocasiones agregara unbit de paridad entre el ultimo bit de la palabra y elprimer bit de paro, esto es utilizado como como verifi-cacion de integridad de datos. Al paquete de bits quese transmiten usualmente se le llama marco de datos.

Fig.3 Marco de datos de comunicacion serial asıncrona.

III. DESARROLLO DE LA PRACTICA

Para hacer el desarrollo de una manera entendiblees realizado un diagrama de procesos donde semuestra de forma estructurada como realizamos lapractica. Se puede observar en la siguiente figura.

Fig.4 Diagrama de procesos.

A. Eleccion de practica

En base al proyecto designado transmitir datos aun RFID y recibiendo su respuesta dependiendo sila tag esta cerca o lejos, lo primero a realizar parapoder cumplir el proyecto es poder manipular el da-to que es transmitido de un Stellaris, para podercomprobar esto se tendra que realizar un progra-ma que sera el receptor de datos utilizando las UARTS.

B. Diagrama

Planteamos una propuesta de diseno.

Fig.5 Diagrama de la practica

Para poder configurar las UART’s antes debemossaber en donde estan ubicadas en que perifericosen que pines realizamos la busqueda de estos en eldatasheet y los plasmamos en un mapa de pines.

Fig.6 Mapa de pines de la UART

Page 4: Comunicación Serial Asíncrona con el Stellaris

C. Algoritmo

Transmisor

• Ajustar el reloj para que se ejecute desde elcristal• Habilitar perifericos de cada UART• Habilitar los puertos correspondientes de cadaUART• Establecer pines GPIO Rx y Tx de cada UART• Configurarlos los pines como UART• Configurar la velocidad de transmision de cadaUART• Abrir ciclo while• Enviar datos en las direcciones de cada UART

Receptor

• Ajustar el reloj para que se ejecute desde elcristal• Habilitar perifericos de cada UART• Habilitar los puertos correspondientes de cadaUART• Establecer pines GPIO Rx y Tx de cada UART• Configurarlos los pines como UART• Configurar la velocidad de transmision de cadaUART• Se verifica el buffer en la direccion de cadaUART• Se obteniene el dato que hay en cada UART• Abrir ciclo while• Se Verifica si hay datos disponibles en ladireccion de UART• Enviar datos en las direcciones de cada UARTcon lo que hayan obtenido

D. Programacion de la practica

TRANSMISORComo en el algoritmo seguimos los pasos primero que nadaajustamos el reloj para que se ejecute desde el cristal.Habilitamos los perifericos de cada UART poniendo lapalabra UARTx (x el numero de UART), habilitamoslos puertos correspondientes de las UART’s habilitamospuerto ”A” para UART0, puerto “B” para UART1,puerto “C” para UART3, puerto “E” para UART 5 y 7.

Fig.7 Configuracion de perifericos y puertos UART.

Establecemos los pines de UART0 PA0(RX) yPA1(TX) y los establecemos como tipo UARTa este y todos los pines, establecemos los pinesde UART1 PB0(RX) y PB1(TX), establece-mos los pines de UART3 PC6(RX) y PC7(TX)

Establecemos los pines de UART5 E4(RX) y E5(TX),establecemos los pines de UART7 E0(RX) y E1(TX).En el caso de UART1, UART3, UART5, UART7 con-figuramos la resistencias pull-up para que se habiliten.

Fig.8 Configuracion de pines y resistencias pull-up UART

Configuramos la velocidad de transmision de datos a9600 baudios establecemos nuestros bits de paridad y deparada en cada direccion de UART.

Fig.9 Configuracion de velocidad de transmision de datos UART

Dentro de un ciclo while(1) enviamos caracterescon una funcion de la UART estableciendo la di-reccion base de la uart y caracter que enviaremosde cualquier tipo hexadecimal, char, decimal, etc.

Fig.10 Enviar caracteres a cada UART

RECEPTORComo en el algoritmo seguimos los pasos primero quenada ajustamos el reloj para que se ejecute desde el cristal.

Se Verifica si hay datos disponibles en la direccion deUART, Enviar datos en las direcciones de cada UARTcon lo que hayan obtenido.

Habilitamos los perifericos de cada UART poniendola palabra UARTx (x el numero de UART), habilitamos

Page 5: Comunicación Serial Asíncrona con el Stellaris

los puertos correspondientes de las UART’s habilitamospuerto ”A” para UART0, puerto “B” para UART1, puerto“C” para UART3, puerto “E” para UART 5 y 7.

Establecemos los pines de UART0 PA0(RX) y PA1(TX)y los establecemos como tipo UART a este y todos lospines, establecemos los pines de UART1 PB0(RX) yPB1(TX), establecemos los pines de UART3 PC6(RX)y PC7(TX), establecemos los pines de UART5 E4(RX)y E5(TX), establecemos los pines de UART7 E0(RX) yE1(TX). En el caso de UART1, UART3, UART5, UART7configuramos la resistencias pull-up para que se habiliten.

Configuramos la velocidad de transmision de datos a9600 baudios establecemos nuestros bits de paridad y deparada en cada direccion de UART.

Verificamos si hay algo en el buffer que sera el caracterque escribamos en el teclado. Dentro de un ciclo while(1)hacemos condiciones donde verificaremos si hay o no datosdisponibles en la UART si hay un dato lo obtenemos (eldato obtenido sera lo que se escriba en el teclado) una vezobtenido el dato lo enviamos a la direccion base de lasUART’s sumando una unidad para poder ver el cambio.

Fig.11 Recepcion de datos por la UART.

E. Pruebas y Resultados

Ya que en la hyperterminal solo podemos visualizarlo que tenemos en UART0 lo que hacemos en puentearUART1 a UART0 para ver como se transmite el dato.

Fig.12 Puente de UART1 a UART0

Fig.13 Prueba transmision UART1 en la hyperterminal

Para la prueba del receptor utilizaremos el transmisorcomo se muestra en la Fig. 10 por la UART3 envıa uncaracter decimal 67 pero en la tabla de ASCII el 67 en tipochar es igual a ‘C’ en la hyperterminal solo podemos visu-alizarlo ası, enviamos este caracter de UART3 a el Stellarisreceptor por la UART0 ahı podremos ver la C.

Page 6: Comunicación Serial Asíncrona con el Stellaris

Fig.14 Puente transmisor UART3 a receptor UART0

Como se muestra en la Fig. 11 el receptor UART1le suma uno al dato obtenido, es decir, que el da-to que transmite UART3 esta en 67 decimal en-tonces al recibir UART1 le suma 1 siendo ası 68decimal y esto en codigo ASCII es ‘D’ entoncesen la hyperterminal visualizaremos el caracter ‘D’.

Fig.15 Puente transmisor UART3 a receptor UART1

Fig.16 Receptor en la hyperterminal

IV. CONCLUSIONES

El proposito de la practica se alcanzo, la comunicacionserial asıncrona se obtuvo con exito comprendiendo a lolargo de la practica como enviar y recibir caracteres en laUART, ademas de que se configuran mas UART’s paraenviar y transmitir no solamente con la UART0.

Referencias

[1] Stellaris LM4F120H5QR Microcontroller, Data Sheet Texas In-struments Incorporated, 108 Wild Basin, Suite 350 Austin, TX78746

[2] Stellaris peripheral driver library, User’s Guide, Texas Instru-ments Incorporated, 108 Wild Basin, Suite 350 Austin, TX 78746

[3] http://e2e.ti.com/support/microcontrollers/stellaris arm/f/471/t/185704.aspx

[4] http://jmnlab.com/usart/usart.htmlhttp://jmnlab.com/usart/usart.html

[5] http://www.tecnotopia.com.mx/mecatronica/ puertoserialasin-crono.htm

[6] http://www.ti.com/ww/en/launchpad/stellaris head.html

[7] http://www.ti.com/lit/an/spma017/spma017.pdf

[8] http://www.bluesock.org/ willg/dev/ascii.html

[9] http://www.ti.com/tool/ek-lm4f120xl