MCI Tutorial DSP

download MCI Tutorial DSP

of 65

Transcript of MCI Tutorial DSP

  • 8/3/2019 MCI Tutorial DSP

    1/65

    Gua del Usuario

    Digital Signal Processor DSP .

    Revisin Octubre 2008

    Desarrollada por:

    Andrs Oyarce

    [email protected] Revisada por:

    Paul Aguayo

    Ivan Sarmiento

    Ingeniera MCI LTDA.

  • 8/3/2019 MCI Tutorial DSP

    2/65

    Gua del Usuario Digital Signal Processor

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

    2

    Nota: Todos los ejemplos de esta gua fueron desarrollados y probados

    especialmente para el DSP TMS320 F28016, utilizando la placa dedesarrollo creada por OLIMEX (TMS320-P280161). Por lo tanto, losproyectos, sugerencias y comentarios pueden no necesariamentefuncionar en otros modelos DSP.

    Para aprovechar mejor esta gua, se recomienda al lector tenerconocimientos 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 paratener un concepto general del modo de uso de un DSP. En ningn casorepresenta una gua completa sobre cmo utilizar cualquier elementodel mismo. Para mayor detalle descargar la documentacin desdewww.ti.como las guas ms importantes y proyectos de ejemplo desdewww.olimex.clen la seccinTarjetas Olimex->DSP .

    Cualquier sugerencia hacerla al autor del documento a la [email protected] en la pgina de OLIMEX.

    1 http://www.olimex.cl/product_info.php?cPath=47_82&products_id=410

  • 8/3/2019 MCI Tutorial DSP

    3/65

    Gua del Usuario Digital Signal Processor

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

    3

    Tabla de Contenidos.

    1 Introduccin. ...................................................................................................................2 Detalles tcnicos. ............................................................................................................

    2.1 Procesador DSP. ..................................................................................................... 2.2 Tarjeta de Desarrollo para el DSP. ....................................................................... 14

    3 Programacin. ............................................................................................................... 13.1 Flujo de un programa ............................................................................................ 13.2 CodeComposer Studio. ......................................................................................... 1

    3.2.1 Caractersticas. .............................................................................................. 193.3 Cmo Programar? Hola Mundo! ........................................................................ 20

    3.3.1 Instalacin y Configuracin CCS. ................................................................ 203.4 Blinking Led. ........................................................................................................ 23.5 Debuggear. ............................................................................................................ 2

    3.5.1 Escribir datos en un Archivo de Salida ........................................................ 353.5.2 Leer Datos en un Archivo de Salida ............................................................. 373.5.3 Graficar datos en tiempo real........................................................................ 37

    3.6 Conversor ADC. ................................................................................................... 43.7 Uso de Archivos GEL .......................................................................................... 43.8 Ejemplo Echo Back usando SCI. .......................................................................... 4

    4 Ejemplo ......................................................................................................................... 54.1 Cmo crear un nuevo Proyecto? ......................................................................... 54.2 Uso de librera FFT y otras modificaciones. ........................................................ 554.3 Filtrado de Seales. .............................................................................................. 6

    5 Resumen Atajos Teclado. ............................................................................................. 66 Manuales de Referencia de TI.COM ............................................................................ 6

  • 8/3/2019 MCI Tutorial DSP

    4/65

    Gua del Usuario Digital Signal Processor

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

    4

    ndice de Figuras.

    Figura 1-1 Esquema del uso de un DSP. ............................................................................... Figura 2-1 Mapa de memoria del DSP. ............................................................................... 1Figura 2-2 Diagrama de bloques del DSP. .......................................................................... 1Figura 2-3 Tarjeta de desarrollo para el DSP TMS320 F28016. ......................................... 1Figura 2-4 Esquemtico de la tarjeta de desarrollo TMS320 F28016. ................................ 1Figura 3-1 Flujo de un Programa Tipo. ............................................................................... 1Figura 3-2 Seleccin de Configuracin de la Tarjeta. Emulador XDS100. ........................ 2Figura 3-3 Nombre de la Conexin. .................................................................................... 2Figura 3-4 Eleccin de modelo del DSP. ............................................................................ 2Figura 3-5 Propiedades del Procesador. .............................................................................. 2Figura 3-6 Presionar el Botn Save & Quit. ........................................................................ 2Figura 3-7 Botones para Compilar. ..................................................................................... 2Figura 3-8 Placa Conectada o no Conectada. ...................................................................... 2Figura 3-9 Cargar un Programa. .......................................................................................... 2Figura 3-10 Modo de Booteo del ejemplo. M0 SARAM. ................................................... 2Figura 3-11 Cambio valor BLINK_TIME. ......................................................................... 2Figura 3-12 Cambio para apagar el LED al presionar el botn. .......................................... 2Figura 3-13 Colocacin de un Breakpoint. .......................................................................... 2Figura 3-14 Valor de una variable en tiempo de ejecucin. ................................................ 3Figura 3-15 Step-over (F10) y Step-into (F11). .................................................................. 3Figura 3-16 Watch Window. ............................................................................................... 3Figura 3-17 Agregar variables Globales. ............................................................................. 3Figura 3-18 Eleccin de Variables Globales. ...................................................................... 3Figura 3-19 Parte del esquemtico de la tarjeta. Botn de GPIO 9. .................................... 3Figura 3-20 Administrador de Breakpoints. ........................................................................ 3Figura 3-21 Men contextual de Action. ............................................................................. 3Figura 3-22 Parmetros para escribir datos en un archivo. ................................................. 3Figura 3-23 Indicador de largo de las variables. ................................................................. 3Figura 3-24 Leer datos desde un archivo............................................................................. 3Figura 3-25 Parmetros para graficar una seal. ................................................................. 3Figura 3-26 Grfico realizado con los datos. ....................................................................... 3Figura 3-27 Diagrama de Bloques del ADC. ...................................................................... 4Figura 3-28 Diagrama Simple del Bloque ADC. ................................................................ 4Figura 3-29 Trimmer AN_TR, botn GPIO9 y Led GPI11. ............................................... 4Figura 3-30 Ejemplo Conversor ADC. ................................................................................ 4Figura 3-31 Men desplegable para archivo GEL............................................................... 4Figura 3-32 Programa EchoBack con Hyperterminal. ........................................................ 4Figura 4-1 Creacin de un proyecto. ................................................................................... 5Figura 4-2 Guardar Cdigo Fuente. ..................................................................................... 5Figura 4-3 Opciones par incluir archivos de cabecera. ....................................................... 5Figura 4-4 Carpetas del proyecto. ....................................................................................... 5Figura 4-5 Configuracin Build_Option. ............................................................................ 5

  • 8/3/2019 MCI Tutorial DSP

    5/65

    Gua del Usuario Digital Signal Processor

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

    5

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

  • 8/3/2019 MCI Tutorial DSP

    6/65

    Gua del Usuario Digital Signal Processor

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

    6

    ndice de Tablas.

    Tabla 3-1 Configuracin Jumpers para Booteo. ................................................................... 2Tabla 3-2 Archivos principales de un proyecto. ................................................................... 2Tabla 3-3 Funciones GEL disponibles. ................................................................................ 4Tabla 5-1 Tabla resmen de atajos. ...................................................................................... 6

  • 8/3/2019 MCI Tutorial DSP

    7/65

    Gua del Usuario Digital Signal Processor

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

    7

    1 Introduccin.

    Un DSP o Digital Signal Processor(Procesador Digital de Seales) es unmicroprocesador especializado en el anlisis de seales en tiempo real. Se caracteriza poposeer un set de instrucciones que permiten manejar de manera eficiente el procesado deuna 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 debehacerse en un tiempo acotado, para que se pueda trabajar en tiempo real. Cuando seconvierte una seal analgica en digital, sta es muestreada cada cierto intervalo, por lo quecualquier operacin matemtica debe hacerse entre muestras, es decir, una vez que llegueuna muestra se debe realizar la operacin y debe estar lista antes de que llegue la otra. UnDSP proporciona una rapidez y baja latencia, que permite el procesado de seales entiempo 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 deaudio 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: elhardware, que consta de la placa de desarrollo fabricada por OLIMEX la TMS320 P28016y el conector TMS320-JTAG para programar la tarjeta; y el software, que consta del CodeComposer Studio (CCS) el cual es un IDE que permite programar, compilar y debuggearlos programas realizados para el DSP. La tarjeta de OLIMEX adems necesita de un driver

  • 8/3/2019 MCI Tutorial DSP

    8/65

    Gua del Usuario Digital Signal Processor

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

    8

    que se instala en el CCS. Todo lo anterior se encuentra disponible en la pgina deIngeniera MCI LTDA2 junto a todo lo necesario para su utilizacin.

    Esta gua constar de varios captulos referentes a un DSP, pero se trabajar endetalle con la tarjeta de desarrollo delTSM320 P280163. Se explicar a grandes rasgos laarquitectura de un DSP y del esquemtico de la tarjeta. Adems se mostrarn algunosejemplos prcticos para el uso de esta tarjeta y una ayuda bsica para el uso de laherramientaCode Componer Studio(CCS) deTexas Instrument.

    De ahora en adelante, toda referencia a la palabra DSP, ser para el modeloTMS32028016 utilizado en la placa de desarrollo TSM320 P28016.

    2 www.olimex.cl3 http://www.olimex.cl/product_info.php?cPath=47_82&products_id=410

  • 8/3/2019 MCI Tutorial DSP

    9/65

    Gua del Usuario Digital Signal Processor

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

    9

    2 Detalles tcnicos.

    Se mostrarn las caractersticas ms importantes tanto del procesador del DSP comode 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 unPLL 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 Chipo 16Kx16 Flash, 6Kx16 SARAM (Single Access RAM permite slo un

    acceso en un slo ciclo de instruccin). 16Kx16 significa que posee dememoria de 16 Kword (Word = 2 bytes) que se accede en bloques de 16 bitspor cada ciclo de instruccin)

    o 1Kx16 OTP ROM (one-time programable ROM - memoria que se programaslo una vez).

    Boot ROM (4Kx16) memoria para cdigo que el DSP lee al reiniciarse. Contienelas 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).

  • 8/3/2019 MCI Tutorial DSP

    10/65

    Gua del Usuario Digital Signal Processor

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

    10

    Cualquier pin GPIO A, (General propose I/O) puede ser conectado a uno de las tresinterrupciones externas del ncleo.

    Bloques PIE (peripheral Interrupt Expansion) que soportan todas las 43interrupciones 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 deentrada.

    Avanzadas caractersticas de emulacino Funciones de anlisis y Breakpoint.

    o Debugeo en Tiempo real via Hardware. Soporte de desarrollo incluye

    o ANSI Compilador C/C++/Enamblador/Linkero 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:

  • 8/3/2019 MCI Tutorial DSP

    11/65

    Gua del Usuario Digital Signal Processor

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

    11

    Figura 2-1 Mapa de memoria del DSP.

  • 8/3/2019 MCI Tutorial DSP

    12/65

    Gua del Usuario Digital Signal Processor

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

    12

    El mapa muestra las direcciones de memoria que el DSP es capaz de direccionar, ascomo tambin la distribucin de la misma, es decir, qu direccin ocupan los diferentesdispositivos destinados a funciones diferentes. Se observa que el bus de datos es de 32 bitesto se nota en el largo de las direcciones que logra acceder el DSP, ya que si el mximofuera hasta FF, entonces el bus sera de 8 bit.

    Debido a la arquitectura Harvard, el espacio de memoria de programa y de datos seencuentran separados utilizando un bus independiente para cada memoria. Esto permite quemientras se accede a un espacio de memoria de programa, sea posible acceder a la memoride datos al mismo tiempo, es decir, es posible acceder a ellos casi al mismo tiempo.

  • 8/3/2019 MCI Tutorial DSP

    13/65

    Gua del Usuario Digital Signal Processor

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

    13

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

    Figura 2-2 Diagrama de bloques del DSP.

  • 8/3/2019 MCI Tutorial DSP

    14/65

    Gua del Usuario Digital Signal Processor

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

    14

    2.2 Tarjeta de Desarrollo para el DSP.

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

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

    El esquemtico de la tarjeta se muestra a continuacin:

  • 8/3/2019 MCI Tutorial DSP

    15/65

    Gua del Usuario Digital Signal Processor

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

    15

    Figura 2-4 Esquemtico de la tarjeta de desarrollo TMS320 F28016.

  • 8/3/2019 MCI Tutorial DSP

    16/65

    Gua del Usuario Digital Signal Processor

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

    16

    Las principales caractersticas que posee la tarjeta son:

    MCU: TMS320F28016 32KB Flash, 12KB RAM, 3.75 MPSP 2x8 Canales ADC, 8PWM, 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.

  • 8/3/2019 MCI Tutorial DSP

    17/65

    Gua del Usuario Digital Signal Processor

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

    17

    3 Programacin.

    Este captulo mostrar la forma de programar el DSP. Se explicar cmo utilizar losperifricos de la placa adems de indicar las herramientas ms tiles para crear unprograma complejo como por ejemplo el CodeComposer Studio (CCS), el administrador derecursos (memoria) y el Debugger.

    3.1 Flujo de un programa

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

    Figura 3-1 Flujo de un Programa Tipo.

  • 8/3/2019 MCI Tutorial DSP

    18/65

    Gua del Usuario Digital Signal Processor

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

    18

    Partiendo del Reset, se inicia un cdigo de programa que indica el espacio dememoria que contiene la primera instruccin. Esta secuencia es la llamada Secuencia deBoteo. Posteriormente viene el CodeStartBranch que es usado para redirigir desde el boteoa la rutina C init. ste puede ser configurado para deshabilitar el timer WatchDog si es queste sobrepasa el lmite dado antes de que se ejecute main(). El CodeStartBranch esasignado a la seccin BEGIN por el linker. Luego viene la rutinaC init la cual posee elarchivo de boteo del compilador el cual es automticamente incluido en la librera entiempo de ejecucin.

    Posteriormente en la funcin main() (Initialize System Control), se inicializa elsistema de control, se encienden los relojes de los perifricos y se ajustan las escalas destos. Adems se puede deshabilitar el WatchDog Timer. Se configuran los pines depropsito general GPIO (Initialize GPIO) para las funciones perifricas o comoentrada/salida. Se inicializa completamente elPIE Vector Tablecon punteros al Serviciode Rutina de Interrupciones (ISR) que se encuentran enDSP280x_DefaultIsr.c. Es tilpara 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 losperifricos requeridos para el proyecto deseado. Esto es, configurar los bits segn la formaen que se utilizarn las funciones de los pines GPIO. Finalmente se deben habilitar lasinterrupciones 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 TexasInstruments. CCS entrega todas las herramientas necesarias para soporte de software entiempo real para el DSP TSM320.

    CCS permite un manejo rpido y sencillo para moverse en todas las fases delproceso de diseo de una aplicacin, incluyendo cdigo y compilacin, debug, anlisis yafinamiento. En lo siguiente se explicar lo bsico para poder comenzar a utilizar el CCS ycrear aplicaciones simples, que sern la base para programas ms complejos posteriores.

    Es posible bajar una versin de prueba del CCS en estelink4, o directamente de lapgina oficialwww.ti.com. Luego para poder utilizar esta versin con la tarjeta dedesarrollo de OLIMEX, se debe bajar una actualizacin llamadaXDS100 la cual puede serdescargada de OLIMEX desdeaqu 5. Entre las principales propiedades del CCS seencuentran las siguientes:

    4 http://dl-www.ti.com/lit/ml/sprc119d/sprc119d.zip500MB aprox. Version de prueba de 120 dias.

    5 http://www.olimex.cl/soft/DSP/XDS100pp_Beta2.exe

  • 8/3/2019 MCI Tutorial DSP

    19/65

    Gua del Usuario Digital Signal Processor

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

    19

    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 encuentranlas herramientas de trabajo que mejoran el tiempo de trabajo para desarrollo de software yoptimizan 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 paramultiproyectos 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.

  • 8/3/2019 MCI Tutorial DSP

    20/65

    Gua del Usuario Digital Signal Processor

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

    20

    Transmitidor de datos RTDX para intercambio en tiempo real entre la tarjeta y elcliente.

    Un sin nmero de guas y cdigos de ejemplo para hardware y software. Ademsde tutoriales y manuales.

    El software Code Composer Studio adems incluye:

    DSP/BIOS Kernel para el TMS320 DSPso 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 CCSse puede descargar desde la pginawww.ti.com, o directamente en el siguientelink6, dondeluego de instalarlo aparecern dos conos. Dependiendo de la versin el nombre podracambiar. Para la versin actual 3.3 serCCStudio v3.3y Setup CCStudio v3.3. Elprimero corresponde al CCS en s, mientras que el otro se debe correr antes de empezarcualquier proyecto. Este programa se encarga de la configuracin bsica del DSP as comotambin de sus libreras. Para el correcto funcionamiento con la placa, se debe actualizar laversin del CCS con el ltimoService Packdisponible en la pgina de Texas Instruments,luego bajar el driverXDS100que se puede descargar desde el siguientelink7 o desde lapgina dewww.olimex.cl. Este ltimo se encarga de emular la tarjeta a travs del JTAG dela 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 http://dl-www.ti.com/lit/ml/sprc119d/sprc119d.zip500MB aprox versin de prueba de 120 dias.7 http://www.olimex.cl/soft/DSP/XDS100pp_Beta2.exe

  • 8/3/2019 MCI Tutorial DSP

    21/65

    Gua del Usuario Digital Signal Processor

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

    21

    Es ms lento que otras versiones como las XDS510 o XDS560 que utilizan el JTAGen 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 aparecera siguiente ventana:

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

    Seleccionar Create Board y luego elegir la conexinTIXDS100pp Emulatorypresionar el botnADD. En la siguiente ventana escribir un nombre arbitrariamentepresionar el botnNEXTy luegoFINISH. Esto ltimo se muestra en la siguiente ventana:

  • 8/3/2019 MCI Tutorial DSP

    22/65

    Gua del Usuario Digital Signal Processor

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

    22

    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.

  • 8/3/2019 MCI Tutorial DSP

    23/65

  • 8/3/2019 MCI Tutorial DSP

    24/65

  • 8/3/2019 MCI Tutorial DSP

    25/65

    Gua del Usuario Digital Signal Processor

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

    25

    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 llamadaDebug, 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 enFile->Load Programo simplemente presionarCTRL+L. Dentro de la carpeta del proyecto, aparecer una llamada Debug, y dentro deella un archivo llamadoBlinking_Led.out. Seleccionarlo y presionarOpen y CCScomenzar automticamente a cargar el programa en la tarjeta. Para poder realizar loanterior, CCS debe haber reconocido previamente la tarjeta y debe mostrar el mensajeConnected(muestraHalted una vez conectado que es algo as como Pausado). Lo anteriorse 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 aDebug->Runo simplemente presionarF5 e inmediatamente elprograma comenzar a funcionar. Para esto la tarjeta debe permanecer conectada al PC pomedio del JTAG y alimentada correctamente. Adems los jumper de configuracin debenser los adecuados. Esto de indica en lo siguiente.

    Si se desea que la tarjeta ejecute el programa al reiniciarse sin la necesidad dehacerlo mediante el JTAG, es necesario guardar el cdigo del programa en la memoriaFLASH, ya que la otra memoria es voltil, razn por la cual se pierde el programa al quitar

  • 8/3/2019 MCI Tutorial DSP

    26/65

    Gua del Usuario Digital Signal Processor

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

    26

    la alimentacin de la placa. Adems se debe configurar correctamente los jumpers. stosse indican mediante la etiqueta boot (autoarranque) en la Figura 2-3. La configuracin destos se muestra en la siguiente tabla. Ms adelante se explicar en detalle cmo hacer esto.

    Modo de Booteo Descripcin GPIO18 GPIO29 GPIO34FLASH/ROM Salta a la direccin 0x33 7FF6 de la FLASH/ROM. 1 1 1SCI-A Carga un Stream de datos desde la SCI-A. 1 1 0SPI-A Carga la data desde una memoria serial EEPROM

    externa mediante SPI usando SPI-A.1 0 1

    I2C Carga la data desde una EEPROM externa, en ladireccin 0x50 del bus I2C.

    1 0 0

    e-CAN-A Llama al CAN_BOOT para cargar desde la bandejade entrada 1 del eCAN-A.

    0 1 1

    M0 SARAM Salta a la direccin 0x00 0000 de M0 SARAM. 0 1 0OTP Salta a la direccin 0x3D 7800 de la memoria OTP. 0 0 1I/O paralelo Carga la data desde GPIO0-GPIO15. 0 0 0

    Tabla 3-1 Configuracin Jumpers para Booteo.

    La configuracin del ejemplo Blinking_LED requiere que la tarjeta se encuentre enel 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 encuentraconectado al pin 70 (GPIO 11). El parpadeo se produce cada medio segundo, tiempo queest determinado por la variableBLINK_TIMEdentro de la cabecera del cdigo. Ademscada vez que el botn de la placa es presionado (conectado al pin 61, GPIO 9) el LED seenciende y se mantiene as por el tiempo que dure presionado el botn. Cuando se sueltael LED sigue parpadeando.

  • 8/3/2019 MCI Tutorial DSP

    27/65

    Gua del Usuario Digital Signal Processor

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

    27

    Por ejemplo si se desea cambiar el tiempo de parpadeo se cambia el valor 500000dado a la variable BLINK_TIME por otro elegido arbitrariamente. Si se coloca 1000000 eparpadeo 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 envez 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.

  • 8/3/2019 MCI Tutorial DSP

    28/65

    Gua del Usuario Digital Signal Processor

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

    28

    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 sepresione el botn el led se apagar en vez de encenderse.

    Para detener un programa se debe presionarDebug->Halt(Shift+F5) o cual harque el programa se pause. Para volver a ejecutarlo desde el principio se debe presionarDebug->Restart(CTRL+Shift+F5). Para reiniciar el emulador se debe ingresarDebug->Reset Emulator(CTRL+Shift+R).

    Entre los archivos principales que se observan en la Figura 3-12 se tienen:

    Nombre Archivo DescripcinBlinking_LED_main.c Cdigo Fuente especfico del Ejemplo.

    DSP280x_CodeStartBranch.asm Cdigo fuente comn (compartido).

    Contienen funciones genricas paraconfigurar los perifricos a un estadodefinido o funciones que se podranreutilizar en diferentes aplicaciones.

    DSP280x_CpuTimers.c

    DSP280x_DefaultIsr.cDSP280x_GlobalVariableDefs.c Archivo requerido para utilizar los archivos

    de cabecera (Header Files).DSP280x_PieCtrl.c Cdigo Fuente compartido. Se utiliza para

    ajustar y configurar algunos perifricos.DSP280x_PieVector.cDSP280x_SysCtrl.c28016_RAM_lnk_cmd Permite asignar secciones a los bloques dememoria especficos de un dispositivo.

    DSP280x_Headers_nonBIOS.cmd

    Archivo linker requerido por los archivos decabecera especficos de los perifricos.Asigna una seccin de datos de los registrosde los perifricos a una apropiada locacinde memoria.

    Tabla 3-2 Archivos principales de un proyecto.

    Entre las carpetas mencionadas en la misma figura se encuentra la carpetaInclude 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 delusuario (por ejemplo, los que tienen#includeen Blinking_LED_main.c). Entre estos est:DSP280x_Device.h, que incluye los archivos de cabecera especficos para manejar algunosperifricos y algunas macros y typedef especficas para algunos dispositivos; yDSP280x_Examples.hque define parmetros que son usados en el cdigo fuente deejemplo, adems es requerido por algunos archivos fuente comunes. En general alcomenzar un nuevo proyecto, se deben incluir, a lo menos, los archivos mencionados en laTabla 3-2 y los pertenecientes a la carpetaInclude.

  • 8/3/2019 MCI Tutorial DSP

    29/65

    Gua del Usuario Digital Signal Processor

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

    29

    Otra carpeta es laDSP/BIOS Configque contiene el archivo de configuracin oscript para poder trabajar en aplicaciones en tiempo real que requieran un manejo dememoria y recursos al lmite. Adems permite sincronizacin en tiempo real; comunicacincliente-tarjeta en tiempo real; e instrumentacin en tiempo real.

    La carpetaGEL Files, contiene unos archivos llamadosGeneral ExtensionLanguage (GEL)que son usados para inicializar automticamente el dispositivo cuando seinicia el CCS. Se encarga entre otras cosas de reconocer que la tarjeta se encuentraconectada; de compilar y cargar el programa con un solo click; y de configurarse apenas seinicia el CCS (por esto se debe quitar del proyecto este archivo si se va a utilizar otrodispositivo o ejemplo). Funciona por medio de un lenguaje interpretado similar a C lo quelo hace cmodo para trabajar. Del mismo modo posee una gran variedad de funcionesdonde adems es posible crear las propias segn la necesidad.

    3.5 Debuggear.

    El debugeo (viene de Debugging en ingls - Limpieza) es un proceso metdico quepermite reducir los bug o errores en un programa. Entre estos permite: colocar Breakpointsejecucin instruccin a instruccin; y observar el valor de una variable en tiempo deejecucin. CCS tiene varias funcionalidades que permiten realizar estas tareas de manerasimple.

    CCS permite colocar Breakpoints en alguna lnea de cdigo. Cuando el programa seejecute y se encuentre con un breakpoint, ste se detendr en esa lnea y no continuar hastque se le ordene (no ejecuta la lnea que posee el breakpoint). En el tiempo en que seencuentre detenido, es posible observar los valores de las variables que el programa tieneen ese momento. Adems es posible modificar esos valores y asignarles algunoarbitrariamente. Para colocar un breakpoint simplemente se debe hacer doble click alcomienzo de la lnea, a lo cual aparecer un punto rojo, que indica que se ha colocado unbreakpoint. Para sacarlo se debe volver a hacer doble-click. Esto se muestra en la siguientefigura:

    Figura 3-13 Colocacin de un Breakpoint.

  • 8/3/2019 MCI Tutorial DSP

    30/65

    Gua del Usuario Digital Signal Processor

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

    30

    Para el ejemplo de la figura, se utiliz el mismo proyecto Blinking_led.pjt donde seagregaron 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 variablevariable por unossegundos, aparecer el valor que posee en ese momento. El valor mostrado en este caso eel que el compilador le asigna a las variables que no son inicializadas. Si luego se ejecuta lasiguiente lnea conDebug->Step overo simplemente presionando F10, la variable tendrel 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 lalnea en la que se encuentra la ejecucin de instrucciones), ha avanzado. Si se vuelve apresionar F10, ahora la variable es igual a 124, y la flecha amarilla se colocar en lasiguiente 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 locual ejecutar la funcin completamente para luego saltar a la siguiente lnea. O bien sepuede hacer unDebug->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 lomismo antes mencionado, como leer variables o ejecutar lnea a lnea. Si se desea que se

  • 8/3/2019 MCI Tutorial DSP

    31/65

    Gua del Usuario Digital Signal Processor

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

    31

    complete la funcin y que se site en la siguiente lnea de cdigo luego de sta, se debepresionar Debug->Step-out(Shift+F11). Esto terminar de ejecutar la funcin y secolocar en la siguiente lnea que corresponda antes de haber entrado a la funcin. Tambines posible saltar hasta cualquier lnea deseada con Debug->Run to Cursor (CTRL+F10).

    Para que el programa siga ejecutndose normalmente luego de haber estado pausadopor un breakpoint, se debe presionar Run (F5). Si existe otro breakpoint ms adelante, eprograma se detendr ah. Para ejecutar el programa instruccin a instruccin (en lenguajeensamblador) en vez de lnea en lnea (lnea de cdigo), se utilizan las funciones presentesen Debug->Source Stepping.

    Otra forma de ver las variables en tiempo de ejecucin es utilizando el llamadoWatch Window. Esto es un ventana en la cual se van agregando variables simplementehaciendo click derecho sobre ella y presionandoAdd to Watch Window. Por cada variableagregada, se permite ver su nombre, su valor, su tipo y el formato en que se desea ver evalor. Esto se muestra en la siguiente figura:

    Figura 3-16 Watch Window.

    Por ejemplo en la figura anterior, se observa que se agreg la variablevariable 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 diceRedixy aparecer una listacon otros formatos, donde por ejemplo, si se elige HEX, el valor 24 aparecer enhexadecimal (0x18) en vez de decimal. Los tab indican qu variables se vern. El tabWatch Localspermite ver las variables que actualmente se estn ejecutando en la funcin,

    mientras queWatch permite ver tanto las variables locales como globales. Adems esposible agregar expresiones dentro Watch Windows. Por ejemplo se puede escribir en lacolumnaName lo siguiente:variable+500. Con lo anterior, cada vez que se actualice elvalor de esta variable, tambin aparecer el resultado de esa expresin.

    Si ahora se hace click derecho en el tab deWatch 1, y se presionaAdd Globals toWatch, se podrn agregar variables globales. Por ejemplo si se agrega la variable

  • 8/3/2019 MCI Tutorial DSP

    32/65

    Gua del Usuario Digital Signal Processor

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

    32

    GpioDataRegs segn se observa en las siguientes imgenes, ser posible ver cmocambian los registros al momento de presionar el botn de la tarjeta. Por ejemplo seexpande la estructura de la variable segnGpioDataRegs->GPADAT->bity se observa elregistro del pin 61 llamado GPIO 9. Se observa que tiene un valor 0, pero si se mantienepresionado el botn de la tarjeta y luego se presionaRefresh (aparece en el mismo menque Add Globals to Watch), se ver cmo este valor cambia a 1. Esto indica que el botnest presionado, o lo que es lo mismo, el pin est conectado a LOW (esto se observa en eesquemtico de la tarjeta en la Figura 2-4, donde se ve que al presionar el botn, el pin 6hace puente con tierra).

  • 8/3/2019 MCI Tutorial DSP

    33/65

    Gua del Usuario Digital Signal Processor

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

    33

    Figura 3-17 Agregar variables Globales.

  • 8/3/2019 MCI Tutorial DSP

    34/65

    Gua del Usuario Digital Signal Processor

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

    34

    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, sedebe ingresar aDebug->Real Time Mode. Luego en el tab de la ventana de WatchWindows, hacer click derecho y en el men desplegable hacer click aContinuous Refresh.Con esto las variables se actualizarn apenas cambie su registro. Esto se debe hacer luegode haber compilado y cargado en la tarjeta el cdigo fuente. En caso de que aparezca algnerror y CCS no se pueda conectar a la tarjeta, se debe desactivar la opcinReal Time.

    Para poder realizar los siguientes tres puntos, se debe haber compilado el cdigofuente y luego cargarlo en la tarjeta de desarrollo, antes de realizar los cambios, ya que e

  • 8/3/2019 MCI Tutorial DSP

    35/65

    Gua del Usuario Digital Signal Processor

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

    35

    CCS verifica las variables y arreglos antes de visualizarlos o guardarlos. Adems se debetener 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 puntoen el cual se desee obtener algn dato. En este caso se ingresa en la lnea 201 en donde setiene una variable del tipounsigned int16(Uint16)Historial[BUF_SIZE]. Luego seingresa a Debug->Breakpoints donde aparecer una ventana en la parte inferior del CCS, tacomo se muestra en la siguiente figura:

    Figura 3-20 Administrador de Breakpoints.

    Se observa que aparece el nmero de lnea, as como otras caractersticas. Tieneespecial importancia la columnaAction, ya que si se presiona aparecer un mencontextual con una opcin llamadaWrite 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 siguienteinformacin:

  • 8/3/2019 MCI Tutorial DSP

    36/65

    Gua del Usuario Digital Signal Processor

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

    36

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

    El primer campoFile indica la direccin en donde se guardar el archivo creado conlos datos del programa, cuya extensin ser*.DAT. La forma del archivo consiste en laprimera lnea con informacin sobre el archivo y luego cada lnea representa un dato con eformato dado por los parmetros indicados en el programa. EnFormat se indica el formatoen el cual se representan los datos. Como la variable que se quera guardar es Uint16,entonces se eligeInteger (INT). EnStart Addressse debe indicar la direccin de memoriadel DSP en la cual se comenzar a leer para su posterior guardado dentro del archivo. Debeestar en formato hexadecimal, aunque es posible tambin incluir el nombre de la variablecomo en este caso donde se coloc Historial. EnPage se indica la seccin de memoria queser leda. ComoHistorialse encuentra en la memoria de datos, entonces se eligeData. EnLength se indica el largo o tamao de la memoria a ser leda con el formato dadoanteriormente. Como se tiene una variable que es un arreglo, en la figura anterior seobserva que se guardarn los 20 primeros valores.

    Luego cada vez que el programa pase por la lnea del breakpoint, guardar los 20primeros valores del arreglo Historial en el archivo ArchivoSalida.dat. No borrar los datosino que los escribir a continuacin de cada corrida siempre y cuando se mantenga laventana 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 seguirnescribiendo mientras esta ventana se mantenga. Si se presiona Stop (botn con uncuadrado) se dejar de escribir los datos en el archivo, y si se presiona Play (botn con untringulo) se seguir escribiendo desde la ltima ubicacin en el archivo. Si se cierra estaventana, el procedimiento debe hacerse de nuevo desde los ajustes de los parmetros.

  • 8/3/2019 MCI Tutorial DSP

    37/65

    Gua del Usuario Digital Signal Processor

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

    37

    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 delcomputador, 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 deque en el men contextual se debe presionarRead data from a File. As aparecer lasiguiente figura:

    Figura 3-24 Leer datos desde un archivo.

    El campoFile indica el archivo a ser ledo donde cada lnea representa el valor quese 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 estdesactivado y se llega al fin del archivo el programa ser pausado (Halted) y aparecer unmensaje. Los otros campos son los mismos que para escribir un archivo de salida.

    Cabe mencionar que tanto escribir como leer datos de un archivo consumenrecursos del DSP, por lo que algunas operaciones podran tardar ms que si la tarjeta lohiciera sola en tiempo real. Para maximizar la utilidad de estas aplicaciones se recomiendautilizar archivos cortos y variables auxiliares para que no tome demasiado tiempo enrealizar estas acciones.

    3.5.3 Graficar datos en tiempo real.

    Esta opcin es bastante til cuando se desean ver seales en tiempo real. Para poderhacerlo se debe haber compilado y cargado el cdigo en el programa. Luego se ingresa aView->Graph->Time/Frequencydonde aparecer la siguiente ventana:

  • 8/3/2019 MCI Tutorial DSP

    38/65

    Gua del Usuario Digital Signal Processor

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

    38

    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. Esrecomendable 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 emergentepresionar View location of, para lo cual aparecer una ventana en la parte derechadel CCS, con el nombre de la variable y su direccin de memoria. Escribirla de laforma (por ejemplo) 0xF34F.

    Page: Indica la seccin de memoria en la cual se leer la direccin dada en el puntoanterior.

  • 8/3/2019 MCI Tutorial DSP

    39/65

    Gua del Usuario Digital Signal Processor

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

    39

    Acquisition Buffer Size: Indica la cantidad de valores que sern ledos desde ladireccin en un instante dado de tiempo. Es til para cuando se desean leer framesen vez de un solo dato. Por ejemplo si importa slo un dato en cada momento secoloca un 1, pero si la variable es un frame o arreglo de 100, entonces se indica ellargo del frame igual a 100 en este campo.

    Index Increment: ndice de incremento para el grfico. til cuando se deseagraficar 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 recomiendacolocar la opcin 16-bit unsigned integer.

    Sample Rate (Hz):Tasa a la que sern mostrados los datos. Esto slo afecta loslabels del eje del tiempo. As los labels sern desde 0 hasta

    1 DisplayDataSize

    SampleRate

    . Para el grfico en el dominio de la frecuencia, este

    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 mejorpanorama de la seal.

    Luego de haber configurado lo anterior y presionar OK, se tendr lo de la siguientefigura. Pero antes de debe ingresarDebug->Real Time Mode.

    Figura 3-26 Grfico realizado con los datos.

  • 8/3/2019 MCI Tutorial DSP

    40/65

    Gua del Usuario Digital Signal Processor

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

    40

    Para una correcta visualizacin se debe hacer un click derecho sobre el grfico, y enel men contextual presionarContinuous Refresh. As el grfico se ir actualizandoautomticamente con cada dato. Para observar la seal que se desea simplemente se debecorrer el programa (F5) y el grfico comenzar a actualizar los datos que se estnmonitoreando.

    3.6 Conversor ADC.

    Se sabe que el DSP TMS320F28016 posee 16 canales para un conversor ADC de 12bit 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 atravs de un nico registro por canal. La conversin permite un rango entre 0 y 3 volts,cuya frmula es:

    40963 ADC

    valor

    IN ADC = (3.1)

    Donde ADC IN es el valor del voltaje del conversor y el 4096 equivale al valormximo para un nmero de 12 bit. Cualquier voltaje menor a 0 volt ser entregado comocero, 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 mduloADC se encarga de guardar los valores en sus registros correspondientes y sus respectivasdirecciones. Utilizando los registros de control es posible utilizar los secuenciadores, loscuales permiten 16 autoconversiones en una sola sesin (tiempo dado entre la conversindel primer canal y el ltimo), donde cada conversin es guardada en cualquier registropreviamente seleccionado.

  • 8/3/2019 MCI Tutorial DSP

    41/65

    Gua del Usuario Digital Signal Processor

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

    41

    Figura 3-27 Diagrama de Bloques del ADC.

    En la siguiente figura se muestra un diagrama de bloques simplificado. Se observala funcionalidad de los secuenciadores, los cuales permiten realizar un muestreo simultneopor 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 instantneaen tiempo real. Por medio del autosecuenciamiento, se puede elegir el orden en el cual loscanales ADC de conectan al ncleo del conversor, para as crear una secuencia simple dehasta 8 muestras, o de hasta 16, utilizando los secuenciadotes en cascada.

  • 8/3/2019 MCI Tutorial DSP

    42/65

    Gua del Usuario Digital Signal Processor

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

    42

    Figura 3-28 Diagrama Simple del Bloque ADC.

    Entre los principales bloques se encuentran dos bloques de multiplexores (MUX) de8 canales que expanden la capacidad de conversin a 16 canales. Junto a estos seencuentran dos S/H (Sample and Hold) que permiten la conversin simultnea antesmencionada. El Sequence Arbiter (rbitro del Secuenciador) mantiene la pista de lasseales de entrada unidas al ADC, incluyendo el modo simultneo. Autosecuenciadores

    duales dan flexibilidad seleccionando al azar la forma en que los canales de entrada seconectan al ncleo ADC. Cada secuenciador de 8-estados puede ser usadoindependientemente para convertir hasta ocho canales en una secuencia predeterminada oen cascada para formar un secuenciador simple de 16 estados.

    Por medio del registro ADCMACONV es posible ajustar el nmero mximo deconversiones por secuencia. Se observa adems que es posible usar una de tres seales para

  • 8/3/2019 MCI Tutorial DSP

    43/65

    Gua del Usuario Digital Signal Processor

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

    43

    disparar (trigger) el inicio de secuencia (SOC Start of Sequence) en el Secuenciador 1 ydos seales para SOC en el Secuenciador 2. Existen 16 registros de resultados(ADCResult0-ADCResult15) que mantienen el conteo ADC antes de que sean transferidosa la memoria del sistema. Cuando se termina una secuencia (EOC End of Sequence) seproducen tres diferentes seales de interrupciones que son ADCINT, SEQ1INT ySEQ2INT las cuales pueden ser usadas para transferir los resultados al sistema de memoria.Las interrupciones son generadas cuando el secuenciador completa la ltima conversin delltimo canal de la secuencia. El Servicio de Rutina de Interrupcin (ISR - Interrupt ServiceRoutine) dispone de estas nicas seales de interrupcin para las operaciones ADC.

    Ahora se ver el otro ejemplo provisto por OLIMEX8 que consiste en utilizar unconversor ADC. Para esto se utiliza el potencimetro de la placa que se encuentraconectado al pin 34, llamado ADCINB7. Los elementos de los ejemplos que se vern semuestran 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 ciertafrecuencia, la cual est regulada por el trimmer (potencimetro). ste se encuentraconectado 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 delwhile{}el siguiente cdigoAdcRegs.ADCST.bit.INT_SEQ1== 0;. Este cdigopregunta por el registro que indica que el secuenciador 1 ha terminado la secuencia y es

    8 Bajar este y otros ejemplos desdewww.olimex.cl, seccinTarjetas Olimex->DSP.

  • 8/3/2019 MCI Tutorial DSP

    44/65

    Gua del Usuario Digital Signal Processor

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

    44

    posible la lectura del conversor ADC, correspondiente al pin 34 (ADC B7en la placa).Posterior a eso se resetea ese bit (AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;) paraesperar por la nueva secuencia. De ah se observa que guarda los datos de los 15conversores en un arreglo llamadoAdcSampleTable[]. Con el cdigoADC_Result =AdcRegs.ADCRESULT15>>4; guarda el valor que ser usado en el ejemplo en esavariable. El smbolo>>4 divide el valor obtenido en la conversin por 24 , esto permitebajar la resolucin a la lectura, puesto que como se mide entre 0 y 3, los bit menossignificativos estn de ms para este tipo de experimento, pues se est utilizando unconversor de 12 bits sobre una variable de 16 bits. Luego el programa apaga el led y con elvalor medido guardado enADC_Result,se utiliza como entrada en una funcin llamadaDelay(), que no es ms que un for{} simple de ciclo variable dado por el parmetro deentrada de la funcin, el cual viene de la muestra obtenida del conversor. Posteriormente sevuelve a encender el led para luego volver a utilizar la funcin delay. Esto se muestra en laFigura 3-30 donde se observa que adems de medir el valor de ADCB7, tambin midetodos los conversores, es decir los otros 15 (son 16 en total). En este casoADCSampleTable[15] corresponde al pin 34 (ADCB7).

    Figura 3-30 Ejemplo Conversor ADC.

    Para poder utilizar los conversores ADC se deben configurar los siguientesregistros:

    Tasa de muestreo. Configurar/Seleccionar el Autosecuenciador.

  • 8/3/2019 MCI Tutorial DSP

    45/65

    Gua del Usuario Digital Signal Processor

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

    45

    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 segnse 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 referenciaTMS320x280x, 2801x, 2804xDSPAnalog-to-Digital Converter (ADC)(spru716b.pdf) o aAn Overview of DesigningAnalog 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, quepermiten por medio de un men desplegable, la compilacin de un proyecto, carga decdigo o simplemente ajusta la ventanaWatch Windows con las variables deconsideracin. Este archivo se carga una vez junto con el proyecto, y junto a ste aparece elmen GEL con las funciones disponibles. Cabe mencionar que el archivo GEL quedacargado 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 menGEL del ejemplo ADC conversor. El archivo GEL viene ya creado con el ejemplo por loque slo bastar con cargarlo en el proyecto. Para esto ingresar aFILE->Load GELybuscarlo en la misma carpeta del ejemplo. Para crear un archivo GEL propio se debe leer laayuda de VII.- spraa74a.pdf - Creating Device Initialization GEL Files. disponible enwww.ti.com.

    Un vez cargado el archivo GEL aparecer el siguiente men en la barra deherramientas. Adems el archivo GEL aparecer en el panel del proyecto en la carpetaGEL FILES.

  • 8/3/2019 MCI Tutorial DSP

    46/65

    Gua del Usuario Digital Signal Processor

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

    46

    Figura 3-31 Men desplegable para archivo GEL.

    Antes de haber cargado el archivo GEL, en el men mencionado anteriormente noaparece nada, pero luego se observar en el men desplegable las funciones disponibles delarchivo. En el men se observa una opcin llamadaDSP280x ADC Seq_ovd Testy dentrode ste, tres funciones llamadasLoad_and_Build_Project(); Load_Code(); ySetup_WatchWindow().Si se observa el archivo GEL y se abre, se vern varios tems. Elprimero llamadomenuitemque tiene el nombre del men GEL entre comillas en la barrade herramientas. Este men corresponde a uno general para agrupar las funciones segnutilidad o gusto del usuario. El otro tem que se observa se llamahotmenuy corresponde ala funcin en s. Se ven tres funciones hotmenu que son las que aparecen en el men de labarra de herramientas. Los nombres de estas funciones se pueden crear arbitrariamente,para que hagan referencia a su utilidad. Por ejemplo la tercera funcin hotmenuSetup_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 quese encuentren actualmente dentro de la ventana. La funcin GEL_WatchAdd() agrega unavariable de inters. Con lo anterior es posible as agregar todas las variables deseadas, sintener que buscarlas dentro del cdigo una por una cada vez que se reinicia el CCS.

  • 8/3/2019 MCI Tutorial DSP

    47/65

    Gua del Usuario Digital Signal Processor

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

    47

    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 sonlas que aparecen con el prefijo GEL y vienen dentro de la librera de CCS. A continuacinse muestra una tabla con las funciones provistas. Para un mayor detalle de su uso dirigirse ala ayuda de CCS.

    Funciones GELGEL_AddInputFile() GEL_AddOutputFile() GEL_AdvancedReset() GEL_Animate()

    GEL_AsmStepInto() GEL_AsmStepOver() GEL break Statment GEL_BreakPtAdd()

    GEL_BreakPtDel() GEL_BreakPtDisableGEL_BreakPtReset()GEL_CancelTimer GEL_DisableRealtime()

    GEL_Exit() GEL_SymbolShowSection() GEL_ProbePtAdd() GEL_EnableClock()

    OnHalt GEL_EnableRealtime() GEL_HWBreakPtDisable GEL_IsInRealTimeMode

    GEL_Go() GEL_SharedMemHaltOnStepOff() GEL_Halt() GEL_Load()

    GEL Grammar GEL_HWBreakPtAdd() GEL_HWBreakPtReset() GEL_LoadGel()

    GEL_MapDelete() GEL_HWBreakPtDel() GEL_MemoryFill() GEL_MapReset()

    GEL_MapAddStr() GEL_SharedMemHaltOnStepOn() GEL_MapOff() GEL_MapOn()

    GEL_PatchAssembly() GEL_PinConnect() GEL_PortConnect() GEL_PortDisconnect()

    GEL_SyncRun GEL_ProjectCreateDefaultConfig() GEL_ProjectLoad() GEL_ProjectRebuildAll()

    GEL_RemoveDebugState GEL_RemoveInputFile() GEL_RemoveOutputFile() GEL_Reset()

    GEL_SetSimMode() GEL_SetWaitInResetMode() GEL_RefreshWindows GEL_LowPowerRun()

    GEL_SrcDirRemoveAll() GEL_SrcStepInto() GEL_SrcStepOver() GEL_StopTransferToFile()

    GEL_SymbolAdd() GEL_SymbolAddRel() GEL_SymbolHideSection() GEL_SymbolRemove()

    GEL_TextOut() GEL_TransferToFile GEL_TransferToFileConfg GEL_UnloadAllSymbols()

    OnFileLoaded() Gel_LoadProfileConfiguration OnPreFileLoaded() OnReset()

    GEL_ProjectClose() GEL_ProjectRebuildAllConfig() GEL_OpenWindow() GEL_MapAdd()

    GEL_ProjectBuild() GEL_ProjectRebuildAllConfig() GEL_MemoryLoad() GEL_MemorySave()

    GEL_StepOver GEL_ProbePtDel() GEL_ProbePtDisable GEL_ProbePtReset()

    GEL_SyncStepOver GEL_ProjectRemoveConfig() GEL_ProjectSave() GEL_ProjectSetActive()

    GEL_Restart() GEL_RestoreDebugState GEL_SrcDirAdd() GEL_RunF()

    GEL_WatchAdd() GEL_SharedMemHaltOnWriteOff() GEL_StepInto GEL_StepOut

    GEL_SyncHalt GEL_SharedMemHaltOnWriteOn() GEL_SyncStepInto GEL_SyncStepOut

    GEL_SymbolLoad() GEL_OpenMemoryWindow GEL_SymbolLoadRel() GEL_System()

    GEL_UnloadGel() GEL_ProjectSetActiveConfig() GEL_WatchDel() GEL_WatchReset()

    OnResetDetected() GEL_SetBlockResetMode() OnTargetConnect() GEL_Run()

    GEL_SetTimer GEL_OpenDisassemblyWindow GEL_TargetTextOut() OnRestart()

    GEL_ProjectCreateCopyConfig() GEL_ClearProfileConfigurationGEL_CloseWindow()Tabla 3-3 Funciones GEL disponibles.

  • 8/3/2019 MCI Tutorial DSP

    48/65

    Gua del Usuario Digital Signal Processor

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

    48

    3.8 Ejemplo Echo Back usando SCI.

    Este ejemplo, al igual que los anteriores, est disponible en la pgina deIngenieraMCI 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 cablesasncrona. Se basa en el formato NRZ (non return to zero). Permite la autodeteccin de lavelocidad de conexin. Cola FIFO de 16 niveles. Cada funcionalidad del SCI esconfigurable por software donde bytes dedicados son programados para inicializar elformato de comunicacin deseado del SCI. Entre otras cosas permite configurar lavelocidad de conexin, modo de operacin y protocolo, paridad, largo de los caracteres, Bitde parada, y habilitar interrupciones y prioridades.

    La conexin se realiza utilizando los pines GPIO28 y GPIO29. Estos pines puedenutilizarse como de uso general en caso de que no se use el puerto SCI. El ejemplo funcionade la siguiente forma; cuando vienen datos a travs de este puerto, el programa los enva devuelta, produciendo lo que se conoce como Eco. Viene ya configurado y listo para usar y lonico externo que se necesita es la conexin desde el puerto SCI al PC utilizando el puertoserial. Una opcin es utilizar el puerto USB disponible en la placa del DSP, instalar undriver para crear un enlace virtual entre el puerto USB y el puerto serial del PC y luegocorrer el programa. Este driver se encuentra disponible en la pgina oficial de FTDI10, quees la marca que provee el chip de la tarjeta que convierte de USB a serial. Si se deseautilizar el Hyperterminal se debe bajar el driver VCP (Virtual COM port). Este drivercrear un enlace para el puerto USB, por lo que al utilizar el hyperterminal aparecer unpuerto adicional a los ya existentes. En caso de no disponer de lo anterior, se debe crear unaconexin por medio de un circuito externo entre el puerto serial y la tarjeta (utilizando elconector UEXT). Se debe tener cuidado de los niveles de voltaje a tarjeta y el puerto serialdel 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 unaconexin y se debe configurar para una velocidad de 9600 baudios, 8N1. El puerto a elegirdepende 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 unpuerto con un nmero mayor a 30.

    Luego de iniciar la conexin, se compila y carga el programa en la tarjeta y alinstante aparecer lo siguiente en el hyperterminal, donde cada vez que se escriba algo, elprograma lo enviar de vuelta.

    9 www.olimex.cl 10 http://www.ftdichip.com/FTDrivers.htm

  • 8/3/2019 MCI Tutorial DSP

    49/65

    Gua del Usuario Digital Signal Processor

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

    49

    Figura 3-32 Programa EchoBack con Hyperterminal.

  • 8/3/2019 MCI Tutorial DSP

    50/65

    Gua del Usuario Digital Signal Processor

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

    50

    4 Creando un ejemplo desde cero

    El siguiente ejemplo explicar desde cero la forma de crear un proyecto. Se partirde una estructura bsica a partir de la cual, se comenzarn a agregar libreras o cdigo pararealizar alguna tarea o satisfacer la necesidad del usuario. Si bien programar un DSPrequiere bastante dedicacin y grandes conocimientos en programacin y procesadores, esposible aminorar esto partiendo desde una configuracin bsica basada en los ejemplos. Porello se crear un esqueleto de proyecto el cual ser la base para cualquier otro, logrando aspara 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 comienzadesde el CCS sin abrir nada y se ingresa Proyect->new. Aparecer una ventana como la dela siguiente figura, en la cual se ingresa el nombre del proyecto (LucesRitmicasDSP), lacarpeta donde se crear el proyecto, el tipo de proyecto (*.OUT) y el modelo de la tarjetaDSP.

    Figura 4-1 Creacin de un proyecto.

    Con lo anterior se crear una carpeta con el nombre del proyecto en la carpetaseleccionada junto a dos archivos de extensin: *.PJT que contiene toda la informacin delproyecto; y *.SBL con informacin externa. Ahora se procede a agregar un cdigo fuente.Esto se realiza ingresandoFile->New->Source File. As se crear un archivo en blanco sinninguna extensin. Para comenzar simplemente se copia el cdigo del ejemplo delconversor ADC y guardamos el archivo con extensin *.C para que el CCS lo marquecomo lenguaje C. Luego se agrega al proyecto por medio deProyect->Add Files toProject. As la carpeta del proyecto contendr el archivo LucesRitmicas.c.

  • 8/3/2019 MCI Tutorial DSP

    51/65

    Gua del Usuario Digital Signal Processor

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

    51

    Figura 4-2 Guardar Cdigo Fuente.

    Con lo anterior, se necesita ahora agregar las libreras y archivos de cabecera. Paramantener el orden con respecto a esto y separar los cdigos de lo que son cabeceras, secrearn dos carpetas al estilo de los ejemplos vistos. As se crearn tres carpetas llamadasDSP280x_common; DSP280x_headers; y DSP280x_examples. Las dos primerascontendrn todas las cabeceras necesarias para poder correr los ejemplos, es decir, secopiarn de los mismos ejemplos. La ltima carpeta ser la que contendr al proyectocreado 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 sedebe agregar los directorios al proyecto para que incluya las cabeceras, ya que sino se haceel compilador no es capaz de encontrar los archivos mencionados en #include. Esto se haceingresando aProject->Build Options. As aparecer una ventana como la siguiente:

  • 8/3/2019 MCI Tutorial DSP

    52/65

  • 8/3/2019 MCI Tutorial DSP

    53/65

  • 8/3/2019 MCI Tutorial DSP

    54/65

    Gua del Usuario Digital Signal Processor

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

    54

    Antes de compilar se debe configurar el CCS. Para esto se debe ingresar a lasopciones de compilacin enProject->Build Options. En la pestaaLinker ingresar en lacategoraBasicy enStack Size (-stack)elegir 0x380 y enCode Entry Point (-e)escribircode_start. Esto indica el tamao del stack y la direccin de memoria en la cual seguardar el comienzo del cdigo del programa. Esto se indica en el archivo28016_RAM_lnk.cmd y DSP280x_CodeStartBranch.asm.Luego en la misma pestaaLinker ingresar en la categoraLibraries y modificar el Search Path (i) a..\..\DSP280x_headers\includey el Incl Libraries (-l)ingresarrts2800_ml.lib. Con todolo 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 elejemplo 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 desdeah, pero con el problema de que ante cualquier cambio, pueda aparecer un error ante lafalta de algn tipo de archivo. Se recomienda leer cuidadosamente los ejemplos parautilizar los perifricos.

  • 8/3/2019 MCI Tutorial DSP

    55/65

    Gua del Usuario Digital Signal Processor

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

    55

    4.2 Uso de librera FFT y otras modificaciones.

    Este ejemplo es parte del proyecto LucesRitmicas el cual consiste en muestrear unaseal de audio, calcular su espectro de frecuencias, y en base a los sonidos bajos, medios yaltos, encender o apagar unos led. Se partir del ejemplo visto anteriormente donde elprograma se ejecuta idntico al del conversor ADC, pero en este caso manejaremos otrospines para prender 3 led externos conectados en la placa, y se ajustar un conversor ADCdiferente al conectado al potencimetro de la tarjeta.

    Primero se activarn los LED para usarlos como luces. Se crearn 3 salidasidnticas a las usadas para el ejemplo del Blinking_LED. Se usarn #define para identificarlos 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 funcinGpio_select(); donde el valor del registro esGpioCtrlRegs.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, partiendodesde cero, donde si aparece un 1, indica que el pin funciona como salida. Por ejemplo si sedesea que el pin 11 y el 3 funcionen como salida entonces se debe ingresar un0x0000 0808 (0000 1000 0000 1000). Ahora como se desea que funcionen 3 pines como salida ademsdel pin 11, se debe tener que configurar como0x0000 040E(0000 1000 0000 1110), endonde 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 losregistros 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.cya que crear un error de compilacin el tener dos veces la funcindefinida. Luego de haber realizado los cambios, es posible usar los leds simplementeingresando las macros dadas, del mismo modo que el ejemplo del Blinking_Led.

  • 8/3/2019 MCI Tutorial DSP

    56/65

    Gua del Usuario Digital Signal Processor

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

    56

    Figura 4-7 Funcin Gpio_Select().

    Ahora para el control en el dominio de la frecuencia se usarn unas libreras,disponibles enwww.ti.com, para el manejo de la FFT (Fast Fourier Transform). Paraagregar estas libreras simplemente se busca por el archivosprc081.zip, se descomprime yluego se instala. El directorio de instalacin es siempre el mismo y esC:\TIDCS\C28\DSP_TBOX\FFT. En esta carpeta aparecern otras tres ms llamadasclin;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 cdigofuente o en los directorios dados en el linker del compilador (como se muestra en la Figura4-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 unalibrera, simplemente se separan por punto y comas (;). As esto debe quedar como en laFigura 4-9.

    En el cdigo fuente se debe incluir explcitamente el archivo fft.h. Para ello seutiliza la macro #include junto a comillas () o a parnteris (). Esto se ve de la siguientemanera:

    Figura 4-8 Inclusin de libreras usando o .

    En el caso del uso de comillas, el compilador buscar el archivo en el mismodirectorio del cdigo fuente, mientras que en el caso de parntesis , el compiladorbuscar las libreras en los directorios agregados en las opciones del CCS.

  • 8/3/2019 MCI Tutorial DSP

    57/65

    Gua del Usuario Digital Signal Processor

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

    57

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

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

  • 8/3/2019 MCI Tutorial DSP

    58/65

    Gua del Usuario Digital Signal Processor

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

    58

    Figura 4-10 Cdigo bsico para utilizar la FFT.

    La utilidad y funcin de cada lnea de la figura anterior se explica con mayor detalleen la documentacin de la librera. Bsicamente se puede explicar que se toman los datoslos cuales se guardan en una estructura llamada RFFT32 fft. En sta se realizan losprocesos de muestreo (nmero de puntos N=128 y ventana de Hamming), bit reverse yconversin, adems de otros clculos tiles como peak de frecuencia y de amplitud. Las

  • 8/3/2019 MCI Tutorial DSP

    59/65

    Gua del Usuario Digital Signal Processor

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

    59

    operaciones disponibles de pueden ver ingresando fft. donde luego de unos momentosaparecer 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 utilizarfft.peakmagque calcula elmdulo de la FFT. En base a este valor se pueden manejar los LED en base a la potenciadel audio o de una seal cualquiera. Para un mejor uso de estas funciones dirigirse almanual provisto por Texas Instruments.

    Para la ubicacin de la memoria simplemente se agregan los comandos mostradosen las siguiente figuras en el archivo linker28016_RAM_lnk.cmd. Se eliminaron algunassecciones, pero la versin completa se encuentra en la documentacin de la FFT. Se debeagregarH0RAMen la pgina 0 de la memoria y laFFTtf en SECTIONS. Tambien esposible no especificar estas secciones y dejar que el linker las cree sola, pero se tiene laposibilidad 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 creesolo los espacios se deben agregar las siguientes lneas:#pragma DATA_SECTION(ipcb,"FFTipcb"); y #pragma DATA_SECTION(mag, "FFTmag"). Estas lneas se debenagregar debajo de la definicin de la variable N = 128 al comienzo del cdigo fuente.

  • 8/3/2019 MCI Tutorial DSP

    60/65

    Gua del Usuario Digital Signal Processor

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

    60

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

    An as lo anterior, la documentacin provista por TI recomienda como mnimotener 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 pocasmuestras de la seal y adems es bastante eficiente. A continuacin se muestra un esquemade la forma en que se aplica un filtro FIR utilizando convolucin.

  • 8/3/2019 MCI Tutorial DSP

    61/65

    Gua del Usuario Digital Signal Processor

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

    61

    Filtro[0]

    MuestraDe

    EntradaZ-1 Z-2 Z-N+1Z0

    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 variableHISTORIAL[BUFFER]con unbuffer dado por el usuario.

    El buffer depender de la calidad que se le quiera dar al filtrado y del tipo de filtroque 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 muchaspginas en la cuales entregando las caractersticas antes mencionadas, te entregan losvalores del filtro. Generalmente slo basta indicar la frecuencia de corte y el nmero depuntos del filtro el cual corresponde al tamao del buffer para la variable Historial.