Documente Academic
Documente Profesional
Documente Cultură
Telemtica Medina Avils Irving Ivan Padilla Gonzlez Ricardo Axel 2010640344
Prctica 5
Medina Avils Irving Ivan Padilla Gonzlez Ricardo Axel
Acceso al puerto digital de E/S GPIO Dispositivos Programables
Profesor: Juan Manuel Madrigal Bravo
27 de febrero de 2013
Dispositivos Programables 1
Objetivo
Acceder al puerto digital de entrada salida de propsito general en modo lectura y en modo escritura.
Antecedentes
Arquitectura del TMS320C6713
Arquitectura del TMS320C6713 La familia TMS320C6000 dispone de un perifrico especfico para implementar entradas y salidas digitales de propsito general, denominado GPIO. Este perifrico permite manejar 16 lneas de entrada y salida, en las que adems de leer o escribir los datos que se necesiten, se pueden detectar cambios de nivel en las seales, generando peticiones de interrupcin a la CPU y eventos al controlador EDMA. La figura siguiente muestra el diagrama a bloques del DSK C6713. Observar el bloque de expansin de memoria al cual se accede a travs del conector J4 y el bloque de expansin de perifricos al cual se accede a travs del conector J3.
Registros del GPIO Registro de habilitacin del GPIO (GPEN) Registro de direccin del GPIO (GPDIR) Registro de valor del GPIO (GPVAL) Registro de transiciones de nivel alto (GPDH) y del nivel bajo (GPDL) del GPIO. Registros de mscaras a nivel bajo y alto del GPIO (GPLM) y (GPHM). Registro de polaridad de la peticin de interrupcin a la CPU o de evento a la EDMA (GPPOL) Registro de control global del GPIO (GPGC).
Dispositivos Programables 2
Dispositivos Programables 3
Dispositivos Programables 4
La tabla siguiente muestra los pines del conector de expansin HPI J1. Para la presente prctica, los pines de inters son: GP0[0] pin 16, GP0[1] pin 44, GP0[2] pin 80, GP0[3] pin 15, GP0[8] pin 19, GP0[9] 22, GP0[10] pin 21, GP0[11] pin24, GP0[12] pin 23, GP0[13] pin 26, GP0[14] pin 25, GP0[15] pin 28.
Dispositivos Programables 5
La tabla siguiente muestra los pines del conector de expansin de perifricos J3. Para la presente prctica, los pines de inters son el GP0[4] (INT_EXT4) pin 53, GP0[5] (INT_EXT5) pin 48, GP0[6] (INT_EXT6) pin 67, GP0[7] (INT_EXT7) pin 68.
Dispositivos Programables 6
Material y Equipo
1 kit de desarrollo DSK6713 Computadora con CCS y puerto USB 4 buffers 74LS245 32 leds 32 resistencias de 330 Cables estaados de buen tamao 1 protoboard. 1 fuente de 5 V.
Desarrollo
Se requiere dar de alta el GPIO por medio de los switches de configuracin. 1. Crear un proyecto llamado DSP05_gpio.pjt. 2. Agregue el archivo de comandos: c6713dsk.cmd (este archivo forma parte de [3]) 3. Escriba el siguiente cdigo en C y agregarlo al proyecto (este archivo est basado en [3]) // DSP05_gpio_escritura #include <stdio.h> #include <stdlib.h> #include <math.h> #include <csl_gpio.h> #include <csl_gpiohal.h>
// CODIGO PARA DAR DE ALTA EL GPIO GPIO_Handle gpio_handle; /* handle para el GPIO */ //Configuracin de los registros del GPIO GPIO_Config gpio_config = { 0x00000000, // gpgc = Modo Passthrough de Interrupciones y control directo sobre GP0 0x0000FFFF, // gpen = Todos los pines de GPIO de 0 a 15 habilitados // 0x00000000, // gdir = Todos los pines de GPIO como entradas 0x0000FFFF, // gdir = Todos los pines de GPIO como salidas 0x00000000, // gpval = Guarda el nivel lgico de los pines 0x00000000, // gphm all interrupts disabled for io pins
Dispositivos Programables 7
0x00000000, // gplm all interrupts to cpu or edma disabled 0x00000000 // gppol -- default state */ };
main() { gpio_handle = GPIO_open( GPIO_DEV0, GPIO_OPEN_RESET); GPIO_config(gpio_handle,&gpio_config); GPIO_pinEnable(gpio_handle,GPIO_PIN0 | GPIO_PIN1); GPIO_write(gpio_handle,GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7| GPIO_PIN8|GPIO_PIN9|GPIO_PIN10|GPIO_PIN11|GPIO_PIN12|GPIO_PIN13|GPIO_PIN14|GPIO_PIN15,0x0000); }//end of main
4. Dentro del protoboard, deber tener armado y cableado los leds, las resistencias y los bfferes 74LS245. 5. Conecte los pines (del conector J1) mencionados a las entradas de los bffers 74LS245 por medio de cables estaados de una adecuada longitud. 6. De preferencia el protoboard deber ser alimentado con su propia fuente de 5 V. Si este es el caso, tanto el DSK como el protoboard debern tener una tierra comn. 7. Compile, cargue el archivo .out a la memoria del DSP y ejecute paso a paso usando el depurador. Visualice el resultado en los leds. 8. Si no se tiene un display hecho a base de barras de leds, se puede usar el depurador del CCS para visualizar el dato escrito en la GPIO. 9. En el men principal de click en lo siguiente: View Watch Window. Cuando se abra la ventana de monitoreo, dentro de la pestaa watch1 colocar el nombre de las variables (GPIO_PIN0) y seleccionar el tipo de formato numrico que se requiera. 10. Repetir un proceso similar, pero ahora utilizando GPIO para leer datos. En este caso, se debe emplear un protoboard que contenga dipswitches para introducir datos al GPIO. 12. Utilice el siguiente cdigo fuente: // DSP05_gpio_lectura .c #include #include #include #include <stdio.h> <stdlib.h> <math.h> <csl_gpio.h>
Dispositivos Programables 8
#include <csl_gpiohal.h> // INICIA CODIGO C ESTANDAR Uint32 Current_dir; Uint32 PinID= GPIO_PIN15|GPIO_PIN14|GPIO_PIN13|GPIO_PIN12|GPIO_PIN11|GPIO_PIN10|GPIO_PIN9|GPIO_PIN8|GPIO_PIN7|GPIO_PI N6|GPIO_PIN5|GPIO_PIN4|GPIO_PIN3|GPIO_PIN2|GPIO_PIN1|GPIO_PIN0; Uint32 val; // CODIGO PARA DAR DE ALTA EL GPIO GPIO_Handle gpio_handle; /* handle para el GPIO */ //Configuracin de los registros del GPIO GPIO_Config gpio_config = { 0x00000000, // gpgc = Modo Passthrough de Interrupciones y control directo sobre GP0 0x0000FFFF, // gpen = Todos los pines de GPIO de 0 a 15 habilitados 0x00000000, // gdir = Todos los pines de GPIO como entradas //0x0000FFFF, // gdir = Todos los pines de GPIO como salidas 0x00000000, // gpval = Guarda el nivel lgico de los pines 0x00000000, // gphm all interrupts disabled for io pins 0x00000000, // gplm all interrupts to cpu or edma disabled 0x00000000 // gppol -- default state */ }; main() { gpio_handle = GPIO_open( GPIO_DEV0, GPIO_OPEN_RESET); GPIO_config(gpio_handle,&gpio_config); GPIO_reset(gpio_handle); GPIO_pinEnable(gpio_handle,PinID); Current_dir = GPIO_pinDirection(gpio_handle,PinID,GPIO_INPUT); while(1) { //val = GPIO_pinRead (gpio_handle,PinID); val = GPIO_read(gpio_handle,PinID); printf("%i \n ", val); } } //end of main
Dispositivos Programables 9
Cuestionario
1. Qu aplicacin tiene la interfaz GPIO? Estos grupos de pines en un DSP pueden habilitarse como entradas o salidas y se usan para propsitos de control, aunque tambin se pueden usar para transferencia de datos. El perifrico GPIO proporciona pins dedicados de propsito general que se pueden configurar como entradas o como salidas. Cuando se configura como una salida, se puede escribir en un registro interno para controlar el estado que obtendr en el pin de salida. Cuando se configura como una entrada, se puede detectar el estado de la entrada por lectura del estado de un registro interno. 2. Coloque los registros del GPIO, sus campos y modos de configuracin GPIO Enable Register (GPEN)
Dispositivos Programables 10
Dispositivos Programables 11
Dispositivos Programables 12
Dispositivos Programables 13
Dispositivos Programables 14
Dispositivos Programables 15
Conclusiones
Medina Avils Irving Ivan
Dispositivos Programables 16
Bibliografa
[1] SPRU189 TMS320C6000 CPU and Instruction Set Reference Guide. The CPU architecture, pipeline, instruction set, and interrupts for the TMS320C6000 digital signal processors. See also the manual update (SPRZ168). [2] SPRZ168 Manual Update to TMS320C6000 CPU and Instruction Set Reference Guide. This Manual Update Sheet describes changes for the TMS320C6000 CPU and Instruction Set Reference Guide. [3] R. Chassaing, Digital Signal Processing and Applications with the C6713 and C6416 DSK, Wiley-Interscience, 2005. [4] S. A. Tretter, Communication System Design Using DSP Algorithms, with Laboratory Experiments for the TMS320C6713TM DSK, Springer 2008. [5] http://www.ti.com/lit/ug/spru584a/spru584a.pdf