práctica 5

20
UPIITA-IPN Telemática Medina Avilés Irving Ivan Padilla 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

Upload: ricardo-padilla

Post on 12-Aug-2015

212 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 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

Page 2: Práctica 5

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).

Page 3: Práctica 5

Dispositivos Programables2

La figura siguiente muestra la localización física de los conectores J1, J4 y J3.

Page 4: Práctica 5

Dispositivos Programables3

Arquitectura del TMS320C6713

Page 5: Práctica 5

Dispositivos Programables4

Page 6: Práctica 5

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.

Page 7: Práctica 5

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.

Page 8: Práctica 5

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

Page 9: Práctica 5

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>

Page 10: Práctica 5

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

Page 11: Práctica 5

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)

Page 12: Práctica 5

Dispositivos Programables11

GPIO Direction Register (GPDIR)

GPIO Value Register (GPVAL)

Page 13: Práctica 5

Dispositivos Programables12

GPIO Delta High Register (GPDH)

Page 14: Práctica 5

Dispositivos Programables13

GPIO Delta Low Register (GPDL)

GPIO High Mask Register (GPHM)

Page 15: Práctica 5

Dispositivos Programables14

GPIO Low Mask Register (GPLM)

Page 16: Práctica 5

Dispositivos Programables15

GPIO Global Control Register (GPGC)

Page 17: Práctica 5

Dispositivos Programables16

ConclusionesMedina Avilés Irving Ivan

Page 18: Práctica 5

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