Práctica 5
-
Upload
ricardo-padilla -
Category
Documents
-
view
212 -
download
3
Transcript of Práctica 5
UPIITA-IPNTelemática
Medina Avilés Irving IvanPadilla González Ricardo Axel
2010640344
Práctica 5 Medina Avilés Irving Ivan
Padilla González Ricardo Axel
“Acceso al puerto digital de E/S GPIO”
Dispositivos Programables
Profesor: Juan Manuel Madrigal Bravo
27 de febrero de 2013
Dispositivos Programables1
Objetivo
Acceder al puerto digital de entrada salida de propósito general en modo lectura y en modo escritura.
Antecedentes
Arquitectura del TMS320C6713
Arquitectura del TMS320C6713
La familia TMS320C6000 dispone de un periférico específico para implementar entradas y salidas digitales de propósito general, denominado GPIO. Este periférico permite manejar 16 líneas de entrada y salida, en las que además de leer o escribir los datos que se necesiten, se pueden detectar cambios de nivel en las señales, generando peticiones de interrupción a la CPU y eventos al controlador EDMA.
La figura siguiente muestra el diagrama a bloques del DSK C6713. Observar el bloque de expansión de memoria al cual se accede a través del conector J4 y el bloque de expansión de periféricos al cual se accede a través del conector J3.
Registros del GPIO
Registro de habilitación del GPIO (GPEN)Registro de dirección 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 máscaras a nivel bajo y alto del GPIO (GPLM) y (GPHM).Registro de polaridad de la petición de interrupción a la CPU o de evento a la EDMA (GPPOL)Registro de control global del GPIO (GPGC).
Dispositivos Programables2
La figura siguiente muestra la localización física de los conectores J1, J4 y J3.
Dispositivos Programables3
Arquitectura del TMS320C6713
Dispositivos Programables4
Dispositivos Programables5
La tabla siguiente muestra los pines del conector de expansión HPI J1. Para la presente práctica, los pines de interés 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 Programables6
La tabla siguiente muestra los pines del conector de expansión de periféricos J3. Para la presente práctica, los pines de interés 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 Programables7
Material y Equipo
1 kit de desarrollo DSK6713Computadora con CCS y puerto USB4 buffers 74LS24532 led’s32 resistencias de 330 ΩCables estañados de buen tamaño1 protoboard.1 fuente de 5 V.
Desarrollo
Se requiere dar de alta el GPIO por medio de los switches de configuración.
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 código 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 GPIOGPIO_Handle gpio_handle; /* handle para el GPIO */
//Configuración de los registros del GPIOGPIO_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 lógico de los pines 0x00000000, // gphm all interrupts disabled for io pins
Dispositivos Programables8
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 led’s, las resistencias y los búfferes 74LS245.
5. Conecte los pines (del conector J1) mencionados a las entradas de los búffers 74LS245 por medio de cables estañados 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 deberán tener una tierra común.
7. Compile, cargue el archivo .out a la memoria del DSP y ejecute paso a paso usando el depurador. Visualice el resultado en los led’s.
8. Si no se tiene un display hecho a base de barras de led’s, 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 pestaña watch1 colocar el nombre de las variables (GPIO_PIN0) y seleccionar el tipo de formato numérico 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 código fuente:
// DSP05_gpio_lectura .c #include <stdio.h>#include <stdlib.h>#include <math.h>#include <csl_gpio.h>
Dispositivos Programables9
#include <csl_gpiohal.h>
// INICIA CODIGO C ESTANDARUint32 Current_dir;Uint32 PinID= GPIO_PIN15|GPIO_PIN14|GPIO_PIN13|GPIO_PIN12|GPIO_PIN11|GPIO_PIN10|GPIO_PIN9|GPIO_PIN8|GPIO_PIN7|GPIO_PIN6|GPIO_PIN5|GPIO_PIN4|GPIO_PIN3|GPIO_PIN2|GPIO_PIN1|GPIO_PIN0;Uint32 val;
// CODIGO PARA DAR DE ALTA EL GPIOGPIO_Handle gpio_handle; /* handle para el GPIO */
//Configuración de los registros del GPIOGPIO_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 lógico 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 Programables10
Cuestionario
1. ¿Qué aplicación tiene la interfaz GPIO?
Estos grupos de pines en un DSP pueden habilitarse como entradas o salidas y se usan para propósitos de control, aunque también se pueden usar para transferencia de datos.
El periférico GPIO proporciona pins dedicados de propósito general que se pueden configurar como entradas o comosalidas. 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 configuración
GPIO Enable Register (GPEN)
Dispositivos Programables11
GPIO Direction Register (GPDIR)
GPIO Value Register (GPVAL)
Dispositivos Programables12
GPIO Delta High Register (GPDH)
Dispositivos Programables13
GPIO Delta Low Register (GPDL)
GPIO High Mask Register (GPHM)
Dispositivos Programables14
GPIO Low Mask Register (GPLM)
Dispositivos Programables15
GPIO Global Control Register (GPGC)
Dispositivos Programables16
ConclusionesMedina Avilés Irving Ivan
Dispositivos Programables17
Padilla González Ricardo Axel
Bibliografía
[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