Académique Documents
Professionnel Documents
Culture Documents
Nota:
GuadelUsuarioDigitalSignalProcessor
GuadelUsuarioDigitalSignalProcessor
Tabla de Contenidos.
1
2
5
6
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
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
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
GuadelUsuarioDigitalSignalProcessor
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
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.
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
GuadelUsuarioDigitalSignalProcessor
GuadelUsuarioDigitalSignalProcessor
2 Detalles tcnicos.
Se mostrarn las caractersticas ms importantes tanto del procesador del DSP como
de la tarjeta de desarrollo.
GuadelUsuarioDigitalSignalProcessor
10
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:
11
GuadelUsuarioDigitalSignalProcessor
12
GuadelUsuarioDigitalSignalProcessor
13
GuadelUsuarioDigitalSignalProcessor
14
GuadelUsuarioDigitalSignalProcessor
15
GuadelUsuarioDigitalSignalProcessor
GuadelUsuarioDigitalSignalProcessor
16
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.
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.
18
GuadelUsuarioDigitalSignalProcessor
http://www.olimex.cl/soft/DSP/XDS100pp_Beta2.exe
GuadelUsuarioDigitalSignalProcessor
19
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:
GuadelUsuarioDigitalSignalProcessor
20
GuadelUsuarioDigitalSignalProcessor
21
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:
22
GuadelUsuarioDigitalSignalProcessor
23
GuadelUsuarioDigitalSignalProcessor
24
GuadelUsuarioDigitalSignalProcessor
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.
25
GuadelUsuarioDigitalSignalProcessor
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
26
GuadelUsuarioDigitalSignalProcessor
Descripcin
GPIO18
GPIO29
GPIO34
1
1
1
1
1
0
1
0
1
0
0
0
1
0
0
0
1
0
27
GuadelUsuarioDigitalSignalProcessor
GuadelUsuarioDigitalSignalProcessor
28
Descripcin
Cdigo Fuente especfico del Ejemplo.
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
DSP280x_Headers_nonBIOS.cmd
29
GuadelUsuarioDigitalSignalProcessor
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:
30
GuadelUsuarioDigitalSignalProcessor
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:
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).
33
GuadelUsuarioDigitalSignalProcessor
34
GuadelUsuarioDigitalSignalProcessor
35
GuadelUsuarioDigitalSignalProcessor
CCS verifica las variables y arreglos antes de visualizarlos o guardarlos. Adems se debe
tener la placa conectada al CCS (ATL+C).
36
GuadelUsuarioDigitalSignalProcessor
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:
37
GuadelUsuarioDigitalSignalProcessor
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.
GuadelUsuarioDigitalSignalProcessor
38
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.
GuadelUsuarioDigitalSignalProcessor
39
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.
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.
IN
ADCvalor = 4096 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.
41
GuadelUsuarioDigitalSignalProcessor
42
GuadelUsuarioDigitalSignalProcessor
43
GuadelUsuarioDigitalSignalProcessor
GuadelUsuarioDigitalSignalProcessor
44
Para poder utilizar los conversores ADC se deben configurar los siguientes
registros:
Tasa de muestreo.
Configurar/Seleccionar el Autosecuenciador.
GuadelUsuarioDigitalSignalProcessor
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 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).
46
GuadelUsuarioDigitalSignalProcessor
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_AddOutputFile()
GEL_AdvancedReset()
GEL_Animate()
GEL_AsmStepInto()
GEL_AsmStepOver()
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()
GEL_ProjectClose()
GEL_ProjectRebuildAllConfig()
GEL_OpenWindow()
OnReset()
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_WatchReset()
GEL_UnloadGel()
GEL_ProjectSetActiveConfig()
GEL_WatchDel()
OnResetDetected()
GEL_SetBlockResetMode()
OnTargetConnect()
GEL_Run()
GEL_SetTimer
GEL_OpenDisassemblyWindow
GEL_TargetTextOut()
OnRestart()
GEL_ProjectCreateCopyConfig() GEL_ClearProfileConfigurationGEL_CloseWindow()
48
GuadelUsuarioDigitalSignalProcessor
www.olimex.cl
http://www.ftdichip.com/FTDrivers.htm
10
49
GuadelUsuarioDigitalSignalProcessor
50
GuadelUsuarioDigitalSignalProcessor
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.
51
GuadelUsuarioDigitalSignalProcessor
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:
52
GuadelUsuarioDigitalSignalProcessor
GuadelUsuarioDigitalSignalProcessor
53
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
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:
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.
55
GuadelUsuarioDigitalSignalProcessor
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.
56
GuadelUsuarioDigitalSignalProcessor
57
GuadelUsuarioDigitalSignalProcessor
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:
58
GuadelUsuarioDigitalSignalProcessor
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
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:
60
GuadelUsuarioDigitalSignalProcessor
GuadelUsuarioDigitalSignalProcessor
61
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.
62
GuadelUsuarioDigitalSignalProcessor
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:
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.
63
GuadelUsuarioDigitalSignalProcessor
GuadelUsuarioDigitalSignalProcessor
64
Atajo
Descripcin
F5
Run
Shift+F5
Halt
F7
Build
Ctrl.+F7
Compile File
Alt+C
Connect
Ctrl.+L
Load Program
Ctrl+Shift+L
Ctrl.+R
Reload Program
Reset Cpu
Ctrl.+Shift+R
Reset Emulador
65
GuadelUsuarioDigitalSignalProcessor
I.II.III.IV.V.VI.VII.VIII.IX.X.XI.XII.XIII.-