Search

Programando Entradas/Salidas (GPIO) en los ARM Tiva-C con la librería Tivaware de Texas Instruments. (MIC015S)

Una librería o biblioteca es formada por un conjunto de funciones listas para ser usadas por aplicaciones o proyectos. La librería Tivaware facilita mucho la programación de aplicaciones con microcontroladores ARM Tiva-C. en este articulo trataremos sobre la programación de entaradas-salidas de propósito general (GPIOs), usando la librería Tivaware. esta librería es de fácil uso, comprensión y disponibiliza funciones para todos los periféricos de los microcontroladores ARM Tiva-c de Texas Instrumets.

Una de las primeras tareas a realizar cuando se desarrollan proyectos electrónicos con microcontroladores, es programar sus entradas y salidas. Entradas pueden ser usadas para leer pulsadores, interruptores, teclados, niveles de señales digitales, etc.

Salidas pueden ser usadas para encender o apagar LEDs, motores, temporizadores, etc. En los microcontroladores ARM esta tarea es realizada por funciones que normalmente es disponibilizada por el fabricante del microcontrolador, en forma de librería o interface de programación de aplicaciones (API). La Texas Instruments desarrollo para los microcontroladores ARM Tiva-C una librería o biblioteca llamada TivaWare la cual vamos a presentar más adelante en este artículo.

 


 

 

Vamos a ver los microcontroladores genéricos de la familia Tiva-C. En la figura 1 podemos ver 2 de las principales arquitecturas de la familia de microcontroladores ARM Cortex-M4 de Texas Instruments, el TM4C123x y el TM4C129x. Podemos observar su rico set de periféricos y memorias. Entre sus principales características de los periféricos podemos notar:

Para la familia TM4C123x,

Un procesador ARM Cortex-M4 de hasta 80 MHz.

 

Periféricos de comunicación,

8x UART.

4x SSI/SPI.

6x I2C.

2x CAN.

1 USB (Host/Device/OTG).

 

Periféricos de Control,

2x Entradas para Encoders.

16x Salidas PWM.

 

Periféricos Analógicos,

2x ADCs de 12 bits con 12 canales.

1 Regulador de voltaje LDO.

3x Comparadores analógicos.

1 Sensor de temperatura.

 

Módulos del Sistema,

6x Timer/PWM/CCP de 32 bits.

6x Timer/PWM/CCP de 64 bits.

1 Timer para el sistema (Systick).

2x Timers Watchdog.

 

Las características principales para el TM4C129x, son basadas en la mayoría de periféricos encontrados en los microcontroladores TM4C123x, mas también son adicionadas las siguientes caracterizas:

 

Para la familia TM4C129x,

Un procesador ARM Cortex-M4 de hasta 120 MHz.

 

Periféricos de comunicación,

1 Interface 10/100 Ethernet MAC/PHY.

 

Módulos del Sistema,

1 Interface para LCD.

1 Interface de Periféricos Externa (EPI).

 

Protección de Datos,

Acelerador CRC.

Acelerador AES, DES, SHA y MD5.

 

Manejo del Sistema.

1 Interface Maestra 1-Wire.

 

Los microcontroladores ARM Tiva-C se pueden usar en aplicaciones como:

Dispositivos inteligentes y de bajo consumo para utilizar con las manos.

Equipos para jugar y entretenimiento.

Monitoreo y control de casas y comercios.

Control de movimiento.

Instrumentos médicos.

Equipos de teste y medidas.

Automatización de fábricas.

Equipos para detección de fuego y de seguridad.

Soluciones de equipos inteligentes de energía.

Sistemas de control de luz inteligente.

Transportes.

Equipos de comunicación industrial.

Ampliación de redes.

Paneles de control HMI.

Inversores de potencia.

Seguimiento de vehículos.

Máquinas de venta.

Adquisición de datos.

Inversores solares.

IoT – Internet de las cosas.

Maquinas herramienta y control numérico (CNC).

 

 

Kits de evaluación, desarrollo e IDEs.

En la Figura 2 podemos ver algunos kits de evaluación disponibles para la familia de microcontroladores ARM Tiva-C. Estos kits son de bajo precios e ideales para comenzar a programar los ARM Tiva-C.

 


 

 

En la Figura 3 podemos ver algunos kits de desarrollo disponibles para la familia de microcontroladores ARM Tiva-C. Estos kits de desarrollo son ideales para hacer proyectos que necesiten de muchos dispositivos y periféricos, pudiéndose partir desde algún código ejemplo desarrollado por las Texas Instruments para este tipo de kits o tarjetas.

 


 

 

En la Figura 4 podemos ver una serie de tarjetas plug-in (BoosterPacks) que facilitan y hacen más simple desarrollar aplicaciones con los microcontroladores ARM Tiva-C. En estas tarjetas plug-in podemos encontrar sensores de movimiento, sensores de presión, sensores de luz ambiente, sensores de temperatura infra roja, displays, teclados, sistemas de conectividad, etc.

 

Para escribir código para la familia de microcontroladores ARM Tiva-C existen varios compiladores e IDE (Ambientes de desarrollo) entre los que podemos nombrar:

Keil RealView.

MentorGraphics.

IAR Embedded Workbench.

Texas Instruments Code Composer Studio.

GNU Compiler Collection(GCC).

 


 

 

En la Figura 5 podemos ver los logos de estos compiladores e IDEs, los cuales permiten escribir las aplicaciones y proyectos que se deseen desarrollar.

 

 


 

 

 

La Librería o Biblioteca de Periféricos TivaWare.

La Texas Instruments desarrollo una librería o biblioteca de periféricos para la familia de microcontroladores ARM Tiva-C. Una librería o biblioteca es un conjunto de funciones o rutinas escritas en lengua C para configurar y programar los periféricos de un microcontrolador. La biblioteca TivaWare también tiene funciones para Gráficos, USB, Sensores, Sistemas Operativos de Tiempo Real (RTOS), Ethernet, etc.

En la Figura 6 podemos observar a nivel de bloques la conformación básica de la librería TivaWare. En este artículo trataremos de la Librería para controlar periféricos, como resaltado en la Figura 6. En la librería o biblioteca para periféricos hay funciones o rutinas para los siguientes periféricos:

 


 

 

 

Comparador Analógico.

Conversor Análogo para Digital o ADC.

CAN o Controller Area Network.

CRC para Generar de Checksum.

AES para Criptografía.

DES para Criptografía.

EEPROM.

Ethernet.

EPI o Interface de Periféricos Externos.

Memoria Flash.

FPU o Unidad de coma flotante.

GPIO o Entradas-Salidas de Propósito General.

Módulo de Hibernación.

I2C (Inter-Integrated Circuit).

Controlador de Interrupciones.

Controlador LCD.

MPU o Unidad de protección de Memoria.

Modulo Maestro 1-Wire.

PWM o Modulación del ancho del pulso.

QEI o Encoder.

SHA/MD5 para criptografía.

SSI o Interface Serial Síncrona.

Control del Sistema.

Modulo para excepciones del sistema.

Timer del sistema (SysTick).

Timers.

UART.

Controlador DMA.

USB.

Timer guardián (Watchdog).

Uso de la memoria ROM.

 

En este artículo vamos a describir con más detalle las funciones para programar los GPIOs o Entradas y Salidas de Propósito General. En la Figura 7, podemos observar el diagrama de clases o módulos para la librería de periféricos TivaWare. Esta librería o biblioteca es libre (free), y puedes ser usada en cualquier proyecto o idea que proyectistas o ingenieros creen.

 


 

 

 

En la Figura 8 podemos observar como el programa escrito por el usuario, llama las funciones de la librería, para leer o escribir en los periféricos. Por ejemplo, un usuario que esté desarrollando una alarma para casa o comercio; leerá los sensores de puertas y ventanas, llamando la función que lee los pines de entrada del microcontrolador. Igualmente para disparar la sirena o alguna otra señal que indique que la alarma se disparó, el usuario llamara la función que escriben en los pines de salida del microcontrolador.

 


 

 

 

Funciones para Entradas-Salidas de Propósito General o GPIO.

Cada microcontrolador de la familia ARM Tiva-C tiene un número determinado de puertos dependiendo de la referencia del microcontrolador. Por ejemplo en el microcontrolador Tiva-C TM4C123GH6PM encontramos los puertos (GPIO) A, B, C, D, E y F.

 


 

 

 

En la Figura 9 podemos observar la estructura para estos puertos. En esta figura resaltamos los registros que tratan con el Control de Datos. Para la mayoría de microcontroladores ARM son 2 los registros encargados del control de Datos:

1 - El registro de direcciones.

2 – El registro de datos.

 

La Figura 10 muestra estos registros. El registro de direcciones (GPIODIR) permite configurar cada pin, individualmente como entrada o salida. Cuando el bit en este registró es 0 (nivel lógico bajo), el pin correspondiente es configurado como entrada y cuando el bit en este registró es 1 (nivel lógico alto) el pin correspondiente es configurado como salida.

 


 

 

 

Esta configuración hecha sobre el registro de direcciones, afecta directamente los bits del registro de datos (GPIODATA). A través de los bits en el registro de datos podemos leer o escribir en los respectivos pines del microcontrolador, configurados como entradas o salidas. La Figura 11 muestra las funciones que programan los registros de direcciones y de datos.

 

 


 

 

En la Figura 12 podemos observar las principales funciones para programar los puertos de entrada-salida del microcontrolador. Las funciones que la librería TivaWare ofrece para programar GPIOs se pueden clasificar en 3 tipos:

 

Las que configuran los pines.

Las que acceden al estado de los pines.

Las que tratan con interrupciones.

 


 

 

En este artículo trataremos de las funciones que configuran y acceden a los pines del puerto y en otro artículo trataremos las funciones que operan sobre las interrupciones. Como la mayoría de los pines del microcontrolador ARM Tiva-C, tiene varias funciones alternas, la biblioteca también ofrece rutinas para programar las funciones alternas de un determinado pin.

 

Las principales funciones para configurar las entradas-salidas y leer-escribir sus estados son:

 

GPIOPinRead

Esta función lee los valores o estados del especificado pin o pines de entrada o salida. El prototipo para esta función es:

 

int32_t

GPIOPinRead(uint32_t ui32Port,

uint8_t ui8Pins)

 

Los parámetros para esta función son:

ui32Port : Es la dirección base del Puerto GPIO.

ui8Pins : Es la representación del pin o pines a leer.

 

 

GPIOPinWrite

 

Esta función escribe un valor al especificado pin. El prototipo para esta función es:

 

void

GPIOPinWrite( uint32_t ui32Port,

uint8_t ui8Pins,

uint8_t ui8Val)

 

Los parámetros para esta función son:

 

ui32Port : Es la dirección base del Puerto GPIO.

ui8Pins : Es la representación del pin o pines a leer.

ui8Val : Es el valor a escribir al pin o pines.

 

GPIOPinTypeGPIOInput

 

Esta función configura el pin o pines como entradas. El prototipo para esta función es:

 

void

GPIOPinTypeGPIOInput( uint32_t ui32Port,

uint8_t ui8Pins)

 

Los parámetros para esta función son:

 

ui32Port : Es la dirección base del Puerto GPIO.

ui8Pins : Es la representación del pin o pines a configurar como entradas.

 

 

GPIOPinTypeGPIOOutput

 

Esta función configura el pin o pines como salida. El prototipo para esta función es:

 

void

GPIOPinTypeGPIOOutput( uint32_t ui32Port,

uint8_t ui8Pins)

 

Los parámetros para esta función son:

 

ui32Port : Es la dirección base del Puerto GPIO.

ui8Pins : Es la representación del pin o pines a configurar como salida.

 

 

Programa ejemplo para configurar, leer y escribir en los pines de los GPIOs.

 

El siguiente es un ejemplo básico de como programar los GPIOs de los microcontroladores ARM Tiva-C. Es de vital importancia entender cuáles son las funciones que escriben y leen datos en los puertos y pines del microcontrolador, pues cualquier tipo de proyecto, necesita hacer uso de estas funciones para poder interactuar con el mundo físico. En la Guía de Usuario de la librería de periféricos TivaWare, se encuentra un ejemplo similar al presentado en la siguiente sección.

 

int32_t i32Val;

 

//

// Habilita el Puerto GPIOA.

//

 

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

 

 

 

//

// Espera a que el módulo GPIOA esté listo.

//

 

while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA))

{

}

 

 

//

// Inicializa la configuracion de los pines GPIO.

//

// Configura los pines 2, 4, and 5 como entradas.

//

 

GPIOPinTypeGPIOInput( GPIO_PORTA_BASE,

Datasheet of PIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5);

 

//

// Configura los pines 0 and 3 como salidas.

//

 

Datasheet of PIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_3);

 

 

//

// Lee algunos pines.

//

 

i32Val = GPIOPinRead( GPIO_PORTA_BASE,

Datasheet of GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3 |

Datasheet of PIO_PIN_4 | GPIO_PIN_5));

 

 

//

// Escribe en pin 0, del Puerto A (PORTA) un valor de 1 (Nivel alto).

//

 

GPIOPinWrite( GPIO_PORTA_BASE,

GPIO_PIN_0,

1 );

 

 

Como podemos observar, en el anterior código ejemplo, programar, configurar y usar los pines de entrada-salida de los microcontroladores Tiva-C es una tarea simple. La biblioteca o librería TivaWare simplifica esta tarea y el programador tendrá más tiempo para dedicarle al proyecto o aplicación que esté desarrollando.

 

Las funciones de GPIOs permiten realizar más configuraciones, como interrupciones, entradas analógicas, control de corriente en los pines, etc. Para mayor información visite el sitio web de la Texas Instruments o vea la guía de usuario de la librería de periféricos TivaWare.

 

Banco de Circuitos

Ofertas de Empleo