Sunteți pe pagina 1din 65

GuadelUsuario DigitalSignalProcessorDSP.

Revisin Octubre 2008

Desarrolladapor:

AndrsOyarce aoyarce@olimex.cl Revisadapor:

PaulAguayo IvanSarmiento IngenieraMCILTDA.

GuadelUsuarioDigitalSignalProcessor

Nota:

Todos los ejemplos de esta gua fueron desarrollados y probados especialmente para el DSP TMS320 F28016, utilizando la placa de desarrollo creada por OLIMEX (TMS320-P280161). Por lo tanto, los proyectos, sugerencias y comentarios pueden no necesariamente funcionar en otros modelos DSP. Para aprovechar mejor esta gua, se recomienda al lector tener conocimientos bsicos de programacin en C/C++ (struct, funciones, main(), #define, etc.) y de microcontroladores y perifricos (direccionamiento, registros, interrupciones, etc.). La informacin entregada en esta gua es referencial y es suficiente para tener un concepto general del modo de uso de un DSP. En ningn caso representa una gua completa sobre cmo utilizar cualquier elemento del mismo. Para mayor detalle descargar la documentacin desde www.ti.com o las guas ms importantes y proyectos de ejemplo desde www.olimex.cl en la seccin Tarjetas Olimex->DSP. Cualquier sugerencia hacerla al autor del documento a la direccin aoyarce@olimex.cl o en la pgina de OLIMEX.

http://www.olimex.cl/product_info.php?cPath=47_82&products_id=410 Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

GuadelUsuarioDigitalSignalProcessor

Tabla de Contenidos.
1 2 Introduccin. ................................................................................................................... 7 Detalles tcnicos. ............................................................................................................ 9 2.1 Procesador DSP. ..................................................................................................... 9 2.2 Tarjeta de Desarrollo para el DSP. ....................................................................... 14 Programacin. ............................................................................................................... 17 3.1 Flujo de un programa............................................................................................ 17 3.2 CodeComposer Studio. ......................................................................................... 18 3.2.1 Caractersticas............................................................................................... 19 3.3 Cmo Programar? Hola Mundo! ........................................................................ 20 3.3.1 Instalacin y Configuracin CCS. ................................................................ 20 3.4 Blinking Led. ........................................................................................................ 24 3.5 Debuggear............................................................................................................. 29 3.5.1 Escribir datos en un Archivo de Salida ........................................................ 35 3.5.2 Leer Datos en un Archivo de Salida ............................................................. 37 3.5.3 Graficar datos en tiempo real........................................................................ 37 3.6 Conversor ADC. ................................................................................................... 40 3.7 Uso de Archivos GEL .......................................................................................... 45 3.8 Ejemplo Echo Back usando SCI........................................................................... 48 Ejemplo......................................................................................................................... 50 4.1 Cmo crear un nuevo Proyecto? ......................................................................... 50 4.2 Uso de librera FFT y otras modificaciones. ........................................................ 55 4.3 Filtrado de Seales. .............................................................................................. 60 Resumen Atajos Teclado. ............................................................................................. 64 Manuales de Referencia de TI.COM ............................................................................ 65

5 6

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

GuadelUsuarioDigitalSignalProcessor

ndice de Figuras.
Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura 1-1 Esquema del uso de un DSP. ............................................................................... 7 2-1 Mapa de memoria del DSP. ............................................................................... 11 2-2 Diagrama de bloques del DSP. .......................................................................... 13 2-3 Tarjeta de desarrollo para el DSP TMS320 F28016. ......................................... 14 2-4 Esquemtico de la tarjeta de desarrollo TMS320 F28016. ................................ 15 3-1 Flujo de un Programa Tipo. ............................................................................... 17 3-2 Seleccin de Configuracin de la Tarjeta. Emulador XDS100. ........................ 21 3-3 Nombre de la Conexin. .................................................................................... 22 3-4 Eleccin de modelo del DSP. ............................................................................ 22 3-5 Propiedades del Procesador. .............................................................................. 23 3-6 Presionar el Botn Save & Quit......................................................................... 23 3-7 Botones para Compilar. ..................................................................................... 24 3-8 Placa Conectada o no Conectada. ...................................................................... 25 3-9 Cargar un Programa. .......................................................................................... 25 3-10 Modo de Booteo del ejemplo. M0 SARAM. ................................................... 26 3-11 Cambio valor BLINK_TIME. ......................................................................... 27 3-12 Cambio para apagar el LED al presionar el botn. .......................................... 27 3-13 Colocacin de un Breakpoint........................................................................... 29 3-14 Valor de una variable en tiempo de ejecucin. ................................................ 30 3-15 Step-over (F10) y Step-into (F11). .................................................................. 30 3-16 Watch Window. ............................................................................................... 31 3-17 Agregar variables Globales.............................................................................. 33 3-18 Eleccin de Variables Globales. ...................................................................... 34 3-19 Parte del esquemtico de la tarjeta. Botn de GPIO 9. .................................... 34 3-20 Administrador de Breakpoints. ........................................................................ 35 3-21 Men contextual de Action. ............................................................................. 35 3-22 Parmetros para escribir datos en un archivo. ................................................. 36 3-23 Indicador de largo de las variables. ................................................................. 36 3-24 Leer datos desde un archivo............................................................................. 37 3-25 Parmetros para graficar una seal. ................................................................. 38 3-26 Grfico realizado con los datos. ....................................................................... 39 3-27 Diagrama de Bloques del ADC. ...................................................................... 41 3-28 Diagrama Simple del Bloque ADC. ................................................................ 42 3-29 Trimmer AN_TR, botn GPIO9 y Led GPI11. ............................................... 43 3-30 Ejemplo Conversor ADC. ................................................................................ 44 3-31 Men desplegable para archivo GEL............................................................... 46 3-32 Programa EchoBack con Hyperterminal. ........................................................ 49 4-1 Creacin de un proyecto. ................................................................................... 50 4-2 Guardar Cdigo Fuente...................................................................................... 51 4-3 Opciones par incluir archivos de cabecera. ....................................................... 52 4-4 Carpetas del proyecto. ....................................................................................... 53 4-5 Configuracin Build_Option. ............................................................................ 54
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

GuadelUsuarioDigitalSignalProcessor

Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura Figura

4-6 Configuracin de botones. ................................................................................. 55 4-7 Funcin Gpio_Select(). ...................................................................................... 56 4-8 Inclusin de libreras usando o <>. ............................................................... 56 4-9 Forma de incluir una librera al CCS. ................................................................ 57 4-10 Cdigo bsico para utilizar la FFT. ................................................................. 58 4-11 Funciones disponibles para la FFT. ................................................................. 59 4-12 Comand Linker de ejemplo para ocupar la librera FFT. ................................ 60 4-13 Comand Linker mnimo para librera FFT. ..................................................... 60 4-14 Esquema de un Filtro FIR. ............................................................................... 61 4-15 Ejemplo cdigo para Historial. ........................................................................ 62 4-16 Macro para definir filtro. ................................................................................. 62 4-17 Cdigo para Convolucin. ............................................................................... 62

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

GuadelUsuarioDigitalSignalProcessor

ndice de Tablas.
Tabla 3-1 Configuracin Jumpers para Booteo. ................................................................... 26 Tabla 3-2 Archivos principales de un proyecto. ................................................................... 28 Tabla 3-3 Funciones GEL disponibles. ................................................................................ 47 Tabla 5-1 Tabla resmen de atajos. ...................................................................................... 64

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

GuadelUsuarioDigitalSignalProcessor

1 Introduccin.
Un DSP o Digital Signal Processor (Procesador Digital de Seales) es un microprocesador especializado en el anlisis de seales en tiempo real. Se caracteriza por poseer un set de instrucciones que permiten manejar de manera eficiente el procesado de una seal.

Figura 1-1 Esquema del uso de un DSP.

Todo el diseo de un DSP se basa en el manejo eficiente de una seal digitalizada, ya que debido a la latencia tpica de cualquier procesador, la operacin matemtica debe hacerse en un tiempo acotado, para que se pueda trabajar en tiempo real. Cuando se convierte una seal analgica en digital, sta es muestreada cada cierto intervalo, por lo que cualquier operacin matemtica debe hacerse entre muestras, es decir, una vez que llegue una muestra se debe realizar la operacin y debe estar lista antes de que llegue la otra. Un DSP proporciona una rapidez y baja latencia, que permite el procesado de seales en tiempo real, y an as siendo una herramienta de bajo consumo.

Entre las aplicaciones que ms utilizan un DSP se encuentran: mbito industrial (automatizacin, control, bombas, compresin, robtica, etc.). Automotriz (direccin electrnica, sensado de presin de torque y de inercia, sensor de colisin, etc.). Digital (AC/DC, UPS, DC/AC, displays LCD, etc.). Sensado Avanzado (RFID, medicin ptica, lector de cdigo de barras, sensado y anlisis mdico, medidor de flujo, control de pantallas Touch Screen, efectos de audio y control retroalimentado, etc.). Control de motores (fase simple, trifsicos, induccin AC, Brushless DC, etc.).

Las herramientas mnimas necesarias para comenzar a trabajar con el DSP son: el hardware, que consta de la placa de desarrollo fabricada por OLIMEX la TMS320 P28016 y el conector TMS320-JTAG para programar la tarjeta; y el software, que consta del Code Composer Studio (CCS) el cual es un IDE que permite programar, compilar y debuggear los programas realizados para el DSP. La tarjeta de OLIMEX adems necesita de un driver

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

GuadelUsuarioDigitalSignalProcessor

que se instala en el CCS. Todo lo anterior se encuentra disponible en la pgina de Ingeniera MCI LTDA2 junto a todo lo necesario para su utilizacin. Esta gua constar de varios captulos referentes a un DSP, pero se trabajar en detalle con la tarjeta de desarrollo del TSM320 P280163. Se explicar a grandes rasgos la arquitectura de un DSP y del esquemtico de la tarjeta. Adems se mostrarn algunos ejemplos prcticos para el uso de esta tarjeta y una ayuda bsica para el uso de la herramienta Code Componer Studio (CCS) de Texas Instrument. De ahora en adelante, toda referencia a la palabra DSP, ser para el modelo TMS32028016 utilizado en la placa de desarrollo TSM320 P28016.

2 3

www.olimex.cl http://www.olimex.cl/product_info.php?cPath=47_82&products_id=410 Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

GuadelUsuarioDigitalSignalProcessor

2 Detalles tcnicos.
Se mostrarn las caractersticas ms importantes tanto del procesador del DSP como de la tarjeta de desarrollo.

2.1 Procesador DSP.


El procesador del DSP es el TMS320F28016 y posee las siguientes caractersticas: Tecnologa esttica CMOS de altas-prestaciones (velocidad de reloj se ajusta con un PLL interno usado como multiplicador): o 100 MHz (10 ns tiempo de ciclo). Ciclo de trabajo avanzado. o 60 MHz (16.67 ns tiempo de ciclo). Ciclo de trabajo Normal. o Diseo de bajo consumo (1.8 V en el ncleo, 3.3 V I/O). CPU de 32-bit de altas prestaciones (TMS320C28x) o 16x16 y 32x32 operaciones MAC (permite multiplicar en un slo ciclo dos nmeros de 16 bit o dos de 32). o 16x16 Dual MAC (multiplica dos nmeros de 16 bit y luego otros, todo en el mismo ciclo). o Arquitectura de Bus Harvard (buses separados para memoria de datos y memoria de programa). o Operaciones atmicas (lee y escribe en el mismo bus de operaciones, esto evita que se acceda a la memoria por error). o Rpida respuesta a interrupciones y procesamiento. o Modelo unificado de programacin de memoria. o Codigo-Eficiente (en C/C++ y Ensamblador). Memoria en el Chip o 16Kx16 Flash, 6Kx16 SARAM (Single Access RAM permite slo un acceso en un slo ciclo de instruccin). 16Kx16 significa que posee de memoria de 16 Kword (Word = 2 bytes) que se accede en bloques de 16 bits por cada ciclo de instruccin) o 1Kx16 OTP ROM (one-time programable ROM - memoria que se programa slo una vez). Boot ROM (4Kx16) memoria para cdigo que el DSP lee al reiniciarse. Contiene las configuraciones iniciales. o Con modos de boteo por Software (via SCI, SPI, CAN, I2C, y I/O paralelo). o Tablas matemticas estndar. Control de Sistema y Reloj. o Soporta cambios dinmicos en el radio PLL. o Oscilador dentro del Chip. o Mdulo Watchdog Timer (reinicia el DSP cuando este timer se completa).

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

10

GuadelUsuarioDigitalSignalProcessor

Cualquier pin GPIO A, (General propose I/O) puede ser conectado a uno de las tres interrupciones externas del ncleo. Bloques PIE (peripheral Interrupt Expansion) que soportan todas las 43 interrupciones de perifricos. Llave/Bloqueo de Seguridad de 128-bit. o Protege bloques Flash/OTP/L0/L1. o Previene Firmware de ingeniera inversa. Tres CPU-timers de 32 bits. Control de perifricos mejorado o 8 salidas PWM, donde 4 son HRPWM con resolucin de 150 ps MEP. o 2 entradas de capturas. o 3 timer de 32 bits. Perifricos de puerto serial. o Mdulo SPI. o Mdulo SCI (UART). o Mdulo CAN. o Bus I2C (Inter-Integrated-Circuit). Conversores ADC de 12 bit, 16 canales. o Canales 2x8 entrada multiplexor. o Dos Sample-and-Hold (muestrea y retiene). o Conversin Simple/Simultnea. o Rpida tasa de Conversin: 267 ns 3.75 MSPS. o Referencia externa o interna para comparar en el conversor. Hasta 35 pines GPIO programables individualmente, Multiplexadas con filtro de entrada. Avanzadas caractersticas de emulacin o Funciones de anlisis y Breakpoint. o Debugeo en Tiempo real via Hardware. Soporte de desarrollo incluye o ANSI Compilador C/C++/Enamblador/Linker o CodeComposer Studio IDE. o DSP/BIOS. o Control Digital de Motor y Libreras de Software digital de potencia. Modo de bajo consumo y Ahorro de energa. o Soporta los modos IDLE, STANDBY y HALT. o Deshabilita individualmente los relojes de perifricos. El mapa de memoria se compone de lo siguiente:

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

11

GuadelUsuarioDigitalSignalProcessor

Figura 2-1 Mapa de memoria del DSP. Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

12

GuadelUsuarioDigitalSignalProcessor

El mapa muestra las direcciones de memoria que el DSP es capaz de direccionar, as como tambin la distribucin de la misma, es decir, qu direccin ocupan los diferentes dispositivos destinados a funciones diferentes. Se observa que el bus de datos es de 32 bit, esto se nota en el largo de las direcciones que logra acceder el DSP, ya que si el mximo fuera hasta FF, entonces el bus sera de 8 bit. Debido a la arquitectura Harvard, el espacio de memoria de programa y de datos se encuentran separados utilizando un bus independiente para cada memoria. Esto permite que mientras se accede a un espacio de memoria de programa, sea posible acceder a la memoria de datos al mismo tiempo, es decir, es posible acceder a ellos casi al mismo tiempo.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

13

GuadelUsuarioDigitalSignalProcessor

El diagrama de bloques del DSP se compone de lo siguiente:

Figura 2-2 Diagrama de bloques del DSP.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

14

GuadelUsuarioDigitalSignalProcessor

2.2 Tarjeta de Desarrollo para el DSP.


La tarjeta de desarrollo y sus mdulos principales se muestran en la siguiente figura:

Figura 2-3 Tarjeta de desarrollo para el DSP TMS320 F28016.

El esquemtico de la tarjeta se muestra a continuacin:

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

15

GuadelUsuarioDigitalSignalProcessor

Figura 2-4 Esquemtico de la tarjeta de desarrollo TMS320 F28016. Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

16

GuadelUsuarioDigitalSignalProcessor

Las principales caractersticas que posee la tarjeta son: MCU: TMS320F28016 32KB Flash, 12KB RAM, 3.75 MPSP 2x8 Canales ADC, 8 PWM, CAN, SPI, RS232, I2C. Conector JTAG. Conversor USB-to-RS232 permite alimentar la tarjeta y adems conectarse a la mayora de notebooks sin la necesidad de un puerto serial RS232. Conector CAN y driver. Conector UEXT con SPI, RS232 y I2C para conectar a otros mdulos OLIMEX. Conector para control de Motor. Botn de usuario. Potencimetro Trimmer conectado a entrada analgica. LED indicador de alimentacin. LED indicador de estado del usuario. Botn RST (Reset). Conector Jack para alimentacin AC o DC externa. Regulador de Voltaje ms filtro capacitivo en la fuente de poder. Headers de extensin para cada pin del DSP. rea de prototipo paso de 0.1 con bus GND y VCC. PCB: FR-4, 1.5 mm. Dimensiones 100x80 mm.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

17

GuadelUsuarioDigitalSignalProcessor

3 Programacin.
Este captulo mostrar la forma de programar el DSP. Se explicar cmo utilizar los perifricos de la placa adems de indicar las herramientas ms tiles para crear un programa complejo como por ejemplo el CodeComposer Studio (CCS), el administrador de recursos (memoria) y el Debugger.

3.1 Flujo de un programa


Un programa cualquiera requiere algunas configuraciones mnimas para poder funcionar. stas pasan por estados definidos para mantener un orden y para que no permitan configurar errneamente la tarjeta. La siguiente figura muestra este proceso:

Figura 3-1 Flujo de un Programa Tipo. Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

18

GuadelUsuarioDigitalSignalProcessor

Partiendo del Reset, se inicia un cdigo de programa que indica el espacio de memoria que contiene la primera instruccin. Esta secuencia es la llamada Secuencia de Boteo. Posteriormente viene el CodeStartBranch que es usado para redirigir desde el boteo a la rutina C init. ste puede ser configurado para deshabilitar el timer WatchDog si es que ste sobrepasa el lmite dado antes de que se ejecute main(). El CodeStartBranch es asignado a la seccin BEGIN por el linker. Luego viene la rutina C init la cual posee el archivo de boteo del compilador el cual es automticamente incluido en la librera en tiempo de ejecucin. Posteriormente en la funcin main() (Initialize System Control), se inicializa el sistema de control, se encienden los relojes de los perifricos y se ajustan las escalas de stos. Adems se puede deshabilitar el WatchDog Timer. Se configuran los pines de propsito general GPIO (Initialize GPIO) para las funciones perifricas o como entrada/salida. Se inicializa completamente el PIE Vector Table con punteros al Servicio de Rutina de Interrupciones (ISR) que se encuentran en DSP280x_DefaultIsr.c. Es til para propsitos de debugeo tener inicializada esta tabla, incluso si no se va a utilizar el ISR. Antes de comenzar el main() con lo requerido por el usuario, faltara inicializar los perifricos requeridos para el proyecto deseado. Esto es, configurar los bits segn la forma en que se utilizarn las funciones de los pines GPIO. Finalmente se deben habilitar las interrupciones PIE y CPU requeridas por el programa, as como cualquier cdigo adicional.

3.2 CodeComposer Studio.


Code Composer Studio (CCS) es un IDE (Integrated Development Environment), es decir, un ambiente de desarrollo integrado para programar los DSP de Texas Instruments. CCS entrega todas las herramientas necesarias para soporte de software en tiempo real para el DSP TSM320. CCS permite un manejo rpido y sencillo para moverse en todas las fases del proceso de diseo de una aplicacin, incluyendo cdigo y compilacin, debug, anlisis y afinamiento. En lo siguiente se explicar lo bsico para poder comenzar a utilizar el CCS y crear aplicaciones simples, que sern la base para programas ms complejos posteriores. Es posible bajar una versin de prueba del CCS en este link4, o directamente de la pgina oficial www.ti.com. Luego para poder utilizar esta versin con la tarjeta de desarrollo de OLIMEX, se debe bajar una actualizacin llamada XDS100 la cual puede ser descargada de OLIMEX desde aqu5. Entre las principales propiedades del CCS se encuentran las siguientes:

http://dl-www.ti.com/lit/ml/sprc119d/sprc119d.zip 500MB aprox. Version de prueba de 120 dias. http://www.olimex.cl/soft/DSP/XDS100pp_Beta2.exe Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

19

GuadelUsuarioDigitalSignalProcessor

Algoritmo TMS320 DSP estndar. Familiar y fcil de usar IDE con editor CodeWright integrado. Kernel DSP/BIOS escalable en tiempo real y herramientas de configuracin. Herramientas para generacin de cdigo en lenguajes C/C++/Assembly. Debuggeador de cdigo fuente con anlisis en tiempo real. Variedad de simuladores preconfigurados y tarjetas para todas las plataformas. Variedad de Guas Rpidas. o Tutoriales para comenzar con el IDE CCStudio, Code Tuning, DSP BIOS, RTDX y emulacin en tiempo real. o Cdigos de ejemplo y librerias. Soporte para TMS320C2000, TMS320C5000 (incluyendo los procesadores OMAP), y TMS320C6000 (incluyendo procesadores the DaVinci ).

3.2.1 Caractersticas.
Entre las caractersticas que posee el ambiente de desarrollo de CCS se encuentran las herramientas de trabajo que mejoran el tiempo de trabajo para desarrollo de software y optimizan el funcionamiento para todas las aplicaciones DSP en tiempo real. Las herramientas ms importantes del Code Composer Studio incluyen:

Herramientas para generacin de cdigo DSP TMS320: compilador C/C++, ensamblador y linkeador. Viene con Visual Proyect Manager con interfaz de control de cdigo y soporte para multiproyectos que permite manejar sobre 100 archivos. Configuracin Drag and Drop CCStudio que soporta: o Drivers XDS560 de emulacin de alta velocidad. o Drivers XDS510 de emulacin. o Simuladores para todos los dispositivos, solo para CPU y CPU ms memoria para funcionamiento ptimo. o Opciones de definicin configurable para tarjetas. Editor CodeWright totalmente integrado. Administrador de components soporta multiples versions de DSP/BIOS y de herramientas de generacin de cdigo dentro del IDE. Debugger posee las siguientes propiedades: o Debug Rewind: Retrocede en la simulacin. o Simples breakpoints. o Breakpoints avanzados y de Hardware. o Puntos de prueba para inyeccin/extraccin de datos. o Navegador para Smbolos y Watch Windows avanzado. o Administrador unificado de Breakpoints para configurar y administrar breakpoints por software y hardware desde una sola y simple interfaz. Connect/Disconnect; conexin robusta y resilente entre el cliente y la tarjeta.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

20

GuadelUsuarioDigitalSignalProcessor

Transmitidor de datos RTDX para intercambio en tiempo real entre la tarjeta y el cliente. Un sin nmero de guas y cdigos de ejemplo para hardware y software. Adems de tutoriales y manuales.

El software Code Composer Studio adems incluye:

DSP/BIOS Kernel para el TMS320 DSPs o Multihebras previamente vacas. o Comunicacin entre hebras (threads). o Manejo de Interrupcin. Algorimos estndar TMS320 DSP para poder volver a usar el software. Soporte de libreras para el Chip con el fin de simplificar la configuracin del dispositivo. Libreras DSP para optimizar las funcionalidades del DSP.

3.3 Cmo Programar? Hola Mundo!


3.3.1 Instalacin y Configuracin CCS.
A continuacin se explicar la configuracin bsica necesaria para el CCS. EL CCS se puede descargar desde la pgina www.ti.com, o directamente en el siguiente link6, donde luego de instalarlo aparecern dos conos. Dependiendo de la versin el nombre podra cambiar. Para la versin actual 3.3 ser CCStudio v3.3 y Setup CCStudio v3.3. El primero corresponde al CCS en s, mientras que el otro se debe correr antes de empezar cualquier proyecto. Este programa se encarga de la configuracin bsica del DSP as como tambin de sus libreras. Para el correcto funcionamiento con la placa, se debe actualizar la versin del CCS con el ltimo Service Pack disponible en la pgina de Texas Instruments, luego bajar el driver XDS100 que se puede descargar desde el siguiente link7 o desde la pgina de www.olimex.cl. Este ltimo se encarga de emular la tarjeta a travs del JTAG de la tarjeta con el puerto paralelo del PC y ste a la vez con el CCS. Sin embargo varias de las capacidades del CCS no son compatibles usando este driver, entre ellas:

6 7

http://dl-www.ti.com/lit/ml/sprc119d/sprc119d.zip 500MB aprox versin de prueba de 120 dias. http://www.olimex.cl/soft/DSP/XDS100pp_Beta2.exe Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

21

GuadelUsuarioDigitalSignalProcessor

Es ms lento que otras versiones como las XDS510 o XDS560 que utilizan el JTAG en vez del puerto USB. Carece de soporte por hardware para adaptative clocking. Carece de RTDX (Real Time Data Exchange) y HSRTDX (High Speed RTDX). Carece de soporte por hardware para reloj TCLKR externo. Carece de soporte para deteccin en caso de quiebre del cable en donde lo interprete como prdidad de poder de la tarjeta.

Una vez instalado todo lo anterior se ejecuta Setup CCStudio v3.3 donde aparecer a siguiente ventana:

Figura 3-2 Seleccin de Configuracin de la Tarjeta. Emulador XDS100.

Seleccionar Create Board y luego elegir la conexin TIXDS100pp Emulator y presionar el botn ADD. En la siguiente ventana escribir un nombre arbitrariamente presionar el botn NEXT y luego FINISH. Esto ltimo se muestra en la siguiente ventana:

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

22

GuadelUsuarioDigitalSignalProcessor

Figura 3-3 Nombre de la Conexin.

Luego se marca la tarjeta creada y se escoge la tarjeta DSP modelo TSM320C2800 y se agrega a la conexin, tal como se muestra en la siguiente figura:

Figura 3-4 Eleccin de modelo del DSP. Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

23

GuadelUsuarioDigitalSignalProcessor

Para agregarla simplemente se presiona el botn ADD y aparecer la siguiente ventana:

Figura 3-5 Propiedades del Procesador.

Posteriormente se presiona OK y se guarda desde el panel de configuraciones en la barra de herramientas o presionando el botn Save & Quit. Luego de ello, el CCS se iniciar automticamente.

Figura 3-6 Presionar el Botn Save & Quit.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

24

GuadelUsuarioDigitalSignalProcessor

3.4 Blinking Led.


Para probar el correcto funcionamiento, se corrern algunos de los proyectos de ejemplo. Descargar el ejemplo Blinking_LED desde la pgina de OLIMEX y abrir el proyecto en el CCS. Para esto ir a Project->Open y buscar el archivo con el nombre Blinking_LED.pjt, luego presionar el botn Open. Primero que nada se debe compilar el programa. Para esto se debe presionar el botn sealado en la siguiente figura como Compilar todo o por medio de la barra de herramientas en Project->Rebuild All. Esta accin compilar todos los archivos, incluso aquellos referenciados desde el archivo principal (main).

Figura 3-7 Botones para Compilar.

El botn Compilar, compilar slo los archivos que se hayan modificado desde la ltima vez que se compil, si no se ha modificado ningn archivo, entonces no se compilar nada. Se puede usar tambin desde la barra de herramientas en Project->Build o simplemente presionando F7. El botn compilar todo mencionado anteriormente fuerza a que se compilen todos los archivos del proyecto, estn o no modificados. Una vez compilado el proyecto y sin errores, se procede a cargar el programa a la tarjeta. Se conecta la placa al PC por medio del JTAG (para compilar no es necesario que la placa est conectada) y luego se alimenta la placa con una fuente continua de 6 a 9 V o usando el puerto USB. Posteriormente se ingresa a Debug->Connect o se presiona Alt+C para que el CCS reconozca la placa. Si est todo bien, aparecer el mensaje Connected y luego Halted en la esquina inferior izquierda del CCS lo que indicar que se reconoci correctamente, de lo contrario aparecer un error y el mensaje Disconnected.
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

25

GuadelUsuarioDigitalSignalProcessor

Figura 3-8 Placa Conectada o no Conectada.

Cuando la placa se encuentre conectada y reconocida, se procede a cargar el programa. Al momento de crear un proyecto, automticamente se crea una carpeta llamada Debug, que es la que contiene el cdigo final del programa que ser cargado en la tarjeta. El archivo creado as, tiene el mismo nombre que el proyecto pero con la extensin *.OUT. Para cargar el programa se debe ingresar en File->Load Program o simplemente presionar CTRL+L. Dentro de la carpeta del proyecto, aparecer una llamada Debug, y dentro de ella un archivo llamado Blinking_Led.out. Seleccionarlo y presionar Open y CCS comenzar automticamente a cargar el programa en la tarjeta. Para poder realizar lo anterior, CCS debe haber reconocido previamente la tarjeta y debe mostrar el mensaje Connected (muestra Halted una vez conectado que es algo as como Pausado). Lo anterior se ver segn la siguiente figura:

Figura 3-9 Cargar un Programa.

Una vez que el programa ha sido cargado correctamente, es posible ejecutarlo. Para esto se debe ingresar a Debug->Run o simplemente presionar F5 e inmediatamente el programa comenzar a funcionar. Para esto la tarjeta debe permanecer conectada al PC por medio del JTAG y alimentada correctamente. Adems los jumper de configuracin deben ser los adecuados. Esto de indica en lo siguiente. Si se desea que la tarjeta ejecute el programa al reiniciarse sin la necesidad de hacerlo mediante el JTAG, es necesario guardar el cdigo del programa en la memoria FLASH, ya que la otra memoria es voltil, razn por la cual se pierde el programa al quitar
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

26

GuadelUsuarioDigitalSignalProcessor

la alimentacin de la placa. Adems se debe configurar correctamente los jumpers. stos, se indican mediante la etiqueta boot (autoarranque) en la Figura 2-3. La configuracin de stos se muestra en la siguiente tabla. Ms adelante se explicar en detalle cmo hacer esto.
Modo de Booteo
FLASH/ROM SCI-A SPI-A I2C e-CAN-A M0 SARAM OTP I/O paralelo

Descripcin
Salta a la direccin 0x33 7FF6 de la FLASH/ROM. Carga un Stream de datos desde la SCI-A. Carga la data desde una memoria serial EEPROM externa mediante SPI usando SPI-A. Carga la data desde una EEPROM externa, en la direccin 0x50 del bus I2C. Llama al CAN_BOOT para cargar desde la bandeja de entrada 1 del eCAN-A. Salta a la direccin 0x00 0000 de M0 SARAM. Salta a la direccin 0x3D 7800 de la memoria OTP. Carga la data desde GPIO0-GPIO15.

GPIO18
1 1 1 1 0 0 0 0

GPIO29
1 1 0 0 1 1 0 0

GPIO34
1 0 1 0 1 0 1 0

Tabla 3-1 Configuracin Jumpers para Booteo.

La configuracin del ejemplo Blinking_LED requiere que la tarjeta se encuentre en el modo de booteo M0 SARAM. Este modo se ilustra en la siguiente figura:

Figura 3-10 Modo de Booteo del ejemplo. M0 SARAM.

La funcionalidad el programa consiste en hacer parpadear un LED que se encuentra conectado al pin 70 (GPIO 11). El parpadeo se produce cada medio segundo, tiempo que est determinado por la variable BLINK_TIME dentro de la cabecera del cdigo. Adems cada vez que el botn de la placa es presionado (conectado al pin 61, GPIO 9) el LED se enciende y se mantiene as por el tiempo que dure presionado el botn. Cuando se suelta, el LED sigue parpadeando.
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

27

GuadelUsuarioDigitalSignalProcessor

Por ejemplo si se desea cambiar el tiempo de parpadeo se cambia el valor 500000 dado a la variable BLINK_TIME por otro elegido arbitrariamente. Si se coloca 1000000 el parpadeo se realizar cada un segundo, ya que la variable se encuentre medida en [useg]. Luego se cambia el valor del botn para que apague el LED cada vez que se presiona en vez de encenderlo. Estos cambios se muestran en las siguientes figuras:

Figura 3-11 Cambio valor BLINK_TIME.

Figura 3-12 Cambio para apagar el LED al presionar el botn.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

28

GuadelUsuarioDigitalSignalProcessor

Al realizar estos cambios, luego compilar (F7) y finalmente ejecutar el programa (F5), se notar que el led ahora parpadear cada un segundo, y que ahora cuando se presione el botn el led se apagar en vez de encenderse. Para detener un programa se debe presionar Debug->Halt (Shift+F5) o cual har que el programa se pause. Para volver a ejecutarlo desde el principio se debe presionar Debug->Restart (CTRL+Shift+F5). Para reiniciar el emulador se debe ingresar Debug>Reset Emulator (CTRL+Shift+R). Entre los archivos principales que se observan en la Figura 3-12 se tienen: Nombre Archivo Blinking_LED_main.c DSP280x_CodeStartBranch.asm DSP280x_CpuTimers.c DSP280x_DefaultIsr.c DSP280x_GlobalVariableDefs.c DSP280x_PieCtrl.c DSP280x_PieVector.c DSP280x_SysCtrl.c 28016_RAM_lnk_cmd Descripcin Cdigo Fuente especfico del Ejemplo. Cdigo fuente comn (compartido). Contienen funciones genricas para configurar los perifricos a un estado definido o funciones que se podran reutilizar en diferentes aplicaciones. Archivo requerido para utilizar los archivos de cabecera (Header Files). Cdigo Fuente compartido. Se utiliza para ajustar y configurar algunos perifricos. Permite asignar secciones a los bloques de memoria especficos de un dispositivo. Archivo linker requerido por los archivos de cabecera especficos de los perifricos. Asigna una seccin de datos de los registros de los perifricos a una apropiada locacin de memoria.

DSP280x_Headers_nonBIOS.cmd

Tabla 3-2 Archivos principales de un proyecto.

Entre las carpetas mencionadas en la misma figura se encuentra la carpeta Include que contiene todos los archivos de cabecera que sern incluidos en el proyecto (generalmente de extensin *.h), esto es, los archivos incluidos en el cdigo fuente del usuario (por ejemplo, los que tienen #include en Blinking_LED_main.c). Entre estos est: DSP280x_Device.h, que incluye los archivos de cabecera especficos para manejar algunos perifricos y algunas macros y typedef especficas para algunos dispositivos; y DSP280x_Examples.h que define parmetros que son usados en el cdigo fuente de ejemplo, adems es requerido por algunos archivos fuente comunes. En general al comenzar un nuevo proyecto, se deben incluir, a lo menos, los archivos mencionados en la Tabla 3-2 y los pertenecientes a la carpeta Include.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

29

GuadelUsuarioDigitalSignalProcessor

Otra carpeta es la DSP/BIOS Config que contiene el archivo de configuracin o script para poder trabajar en aplicaciones en tiempo real que requieran un manejo de memoria y recursos al lmite. Adems permite sincronizacin en tiempo real; comunicacin cliente-tarjeta en tiempo real; e instrumentacin en tiempo real. La carpeta GEL Files, contiene unos archivos llamados General Extension Language (GEL) que son usados para inicializar automticamente el dispositivo cuando se inicia el CCS. Se encarga entre otras cosas de reconocer que la tarjeta se encuentra conectada; de compilar y cargar el programa con un solo click; y de configurarse apenas se inicia el CCS (por esto se debe quitar del proyecto este archivo si se va a utilizar otro dispositivo o ejemplo). Funciona por medio de un lenguaje interpretado similar a C lo que lo hace cmodo para trabajar. Del mismo modo posee una gran variedad de funciones donde adems es posible crear las propias segn la necesidad.

3.5 Debuggear.
El debugeo (viene de Debugging en ingls - Limpieza) es un proceso metdico que permite reducir los bug o errores en un programa. Entre estos permite: colocar Breakpoints; ejecucin instruccin a instruccin; y observar el valor de una variable en tiempo de ejecucin. CCS tiene varias funcionalidades que permiten realizar estas tareas de manera simple. CCS permite colocar Breakpoints en alguna lnea de cdigo. Cuando el programa se ejecute y se encuentre con un breakpoint, ste se detendr en esa lnea y no continuar hasta que se le ordene (no ejecuta la lnea que posee el breakpoint). En el tiempo en que se encuentre detenido, es posible observar los valores de las variables que el programa tiene en ese momento. Adems es posible modificar esos valores y asignarles alguno arbitrariamente. Para colocar un breakpoint simplemente se debe hacer doble click al comienzo de la lnea, a lo cual aparecer un punto rojo, que indica que se ha colocado un breakpoint. Para sacarlo se debe volver a hacer doble-click. Esto se muestra en la siguiente figura:

Figura 3-13 Colocacin de un Breakpoint.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

30

GuadelUsuarioDigitalSignalProcessor

Para el ejemplo de la figura, se utiliz el mismo proyecto Blinking_led.pjt donde se agregaron las lneas que se muestran. Cuando se corre el programa, se ver que se detiene justo en esa lnea y si se coloca el cursor del Mouse sobre la variable variable por unos segundos, aparecer el valor que posee en ese momento. El valor mostrado en este caso es el que el compilador le asigna a las variables que no son inicializadas. Si luego se ejecuta la siguiente lnea con Debug->Step over o simplemente presionando F10, la variable tendr el valor de 24. Esto se muestra en la siguiente figura:

Figura 3-14 Valor de una variable en tiempo de ejecucin.

Se observa ahora que la variable es igual a 24 y la flecha amarilla (que indica la lnea en la que se encuentra la ejecucin de instrucciones), ha avanzado. Si se vuelve a presionar F10, ahora la variable es igual a 124, y la flecha amarilla se colocar en la siguiente lnea de instruccin vlida (los comentarios no figuran como cdigo ejecutable), tal como muestra la siguiente figura:

Figura 3-15 Step-over (F10) y Step-into (F11).

Ahora bien, si la lnea de ejecucin (flecha amarilla) en la que se encuentra corresponde a una funcin, se pueden realizar dos cosas. Realizar un Step-over (F10) con lo cual ejecutar la funcin completamente para luego saltar a la siguiente lnea. O bien se puede hacer un Debug->Step-into (F11) que ejecuta la primera instruccin de la funcin, es decir, comienza a ejecutar la funcin lnea a lnea. Una vez dentro, es posible realizar lo mismo antes mencionado, como leer variables o ejecutar lnea a lnea. Si se desea que se
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

31

GuadelUsuarioDigitalSignalProcessor

complete la funcin y que se site en la siguiente lnea de cdigo luego de sta, se debe presionar Debug->Step-out (Shift+F11). Esto terminar de ejecutar la funcin y se colocar en la siguiente lnea que corresponda antes de haber entrado a la funcin. Tambin es posible saltar hasta cualquier lnea deseada con Debug->Run to Cursor (CTRL+F10). Para que el programa siga ejecutndose normalmente luego de haber estado pausado por un breakpoint, se debe presionar Run (F5). Si existe otro breakpoint ms adelante, el programa se detendr ah. Para ejecutar el programa instruccin a instruccin (en lenguaje ensamblador) en vez de lnea en lnea (lnea de cdigo), se utilizan las funciones presentes en Debug->Source Stepping. Otra forma de ver las variables en tiempo de ejecucin es utilizando el llamado Watch Window. Esto es un ventana en la cual se van agregando variables simplemente haciendo click derecho sobre ella y presionando Add to Watch Window. Por cada variable agregada, se permite ver su nombre, su valor, su tipo y el formato en que se desea ver el valor. Esto se muestra en la siguiente figura:

Figura 3-16 Watch Window.

Por ejemplo en la figura anterior, se observa que se agreg la variable variable cuyo valor es 24, de formato INT y adems se pide que su valor se muestre en decimal (Redix=dec). Para cambiar esto ltimo se presiona donde dice Redix y aparecer una lista con otros formatos, donde por ejemplo, si se elige HEX, el valor 24 aparecer en hexadecimal (0x18) en vez de decimal. Los tab indican qu variables se vern. El tab Watch Locals permite ver las variables que actualmente se estn ejecutando en la funcin, mientras que Watch permite ver tanto las variables locales como globales. Adems es posible agregar expresiones dentro Watch Windows. Por ejemplo se puede escribir en la columna Name lo siguiente: variable+500. Con lo anterior, cada vez que se actualice el valor de esta variable, tambin aparecer el resultado de esa expresin. Si ahora se hace click derecho en el tab de Watch 1, y se presiona Add Globals to Watch, se podrn agregar variables globales. Por ejemplo si se agrega la variable
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

32

GuadelUsuarioDigitalSignalProcessor

GpioDataRegs segn se observa en las siguientes imgenes, ser posible ver cmo cambian los registros al momento de presionar el botn de la tarjeta. Por ejemplo se expande la estructura de la variable segn GpioDataRegs->GPADAT->bit y se observa el registro del pin 61 llamado GPIO 9. Se observa que tiene un valor 0, pero si se mantiene presionado el botn de la tarjeta y luego se presiona Refresh (aparece en el mismo men que Add Globals to Watch), se ver cmo este valor cambia a 1. Esto indica que el botn est presionado, o lo que es lo mismo, el pin est conectado a LOW (esto se observa en el esquemtico de la tarjeta en la Figura 2-4, donde se ve que al presionar el botn, el pin 61 hace puente con tierra).

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

33

GuadelUsuarioDigitalSignalProcessor

Figura 3-17 Agregar variables Globales.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

34

GuadelUsuarioDigitalSignalProcessor

Figura 3-18 Eleccin de Variables Globales.

Figura 3-19 Parte del esquemtico de la tarjeta. Botn de GPIO 9.

Si se desea que las variables se actualicen en tiempo real en la Watch Windows, se debe ingresar a Debug->Real Time Mode. Luego en el tab de la ventana de Watch Windows, hacer click derecho y en el men desplegable hacer click a Continuous Refresh. Con esto las variables se actualizarn apenas cambie su registro. Esto se debe hacer luego de haber compilado y cargado en la tarjeta el cdigo fuente. En caso de que aparezca algn error y CCS no se pueda conectar a la tarjeta, se debe desactivar la opcin Real Time. Para poder realizar los siguientes tres puntos, se debe haber compilado el cdigo fuente y luego cargarlo en la tarjeta de desarrollo, antes de realizar los cambios, ya que el
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

35

GuadelUsuarioDigitalSignalProcessor

CCS verifica las variables y arreglos antes de visualizarlos o guardarlos. Adems se debe tener la placa conectada al CCS (ATL+C).

3.5.1 Escribir datos en un Archivo de Salida


Una vez compilado y cargado el cdigo fuente, se ingresa un breakpoint en el punto en el cual se desee obtener algn dato. En este caso se ingresa en la lnea 201 en donde se tiene una variable del tipo unsigned int16 (Uint16) Historial[BUF_SIZE]. Luego se ingresa a Debug->Breakpoints donde aparecer una ventana en la parte inferior del CCS, tal como se muestra en la siguiente figura:

Figura 3-20 Administrador de Breakpoints.

Se observa que aparece el nmero de lnea, as como otras caractersticas. Tiene especial importancia la columna Action, ya que si se presiona aparecer un men contextual con una opcin llamada Write Data to a File. Esto se muestra en lo siguiente:

Figura 3-21 Men contextual de Action.

Al presionar, aparecer una ventana que se deber llenar con la siguiente informacin:

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

36

GuadelUsuarioDigitalSignalProcessor

Figura 3-22 Parmetros para escribir datos en un archivo.

El primer campo File indica la direccin en donde se guardar el archivo creado con los datos del programa, cuya extensin ser *.DAT. La forma del archivo consiste en la primera lnea con informacin sobre el archivo y luego cada lnea representa un dato con el formato dado por los parmetros indicados en el programa. En Format se indica el formato en el cual se representan los datos. Como la variable que se quera guardar es Uint16, entonces se elige Integer (INT). En Start Address se debe indicar la direccin de memoria del DSP en la cual se comenzar a leer para su posterior guardado dentro del archivo. Debe estar en formato hexadecimal, aunque es posible tambin incluir el nombre de la variable, como en este caso donde se coloc Historial. En Page se indica la seccin de memoria que ser leda. Como Historial se encuentra en la memoria de datos, entonces se elige Data. En Length se indica el largo o tamao de la memoria a ser leda con el formato dado anteriormente. Como se tiene una variable que es un arreglo, en la figura anterior se observa que se guardarn los 20 primeros valores. Luego cada vez que el programa pase por la lnea del breakpoint, guardar los 20 primeros valores del arreglo Historial en el archivo ArchivoSalida.dat. No borrar los datos sino que los escribir a continuacin de cada corrida siempre y cuando se mantenga la ventana que se muestra en la siguiente figura:

Figura 3-23 Indicador de largo de las variables.

No importa si el programa se detiene y luego contina, los datos se seguirn escribiendo mientras esta ventana se mantenga. Si se presiona Stop (botn con un cuadrado) se dejar de escribir los datos en el archivo, y si se presiona Play (botn con un tringulo) se seguir escribiendo desde la ltima ubicacin en el archivo. Si se cierra esta ventana, el procedimiento debe hacerse de nuevo desde los ajustes de los parmetros.
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

37

GuadelUsuarioDigitalSignalProcessor

Cuando se guardan datos en un archivo, ste sigue creciendo y creciendo mientras corra el programa, por lo que se debe tener cuidado de no sobreestimar los recursos del computador, al crear un archivo excesivamente grande.

3.5.2 Leer Datos en un Archivo de Salida


Para leer datos se realiza el mismo procedimiento anterior, pero con la diferencia de que en el men contextual se debe presionar Read data from a File. As aparecer la siguiente figura:

Figura 3-24 Leer datos desde un archivo.

El campo File indica el archivo a ser ledo donde cada lnea representa el valor que se le asignar a la variable cada vez que el programa pase por esa lnea. Wrap Around indica que si se llega al final del archivo, entonces se comenzar desde el principio. Si est desactivado y se llega al fin del archivo el programa ser pausado (Halted) y aparecer un mensaje. Los otros campos son los mismos que para escribir un archivo de salida. Cabe mencionar que tanto escribir como leer datos de un archivo consumen recursos del DSP, por lo que algunas operaciones podran tardar ms que si la tarjeta lo hiciera sola en tiempo real. Para maximizar la utilidad de estas aplicaciones se recomienda utilizar archivos cortos y variables auxiliares para que no tome demasiado tiempo en realizar estas acciones.

3.5.3 Graficar datos en tiempo real.


Esta opcin es bastante til cuando se desean ver seales en tiempo real. Para poder hacerlo se debe haber compilado y cargado el cdigo en el programa. Luego se ingresa a View->Graph->Time/Frequency donde aparecer la siguiente ventana:
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

38

GuadelUsuarioDigitalSignalProcessor

Figura 3-25 Parmetros para graficar una seal.

Entre los parmetros ms importantes se debe indicar: Display time: Indica el tipo de grfico. Puede ser de tiempo simple o doble, FFT, constelacin, etc Start Address: Igual que lo mencionado anteriormente al escribir y leer datos. Puede ser una direccin en formato hexadecimal o el nombre de alguna variable. Es recomendable colocar la direccin de la variable. Para saberla se presiona el botn derecho sobre la variable en el cdigo fuente, y en el men contextual emergente presionar View location of, para lo cual aparecer una ventana en la parte derecha del CCS, con el nombre de la variable y su direccin de memoria. Escribirla de la forma (por ejemplo) 0xF34F. Page: Indica la seccin de memoria en la cual se leer la direccin dada en el punto anterior.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

39

GuadelUsuarioDigitalSignalProcessor

Acquisition Buffer Size: Indica la cantidad de valores que sern ledos desde la direccin en un instante dado de tiempo. Es til para cuando se desean leer frames en vez de un solo dato. Por ejemplo si importa slo un dato en cada momento se coloca un 1, pero si la variable es un frame o arreglo de 100, entonces se indica el largo del frame igual a 100 en este campo. Index Increment: ndice de incremento para el grfico. til cuando se desea graficar dos variables en el mismo grfico. Display Data Size: Tamao de la ventana en la cual se mostrarn los datos. DSP Data Type: Tipo de datos del procesador. Esta opcin afecta el valor con el que sern mostrados los datos. Si la variable es de 16 bits (int) se recomienda colocar la opcin 16-bit unsigned integer. Sample Rate (Hz): Tasa a la que sern mostrados los datos. Esto slo afecta los labels del eje del tiempo. As los labels sern desde 0 hasta 1 DisplayDataSize . Para el grfico en el dominio de la frecuencia, este SampleRate campo contiene el nmero de muestras usadas para el anlisis de la FFT. Autoscale: Si est activado, vara automticamente el eje Y segn el mximo valor mostrado en la ventana o display. Se recomienda desactivarlo para tener un mejor panorama de la seal.

Luego de haber configurado lo anterior y presionar OK, se tendr lo de la siguiente figura. Pero antes de debe ingresar Debug->Real Time Mode.

Figura 3-26 Grfico realizado con los datos. Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

40

GuadelUsuarioDigitalSignalProcessor

Para una correcta visualizacin se debe hacer un click derecho sobre el grfico, y en el men contextual presionar Continuous Refresh. As el grfico se ir actualizando automticamente con cada dato. Para observar la seal que se desea simplemente se debe correr el programa (F5) y el grfico comenzar a actualizar los datos que se estn monitoreando.

3.6 Conversor ADC.


Se sabe que el DSP TMS320F28016 posee 16 canales para un conversor ADC de 12 bit para transformar una seal analgica en digital, cada uno con S/H (Sample and Hold Muestrea y retiene). Cada resultado de conversin puede ser accesado individualmente a travs de un nico registro por canal. La conversin permite un rango entre 0 y 3 volts, cuya frmula es:

ADCvalor = 4096

IN ADC 3

(3.1)

Donde IN ADC es el valor del voltaje del conversor y el 4096 equivale al valor mximo para un nmero de 12 bit. Cualquier voltaje menor a 0 volt ser entregado como cero, y cualquiera mayor a 3 volt, ser entregado como 4095. En el diagrama de bloques del mdulo ADC que se muestra en la siguiente figura, se observa que slo posee un conversor de 12 bit, el cual utilizando multiplexores (MUX) en dos bloques de 8 canales cada uno, permite obtener hasta 16 canales. Luego el mdulo ADC se encarga de guardar los valores en sus registros correspondientes y sus respectivas direcciones. Utilizando los registros de control es posible utilizar los secuenciadores, los cuales permiten 16 autoconversiones en una sola sesin (tiempo dado entre la conversin del primer canal y el ltimo), donde cada conversin es guardada en cualquier registro previamente seleccionado.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

41

GuadelUsuarioDigitalSignalProcessor

Figura 3-27 Diagrama de Bloques del ADC.

En la siguiente figura se muestra un diagrama de bloques simplificado. Se observa la funcionalidad de los secuenciadores, los cuales permiten realizar un muestreo simultneo por medio de los S/H, que permiten obtener una lectura de dos canales al mismo tiempo, pero la conversin se realiza por orden. Por ejemplo en ADCINA5 se puede medir voltaje, mientras que en ADCINB5 se puede medir corriente, y as obtener la potencia instantnea en tiempo real. Por medio del autosecuenciamiento, se puede elegir el orden en el cual los canales ADC de conectan al ncleo del conversor, para as crear una secuencia simple de hasta 8 muestras, o de hasta 16, utilizando los secuenciadotes en cascada.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

42

GuadelUsuarioDigitalSignalProcessor

Figura 3-28 Diagrama Simple del Bloque ADC.

Entre los principales bloques se encuentran dos bloques de multiplexores (MUX) de 8 canales que expanden la capacidad de conversin a 16 canales. Junto a estos se encuentran dos S/H (Sample and Hold) que permiten la conversin simultnea antes mencionada. El Sequence Arbiter (rbitro del Secuenciador) mantiene la pista de las seales de entrada unidas al ADC, incluyendo el modo simultneo. Autosecuenciadores duales dan flexibilidad seleccionando al azar la forma en que los canales de entrada se conectan al ncleo ADC. Cada secuenciador de 8-estados puede ser usado independientemente para convertir hasta ocho canales en una secuencia predeterminada o en cascada para formar un secuenciador simple de 16 estados. Por medio del registro ADCMACONV es posible ajustar el nmero mximo de conversiones por secuencia. Se observa adems que es posible usar una de tres seales para
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

43

GuadelUsuarioDigitalSignalProcessor

disparar (trigger) el inicio de secuencia (SOC Start of Sequence) en el Secuenciador 1 y dos seales para SOC en el Secuenciador 2. Existen 16 registros de resultados (ADCResult0-ADCResult15) que mantienen el conteo ADC antes de que sean transferidos a la memoria del sistema. Cuando se termina una secuencia (EOC End of Sequence) se producen tres diferentes seales de interrupciones que son ADCINT, SEQ1INT y SEQ2INT las cuales pueden ser usadas para transferir los resultados al sistema de memoria. Las interrupciones son generadas cuando el secuenciador completa la ltima conversin del ltimo canal de la secuencia. El Servicio de Rutina de Interrupcin (ISR - Interrupt Service Routine) dispone de estas nicas seales de interrupcin para las operaciones ADC. Ahora se ver el otro ejemplo provisto por OLIMEX8 que consiste en utilizar un conversor ADC. Para esto se utiliza el potencimetro de la placa que se encuentra conectado al pin 34, llamado ADCINB7. Los elementos de los ejemplos que se vern se muestran en la siguiente figura:

Figura 3-29 Trimmer AN_TR, botn GPIO9 y Led GPI11.

La funcionalidad del ejemplo consiste en hacer parpadear el LED a cierta frecuencia, la cual est regulada por el trimmer (potencimetro). ste se encuentra conectado al conversor ADC del pin 34 (pin ADCB7) y en base a la medida obtenida, es como cambia la frecuencia de parpadeo del led. Entro lo principal del cdigo del programa basado en la Figura 3-30, se observa dentro del while{} el siguiente cdigo AdcRegs.ADCST.bit.INT_SEQ1== 0;. Este cdigo pregunta por el registro que indica que el secuenciador 1 ha terminado la secuencia y es
8

Bajar este y otros ejemplos desde www.olimex.cl, seccin Tarjetas Olimex->DSP. Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

44

GuadelUsuarioDigitalSignalProcessor

posible la lectura del conversor ADC, correspondiente al pin 34 (ADC B7 en la placa). Posterior a eso se resetea ese bit (AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;) para esperar por la nueva secuencia. De ah se observa que guarda los datos de los 15 conversores en un arreglo llamado AdcSampleTable[]. Con el cdigo ADC_Result = AdcRegs.ADCRESULT15>>4; guarda el valor que ser usado en el ejemplo en esa variable. El smbolo >>4 divide el valor obtenido en la conversin por 24 , esto permite bajar la resolucin a la lectura, puesto que como se mide entre 0 y 3, los bit menos significativos estn de ms para este tipo de experimento, pues se est utilizando un conversor de 12 bits sobre una variable de 16 bits. Luego el programa apaga el led y con el valor medido guardado en ADC_Result, se utiliza como entrada en una funcin llamada Delay(), que no es ms que un for{} simple de ciclo variable dado por el parmetro de entrada de la funcin, el cual viene de la muestra obtenida del conversor. Posteriormente se vuelve a encender el led para luego volver a utilizar la funcin delay. Esto se muestra en la Figura 3-30 donde se observa que adems de medir el valor de ADCB7, tambin mide todos los conversores, es decir los otros 15 (son 16 en total). En este caso ADCSampleTable[15] corresponde al pin 34 (ADCB7).

Figura 3-30 Ejemplo Conversor ADC.

Para poder utilizar los conversores ADC se deben configurar los siguientes registros: Tasa de muestreo. Configurar/Seleccionar el Autosecuenciador.
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

45

GuadelUsuarioDigitalSignalProcessor

Modo de muestreo. Seleccionar la seal SOC (Star of Conversion Comienzo de la Conversin). Asignar los canales para el(los) secuenciador(es) tal que los diecisis resultados de los registros de 16-bit mantendrn el conteo de los canales de entrada segn se desee y para un determinado nmero de conversiones por secuencia. Configurar interrupcin en EOS (End-of-Sequence Fin de Secuencia). Para mayores detalles y especificaciones sobre cmo configurar las caractersticas del conversor ADC se debe dirigir al manual de referencia TMS320x280x, 2801x, 2804x DSPAnalog-to-Digital Converter (ADC) (spru716b.pdf) o a An Overview of Designing Analog Interface With TMS320F28xx/28xxx DSCs (spraap6a.pdf).

3.7 Uso de Archivos GEL


CCS permite la utilizacin de unos archivos o script de extensin *.GEL, que permiten por medio de un men desplegable, la compilacin de un proyecto, carga de cdigo o simplemente ajusta la ventana Watch Windows con las variables de consideracin. Este archivo se carga una vez junto con el proyecto, y junto a ste aparece el men GEL con las funciones disponibles. Cabe mencionar que el archivo GEL queda cargado en el CCS, por lo que al cambiar de proyecto, se debe quitar manualmente. Para dar una visin de lo que se puede hacer con este archivo, se mostrar el men GEL del ejemplo ADC conversor. El archivo GEL viene ya creado con el ejemplo por lo que slo bastar con cargarlo en el proyecto. Para esto ingresar a FILE->Load GEL y buscarlo en la misma carpeta del ejemplo. Para crear un archivo GEL propio se debe leer la ayuda de VII.- spraa74a.pdf - Creating Device Initialization GEL Files. disponible en www.ti.com. Un vez cargado el archivo GEL aparecer el siguiente men en la barra de herramientas. Adems el archivo GEL aparecer en el panel del proyecto en la carpeta GEL FILES.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

46

GuadelUsuarioDigitalSignalProcessor

Figura 3-31 Men desplegable para archivo GEL.

Antes de haber cargado el archivo GEL, en el men mencionado anteriormente no aparece nada, pero luego se observar en el men desplegable las funciones disponibles del archivo. En el men se observa una opcin llamada DSP280x ADC Seq_ovd Test y dentro de ste, tres funciones llamadas Load_and_Build_Project(); Load_Code(); y Setup_WatchWindow(). Si se observa el archivo GEL y se abre, se vern varios tems. El primero llamado menuitem que tiene el nombre del men GEL entre comillas en la barra de herramientas. Este men corresponde a uno general para agrupar las funciones segn utilidad o gusto del usuario. El otro tem que se observa se llama hotmenu y corresponde a la funcin en s. Se ven tres funciones hotmenu que son las que aparecen en el men de la barra de herramientas. Los nombres de estas funciones se pueden crear arbitrariamente, para que hagan referencia a su utilidad. Por ejemplo la tercera funcin hotmenu Setup_WatchWindow() ajusta la ventana Watch Window con las variables de inters. Dentro de sta se observa la funcin GEL_WatchReset() que borra todas las variables que se encuentren actualmente dentro de la ventana. La funcin GEL_WatchAdd() agrega una variable de inters. Con lo anterior es posible as agregar todas las variables deseadas, sin tener que buscarlas dentro del cdigo una por una cada vez que se reinicia el CCS.
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

47

GuadelUsuarioDigitalSignalProcessor

Lo anterior permite crear una mezcla de funciones dentro de otras para realizar as las tareas ms comunes en un solo paso. Las funciones base mostradas en el ejemplo son las que aparecen con el prefijo GEL y vienen dentro de la librera de CCS. A continuacin se muestra una tabla con las funciones provistas. Para un mayor detalle de su uso dirigirse a la ayuda de CCS.

Funciones GEL
GEL_AddInputFile() GEL_AsmStepInto() GEL_BreakPtDel() GEL_Exit() OnHalt GEL_Go() GEL Grammar GEL_MapDelete() GEL_MapAddStr() GEL_PatchAssembly() GEL_SyncRun GEL_RemoveDebugState GEL_SetSimMode() GEL_SrcDirRemoveAll() GEL_SymbolAdd() GEL_TextOut() OnFileLoaded() GEL_ProjectClose() GEL_ProjectBuild() GEL_StepOver GEL_SyncStepOver GEL_Restart() GEL_WatchAdd() GEL_SyncHalt GEL_SymbolLoad() GEL_UnloadGel() OnResetDetected() GEL_SetTimer GEL_AddOutputFile() GEL_AsmStepOver() GEL_AdvancedReset() GEL break Statment GEL_Animate() GEL_BreakPtAdd() GEL_DisableRealtime() GEL_EnableClock() GEL_IsInRealTimeMode GEL_Load() GEL_LoadGel() GEL_MapReset() GEL_MapOn() GEL_PortDisconnect() GEL_ProjectRebuildAll() GEL_BreakPtDisableGEL_BreakPtReset() GEL_CancelTimer GEL_SymbolShowSection() GEL_EnableRealtime() GEL_SharedMemHaltOnStepOff() GEL_HWBreakPtAdd() GEL_HWBreakPtDel() GEL_SharedMemHaltOnStepOn() GEL_PinConnect() GEL_ProjectCreateDefaultConfig() GEL_RemoveInputFile() GEL_SetWaitInResetMode() GEL_SrcStepInto() GEL_SymbolAddRel() GEL_TransferToFile Gel_LoadProfileConfiguration GEL_ProjectRebuildAllConfig() GEL_ProjectRebuildAllConfig() GEL_ProbePtDel() GEL_ProjectRemoveConfig() GEL_RestoreDebugState GEL_SharedMemHaltOnWriteOff() GEL_SharedMemHaltOnWriteOn() GEL_OpenMemoryWindow GEL_ProjectSetActiveConfig() GEL_SetBlockResetMode() GEL_OpenDisassemblyWindow GEL_ProbePtAdd() GEL_HWBreakPtDisable GEL_Halt() GEL_HWBreakPtReset() GEL_MemoryFill() GEL_MapOff() GEL_PortConnect() GEL_ProjectLoad()

GEL_RemoveOutputFile() GEL_Reset() GEL_RefreshWindows GEL_SrcStepOver() GEL_LowPowerRun() GEL_StopTransferToFile()

GEL_SymbolHideSection() GEL_SymbolRemove() GEL_TransferToFileConfg GEL_UnloadAllSymbols() OnPreFileLoaded() GEL_OpenWindow() GEL_MemoryLoad() GEL_ProbePtDisable GEL_ProjectSave() GEL_SrcDirAdd() GEL_StepInto GEL_SyncStepInto GEL_SymbolLoadRel() GEL_WatchDel() OnTargetConnect() GEL_TargetTextOut() OnReset() GEL_MapAdd() GEL_MemorySave() GEL_ProbePtReset() GEL_ProjectSetActive() GEL_RunF() GEL_StepOut GEL_SyncStepOut GEL_System() GEL_WatchReset() GEL_Run() OnRestart()

GEL_ProjectCreateCopyConfig() GEL_ClearProfileConfigurationGEL_CloseWindow()

Tabla 3-3 Funciones GEL disponibles.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

48

GuadelUsuarioDigitalSignalProcessor

3.8 Ejemplo Echo Back usando SCI.


Este ejemplo, al igual que los anteriores, est disponible en la pgina de Ingeniera MCI LTDA9. Su funcin es la de utilizar el puerto SCI (Serial Communication Interface) comnmente conocido como puerto UART, que consiste de una conexin de dos cables asncrona. Se basa en el formato NRZ (non return to zero). Permite la autodeteccin de la velocidad de conexin. Cola FIFO de 16 niveles. Cada funcionalidad del SCI es configurable por software donde bytes dedicados son programados para inicializar el formato de comunicacin deseado del SCI. Entre otras cosas permite configurar la velocidad de conexin, modo de operacin y protocolo, paridad, largo de los caracteres, Bit de parada, y habilitar interrupciones y prioridades. La conexin se realiza utilizando los pines GPIO28 y GPIO29. Estos pines pueden utilizarse como de uso general en caso de que no se use el puerto SCI. El ejemplo funciona de la siguiente forma; cuando vienen datos a travs de este puerto, el programa los enva de vuelta, produciendo lo que se conoce como Eco. Viene ya configurado y listo para usar y lo nico externo que se necesita es la conexin desde el puerto SCI al PC utilizando el puerto serial. Una opcin es utilizar el puerto USB disponible en la placa del DSP, instalar un driver para crear un enlace virtual entre el puerto USB y el puerto serial del PC y luego correr el programa. Este driver se encuentra disponible en la pgina oficial de FTDI10, que es la marca que provee el chip de la tarjeta que convierte de USB a serial. Si se desea utilizar el Hyperterminal se debe bajar el driver VCP (Virtual COM port). Este driver crear un enlace para el puerto USB, por lo que al utilizar el hyperterminal aparecer un puerto adicional a los ya existentes. En caso de no disponer de lo anterior, se debe crear una conexin por medio de un circuito externo entre el puerto serial y la tarjeta (utilizando el conector UEXT). Se debe tener cuidado de los niveles de voltaje a tarjeta y el puerto serial del PC, por lo que se recomienda utilizar un chip adecuado (se recomienda MAX232). Para utilizar el ejemplo se debe utilizar el hyperterminal. Se debe crear una conexin y se debe configurar para una velocidad de 9600 baudios, 8N1. El puerto a elegir depende del tipo de conexin. Si se utiliza el puerto serial con el circuito externo, generalmente es el puerto COM1, si se utiliza el puerto USB, generalmente aparece un puerto con un nmero mayor a 30. Luego de iniciar la conexin, se compila y carga el programa en la tarjeta y al instante aparecer lo siguiente en el hyperterminal, donde cada vez que se escriba algo, el programa lo enviar de vuelta.

10

www.olimex.cl http://www.ftdichip.com/FTDrivers.htm Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

49

GuadelUsuarioDigitalSignalProcessor

Figura 3-32 Programa EchoBack con Hyperterminal.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

50

GuadelUsuarioDigitalSignalProcessor

4 Creando un ejemplo desde cero


El siguiente ejemplo explicar desde cero la forma de crear un proyecto. Se partir de una estructura bsica a partir de la cual, se comenzarn a agregar libreras o cdigo para realizar alguna tarea o satisfacer la necesidad del usuario. Si bien programar un DSP requiere bastante dedicacin y grandes conocimientos en programacin y procesadores, es posible aminorar esto partiendo desde una configuracin bsica basada en los ejemplos. Por ello se crear un esqueleto de proyecto el cual ser la base para cualquier otro, logrando as para cada utilidad, la mnima cantidad de configuraciones.

4.1 Por dnde partir?


Lo primero a realizar ser la creacin del proyecto en s. Para esto se comienza desde el CCS sin abrir nada y se ingresa Proyect->new. Aparecer una ventana como la de la siguiente figura, en la cual se ingresa el nombre del proyecto (LucesRitmicasDSP), la carpeta donde se crear el proyecto, el tipo de proyecto (*.OUT) y el modelo de la tarjeta DSP.

Figura 4-1 Creacin de un proyecto.

Con lo anterior se crear una carpeta con el nombre del proyecto en la carpeta seleccionada junto a dos archivos de extensin: *.PJT que contiene toda la informacin del proyecto; y *.SBL con informacin externa. Ahora se procede a agregar un cdigo fuente. Esto se realiza ingresando File->New->Source File. As se crear un archivo en blanco sin ninguna extensin. Para comenzar simplemente se copia el cdigo del ejemplo del conversor ADC y guardamos el archivo con extensin *.C para que el CCS lo marque como lenguaje C. Luego se agrega al proyecto por medio de Proyect->Add Files to Project. As la carpeta del proyecto contendr el archivo LucesRitmicas.c.
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

51

GuadelUsuarioDigitalSignalProcessor

Figura 4-2 Guardar Cdigo Fuente.

Con lo anterior, se necesita ahora agregar las libreras y archivos de cabecera. Para mantener el orden con respecto a esto y separar los cdigos de lo que son cabeceras, se crearn dos carpetas al estilo de los ejemplos vistos. As se crearn tres carpetas llamadas DSP280x_common; DSP280x_headers; y DSP280x_examples. Las dos primeras contendrn todas las cabeceras necesarias para poder correr los ejemplos, es decir, se copiarn de los mismos ejemplos. La ltima carpeta ser la que contendr al proyecto creado anteriormente. As cuando se indique la carpeta en donde se crear el proyecto, se le debe indicar ../ DSP280x_examples, la cual debe estar completamente vaca. Ahora se debe agregar los directorios al proyecto para que incluya las cabeceras, ya que sino se hace, el compilador no es capaz de encontrar los archivos mencionados en #include. Esto se hace ingresando a Project->Build Options. As aparecer una ventana como la siguiente:

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

52

GuadelUsuarioDigitalSignalProcessor

Figura 4-3 Opciones par incluir archivos de cabecera.

En la pestaa Compiler se selecciona la categora Preprocessor y se ingresa en Include Search Path (i): el siguiente comando para agregar una carpeta: ..\..\DSP280x_headers\include;..\..\DSP280x_common\include. Por la forma en cmo estn creadas las carpetas, con el comando anterior incluir las direcciones en donde se encuentran la mayora de los archivos de cabecera. As las carpetas deben quedar como:

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

53

GuadelUsuarioDigitalSignalProcessor

Figura 4-4 Carpetas del proyecto.

Luego dependiendo de las funciones usadas en el cdigo, ser la forma del rbol de carpetas del proyecto con los archivos a ser agregados. Para agregar un archivo o cabecera al proyecto de debe ingresar a Project->Add Files to Project o simplemente haciendo click derecho sobre el nombre del proyecto. Entre los archivos principales se deben incluir: DSP280x_headers/source/DSP280x_GlobalVariableDefs.c DSP280x_headers/cmd/DSP280x_Headers_nonBIOS.cmd DSP280x_common/cmd/28016_RAM_lnk.cmd DSP280x_common/source/: o DSP280x_CodeStartBranch.asm o DSP280x_Adc.c o DSP280x_DefaultIsr.c o DSP280x_PieCtrl.c o DSP280x_PieVect.c o DSP280x_SysCtrl.c o DSP280x_usDelay.asm o DSP280x_Gpio.c

Dependiendo del tipo de proyecto que se desea crear, es posible ir agregando o quitando estos archivos. Por ejemplo si se desea usar SCI se debe incluir el archivo DSP280x_common/source/DSP280x_Sci.c. Algunos de estos archivos son excluyentes, por lo que debe tener cuidado de no definir algunas variables dos veces, lo que provoca un error de compilacin. Todo lo anterior est definido exclusivamente para que funcione con el ejemplo del conversor ADC, pero an as es suficiente como para comenzar a trabajar, sin la necesidad de partir completamente desde cero. La configuracin de memoria con los archivos *.CMD tambin es bsica, por lo que si se desea un uso de memoria ms exigente, se debe modificar el archivo 28016_RAM_lnk.cmd.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

54

GuadelUsuarioDigitalSignalProcessor

Antes de compilar se debe configurar el CCS. Para esto se debe ingresar a las opciones de compilacin en Project->Build Options. En la pestaa Linker ingresar en la categora Basic y en Stack Size (-stack) elegir 0x380 y en Code Entry Point (-e) escribir code_start. Esto indica el tamao del stack y la direccin de memoria en la cual se guardar el comienzo del cdigo del programa. Esto se indica en el archivo 28016_RAM_lnk.cmd y DSP280x_CodeStartBranch.asm. Luego en la misma pestaa Linker ingresar en la categora Libraries y modificar el Search Path (i) a ..\..\DSP280x_headers\include y el Incl Libraries (-l) ingresar rts2800_ml.lib. Con todo lo anterior, la configuracin debera verse como:

Figura 4-5 Configuracin Build_Option.

Ahora se est listo para duplicar el ejemplo de los conversores ADC. Para crear el ejemplo de las luces rtmicas se partir desde ste punto. Si se desea evitar lo anterior, simplemente se puede copiar en una nueva carpeta todo un ejemplo completo y partir desde ah, pero con el problema de que ante cualquier cambio, pueda aparecer un error ante la falta de algn tipo de archivo. Se recomienda leer cuidadosamente los ejemplos para utilizar los perifricos.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

55

GuadelUsuarioDigitalSignalProcessor

4.2 Uso de librera FFT y otras modificaciones.


Este ejemplo es parte del proyecto LucesRitmicas el cual consiste en muestrear una seal de audio, calcular su espectro de frecuencias, y en base a los sonidos bajos, medios y altos, encender o apagar unos led. Se partir del ejemplo visto anteriormente donde el programa se ejecuta idntico al del conversor ADC, pero en este caso manejaremos otros pines para prender 3 led externos conectados en la placa, y se ajustar un conversor ADC diferente al conectado al potencimetro de la tarjeta. Primero se activarn los LED para usarlos como luces. Se crearn 3 salidas idnticas a las usadas para el ejemplo del Blinking_LED. Se usarn #define para identificar los LEDs. Esto se muestra en lo siguiente:

Figura 4-6 Configuracin de botones.

Ahora falta configurar esos pines como salida. Esto se realiza en la funcin Gpio_select(); donde el valor del registro es GpioCtrlRegs.GPADIR.all=0x00000800 (0000 1000 0000 0000). Este valor ( 1 lgico) indica que el pin 11 funciona como salida (el pin conectado al led de estado de la placa). Su valor corresponde con cada pin, partiendo desde cero, donde si aparece un 1, indica que el pin funciona como salida. Por ejemplo si se desea que el pin 11 y el 3 funcionen como salida entonces se debe ingresar un 0x0000 0808 (0000 1000 0000 1000). Ahora como se desea que funcionen 3 pines como salida adems del pin 11, se debe tener que configurar como 0x0000 040E (0000 1000 0000 1110), en donde se utilizarn el PIN 1, PIN 2 y PIN 3. La funcin Gpio_Select() se muestra en la siguiente figura. Por ahora el resto de los registros se debe dejar idntico. Esta funcin tambin puede ser incluida manualmente, simplemente ingresndola en el cdigo fuente, pero debe quitarse del proyecto el archivo DSP280x_Gpio.c ya que crear un error de compilacin el tener dos veces la funcin definida. Luego de haber realizado los cambios, es posible usar los leds simplemente ingresando las macros dadas, del mismo modo que el ejemplo del Blinking_Led.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

56

GuadelUsuarioDigitalSignalProcessor

Figura 4-7 Funcin Gpio_Select().

Ahora para el control en el dominio de la frecuencia se usarn unas libreras, disponibles en www.ti.com, para el manejo de la FFT (Fast Fourier Transform). Para agregar estas libreras simplemente se busca por el archivo sprc081.zip, se descomprime y luego se instala. El directorio de instalacin es siempre el mismo y es C:\TIDCS\C28\DSP_TBOX\FFT. En esta carpeta aparecern otras tres ms llamadas clin; cstb y doc. Para poder utilizar esta librera simplemente se debe agregar el archivo .\clib\include\fft.h y .\clib\lib\fft.lib al mismo directorio en donde se encuentra el cdigo fuente o en los directorios dados en el linker del compilador (como se muestra en la Figura 4-5 en la seccin Search Path). Luego la librera fft.h se debe ingresar en esa misma figura, en la Categora Libraries, en Include Libraries, ingresando fft.lib. Si existen ms de una librera, simplemente se separan por punto y comas (;). As esto debe quedar como en la Figura 4-9. En el cdigo fuente se debe incluir explcitamente el archivo fft.h. Para ello se utiliza la macro #include junto a comillas () o a parnteris (<>). Esto se ve de la siguiente manera:

Figura 4-8 Inclusin de libreras usando o <>.

En el caso del uso de comillas, el compilador buscar el archivo en el mismo directorio del cdigo fuente, mientras que en el caso de parntesis <>, el compilador buscar las libreras en los directorios agregados en las opciones del CCS.
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

57

GuadelUsuarioDigitalSignalProcessor

Figura 4-9 Forma de incluir una librera al CCS.

Luego para utilizar la librera FFT, se debe ingresar un conjunto de funciones, que entre otras cosas, maneja los clculos y arregla de tal forma los datos, que permite ser lo ms eficiente posible en el clculo. Esto debido a que las funciones FFT estn programadas en lenguaje ensamblador, al mximo de eficiencia por instruccin. Adems es necesario modificar el archivo de memoria o *.cmd. Dentro del cdigo fuente se debe incluir, donde corresponda (ya sea en la cabecera, dentro o fuera del main) lo siguiente:

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

58

GuadelUsuarioDigitalSignalProcessor

Figura 4-10 Cdigo bsico para utilizar la FFT.

La utilidad y funcin de cada lnea de la figura anterior se explica con mayor detalle en la documentacin de la librera. Bsicamente se puede explicar que se toman los datos los cuales se guardan en una estructura llamada RFFT32 fft. En sta se realizan los procesos de muestreo (nmero de puntos N=128 y ventana de Hamming), bit reverse y conversin, adems de otros clculos tiles como peak de frecuencia y de amplitud. Las
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

59

GuadelUsuarioDigitalSignalProcessor

operaciones disponibles de pueden ver ingresando fft. donde luego de unos momentos aparecer un men contextual con las funciones disponibles. Esto se ve a continuacin:

Figura 4-11 Funciones disponibles para la FFT.

Luego es posible realizar cualquier accin que se desee en base a la potencia de la seal o en base a su frecuencia, por ejemplo se puede utilizar fft.peakmag que calcula el mdulo de la FFT. En base a este valor se pueden manejar los LED en base a la potencia del audio o de una seal cualquiera. Para un mejor uso de estas funciones dirigirse al manual provisto por Texas Instruments. Para la ubicacin de la memoria simplemente se agregan los comandos mostrados en las siguiente figuras en el archivo linker 28016_RAM_lnk.cmd. Se eliminaron algunas secciones, pero la versin completa se encuentra en la documentacin de la FFT. Se debe agregar H0RAM en la pgina 0 de la memoria y la FFTtf en SECTIONS. Tambien es posible no especificar estas secciones y dejar que el linker las cree sola, pero se tiene la posibilidad de que no alcance el espacio de memoria, creando un error de compilacin, o de que se pisoteen variables, creando un error en tiempo de ejecucin. Para que el linker cree solo los espacios se deben agregar las siguientes lneas: #pragma DATA_SECTION(ipcb, "FFTipcb"); y #pragma DATA_SECTION(mag, "FFTmag"). Estas lneas se deben agregar debajo de la definicin de la variable N = 128 al comienzo del cdigo fuente.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

60

GuadelUsuarioDigitalSignalProcessor

Figura 4-12 Comand Linker de ejemplo para ocupar la librera FFT.

An as lo anterior, la documentacin provista por TI recomienda como mnimo tener las siguientes secciones para sus variables y operaciones:

Figura 4-13 Comand Linker mnimo para librera FFT.

4.3 Filtrado de Seales.


Para el filtrado de seales se utilizar la herramienta ms conocida, la Convolucin. Con ello se proceder a manejar una seal por medio de un filtro FIR, que requiere pocas muestras de la seal y adems es bastante eficiente. A continuacin se muestra un esquema de la forma en que se aplica un filtro FIR utilizando convolucin.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

61

GuadelUsuarioDigitalSignalProcessor

Muestra De Entrada

Z0

Z-1

Z-2

Z-N+1

Filtro[0]

Filtro[1]

Filtro[2]

Filtro[N-1]

Salida
Figura 4-14 Esquema de un Filtro FIR.

Para realizar esta operacin se debe proceder de la siguiente manera. Guardar las muestras de la seal en una variable HISTORIAL[BUFFER] con un buffer dado por el usuario. El buffer depender de la calidad que se le quiera dar al filtrado y del tipo de filtro que se le quiera aplicar. Crear el filtro a aplicar utilizando los requerimientos necesarios para la seal, como frecuencia de corte, ganancia o factor de amortiguamiento. Realizar la operacin de convolucin entre la variable HISTORIAL[] y el filtro. En base a la respuesta obtenida, es el significado que se le dan a los resultados.

Lo ms complicado de lo anterior es obtener un filtro. Sin embargo existen muchas pginas en la cuales entregando las caractersticas antes mencionadas, te entregan los valores del filtro. Generalmente slo basta indicar la frecuencia de corte y el nmero de puntos del filtro el cual corresponde al tamao del buffer para la variable Historial. Se supondr que ya se tiene un filtro que realiza alguna operacin del tipo pasa bajo para cierta frecuencia de corte fc. Se tiene en este caso un buffer obtenido arbitrariamente de 128 muestras. Supongamos que las muestras las obtenemos del conversor ADC (ADC_Results). Lo primero que se debe realizar es ir guardando las muestras en el buffer, pero con la condicin de ir moviendo las muestras a medida que llegan, es decir, con el principio de que el primero en entrar es el ltimo en salir. De esta forma se crea una variable donde las muestras ms nuevas se encuentran al comienzo y las ms antiguas al final. El cdigo para hacer esto es:

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

62

GuadelUsuarioDigitalSignalProcessor

Figura 4-15 Ejemplo cdigo para Historial.

Donde BUF_SIZE corresponde al nmero de valores del filtro que se quiera aplicar. Es importante recalcar que este valore debe ser lo ms mnimo posible, para evitar llenar la memoria con valores innecesarios. Se recomienda un valor cercano a los 32 para una calidad de procesado mediana. Por ejemplo el filtro conviene escribirlo de la siguiente manera por medio de una variable global:

Figura 4-16 Macro para definir filtro.

Sin embargo existen varios programas o funciones que pueden correr en tiempo de ejecucin, que crean automticamente el filtro basndose en parmetros dados. Estas funciones pueden ser encontradas gratis en la web. Para la convolucin se debe multiplicar la ltima muestra que llega con el ltimo trmino del filtro. En muchos casos los filtros son simtricos por lo que esto no es de real importancia, pero se dejar lo ms robusto posible para futuras aplicaciones. Otro punto importante, es que en la mayora de las veces se utilizan filtros normalizados. Estos son tiles para evitar un cambio en la potencia de la seal y evitar distorsiones no deseadas. Ahora se procede a aplicar el filtro a la seal en tiempo real. Esto se realiza con el siguiente cdigo:

Figura 4-17 Cdigo para Convolucin.

Se observa que se aplica el filtro a todas las muestras anteriores (32 muestras), para producir una variable resultante de salida. Esta es la que deber ir como muestra para un arreglo de salida dependiendo del tipo de seal con la que se est trabajando.
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

63

GuadelUsuarioDigitalSignalProcessor

Con lo anterior se tendr la muestra resultante en la variable Salida. Si la seal fuera un archivo se sonido, entonces esta muestra (Salida) al final del ciclo for{;;} se deber entregar como entrada para el dispositivo de audio o hacia algn amplificador para reproducirla. Este tipo de accin debe ser lo suficientemente rpida como para alcanzar a realizar todo el procesado de la seal, antes de que llegue la siguiente muestra, ya que de lo contrario, se corre el riesgo de que el audio quede daado o se escuche mal. Por esta razn se recomiendan usar filtros de no ms de 64 muestras.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

64

GuadelUsuarioDigitalSignalProcessor

5 Resumen Atajos Teclado.

Atajo
F5 Shift+F5 F7 Ctrl.+F7 Alt+C Ctrl.+L Ctrl+Shift+L Ctrl.+R Ctrl.+Shift+R

Descripcin
Run Halt Build Compile File Connect Load Program Reload Program Reset Cpu Reset Emulador

Tabla 5-1 Tabla resmen de atajos.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

65

GuadelUsuarioDigitalSignalProcessor

6 Manuales de Referencia de TI.COM


Esta seccin contiene los manuales de referencia para cada mdulo disponible en el DSP TSM320F28016. Se incluye una hoja de datos (datasheet) general, una gua sobre cmo empezar a programar (Quick Start) y un manual de referencia por cada mdulo, el cual explica en detalle sus registros y la forma de configurarlos. Para obtener estos archivos dirigirse a www.ti.com y buscarlos por el cdigo dado al comienzo de cada referencia o directamente de www.olimex.cl en la seccin Tarjetas Olimex->DSP.

I.II.III.IV.V.VI.VII.VIII.IX.X.XI.XII.XIII.-

TMS320F28016- Data Manual (Datasheet). spraam0a.pdf - Getting Started With TMS320C28x Digital Signal Controllers. spru716b.pdf - TMS320x280x, 2801x, 2804x DSPAnalog-to-Digital Converter (ADC). spraap6a.pdf - An Overview of Designing Analog Interface With TMS320F28xx/28xxx DSCs. spru361e.pdf - TMS320 DSP Algorithm Standard Demonstration Application. spru424c.pdf - TMS320 DSP Algorithm Standard Developers Guide. spraa74a.pdf - Creating Device Initialization GEL Files. C280x/C2801x C/C++ Header Files and Peripheral Examples Quick Start. spru566f.pdf - TMS320x28xx, 28xxx DSP Peripheral Reference Guide. spru258a.pdf - TMS320 DSP Product Family Glossary. spraa85a.pdf - Programming TMS320x28xx and 28xxx Peripherals in C/C++. spru712f.pdf - TMS320x280x, 2801x, 2804x DSP System Control and Interrupts. spru625.pdf - TMS320C28x DSP/BIOS Application Programming Interface (API) Reference Guide. XIV.- spraa88 Using PWM Output as a Digital-to-Analog Converter on a TMS320F280x. XV.spra958g.pdf - Running an Application from Internal Flash Memory on the TMS320F28xxx DSP. XVI.- spru051b.pdf - TMS320x28xx, 28xxx DSP Serial Communication Interface (SCI) Reference Guide. XVII.- spru059d.pdf - TMS320x28xx, 28xxx DSP Serial Peripheral Interface (SPI) Reference Guide.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile www.olimex.cl Fono: + 56 2 3339579 Fax: +56 2 3350589

S-ar putea să vă placă și