Uma biblioteca é composta por um conjunto de funções prontas para serem usadas por aplicativos ou projetos. A biblioteca Tivaware torna muito mais fácil a programação de aplicações com microcontroladores ARM Tiva-C. Neste artigo, discutiremos a programação de entradas-saídas de uso geral (GPIOs), usando a biblioteca Tivaware. Esta biblioteca é fácil de usar, compreensível e fornece funções para todos os periféricos dos microcontroladores ARM Tiva-c do Texas Instruments.
Uma das primeiras tarefas a serem realizadas ao desenvolver projetos eletrônicos com microcontroladores é programar suas entradas e saídas. As entradas podem ser usadas para ler botões, interruptores, teclados, níveis de sinal digital, sensores, etc.
As saídas podem ser usadas para ligar ou desligar LEDs, motores, temporizadores, etc. Nos microcontroladores ARM esta tarefa é realizada por funções normalmente fornecidas pelo fabricante do microcontrolador, na forma de uma biblioteca ou interface de programação de aplicativos (API). A Texas Instruments desenvolveu para microcontroladores Tiva-C ARM uma biblioteca ou biblioteca chamada TivaWare, que apresentaremos mais adiante neste artigo.
Vejamos os microcontroladores genéricos da família Tiva-C. Na Figura 1, podemos ver 2 das principais arquiteturas da família de microcontroladores Texas Instruments ARM Cortex-M4, TM4C123x e TM4C129x. Podemos observar o seu rico conjunto de periféricos e memórias. Entre as principais características dos periféricos podemos observar:
Para a família TM4C123x:
Um processador ARM Cortex-M4 até 80 MHz.
Periféricos de comunicação:
8x UART.
4x SSI / SPI.
6x I2C.
2x CAN.
1 USB (Host / Device / OTG).
Periféricos de Controle:
2x Entradas do codificador .
16x SaídasPWM.
Periféricos Analógicos:
2x ADCs de 12-bit com 12 canais.
1 regulador de tensão LDO.
3x comparadores analógicos.
1 sensor de temperatura.
Módulos do sistema:
6 x Temporizadores / PWM / CCP.de 32 bits
6xTemporizadores / PWM / CCP.de 64 bits
1 Temporizador para o sistema (Systick).
2x Timers Watchdog
As principais características do TM4C129x baseiam-se na maioria dos periféricos encontrados nos microcontroladores TM4C123x, mas também são adicionados os seguintes recursos:
Para a família TM4C129x:
Um processador ARM Cortex-M4 até 120 MHz.
Periféricos de comunicação:
1 Interface 10/100 Ethernet MAC / PHY.
Módulos do sistema:
1 Interface para LCD.
1 Interface Periférica Externa (EPI).
Proteção de dados:
Acelerador CRC.
Acelerador AES, DES, SHA y MD5.
Gestão do Sistema:
1 Interface mestre 1-Wire.
Os microcontroladores Tiva-C ARM podem ser usados em aplicações como:
- Dispositivos inteligentes e de baixo consumo para uso com as mãos.
- Equipamento para jogos e entretenimento.
- Monitoramento e controle de casas e lojas.
- Controle de movimento.
- Instrumentos médicos.
- Equipamento de teste e medição.
- Automação de fábricas.
- Detecção de incêndio e equipamentos de segurança.
- Soluções inteligentes de equipamentos de energia.
- Sistemas inteligentes de controle de luz.
- Transporte.
- Equipamento de comunicação industrial.
- Expansão de redes.
- Painéis de controle HMI.
- Inversores de potência.
- Rastreamento de veículos.
- Máquinas de venda.
- Aquisição de dados.
- Inversores solares.
- IoT - Internet das coisas.
- Máquinas-ferramentas e controle numérico (CNC).
Avaliação, desenvolvimento e kits IDEs.
Na Figura 2, podemos ver alguns kits de avaliação disponíveis para a família de microcontroladores Tiva-C ARM. Esses kits são de baixo preço e são ideais para começar a programar os ARM Tiva-C.
Na Figura 3, podemos ver alguns kits de desenvolvimento disponíveis para a família de microcontroladores Tiva-C ARM. Esses kits de desenvolvimento são ideais para fazer projetos que precisam de muitos dispositivos e periféricos, podendo partir de algum exemplo de código desenvolvido pelo Texas Instruments para este tipo de kits ou cartões.
Na Figura 4, podemos ver uma série de placas plug-in (BoosterPacks) que facilitam e simplificam o desenvolvimento de aplicativos com microcontroladores Tiva-C ARM. Nestes cartões de plug-in, podemos encontrar sensores de movimento, sensores de pressão, sensores de luz ambiente, sensores de temperatura infravermelha, displays, teclados, sistemas de conectividade, etc.
Para escrever código para a família de microcontroladores ARM Tiva-C, existem vários compiladores e IDE (Ambientes de Desenvolvimento) entre os quais podemos nomear:
- Keil RealView.
- MentorGraphics.
- IAR Embedded Workbench.
- Texas Instruments Code Composer Studio.
Coleção GNU Compiler (GCC).
Na Figura 5, podemos ver os logos desses compiladores e IDEs, que nos permitem escrever as aplicações e projetos que desejamos desenvolver.
A Biblioteca ou Biblioteca Periférica TivaWare.
A Texas Instruments desenvolveu uma biblioteca ou biblioteca de periféricos para a família de microcontroladores Tiva-C ARM. Uma biblioteca ou biblioteca é um conjunto de funções ou rotinas escritas em linguagem C para configurar e programar os periféricos de um microcontrolador. A biblioteca TivaWare também possui funções para gráficos, USB, sensores, sistemas operacionais em tempo real (RTOS), Ethernet, etc.
Na Figura 6, podemos ver no nível de blocos a conformação básica da biblioteca TivaWare. Neste artigo, lidaremos com a Biblioteca para controlar periféricos, como destacado na Figura 6. Na biblioteca ou biblioteca para periféricos existem funções ou rotinas para os seguintes periféricos.
Comparador analógico.
Conversor analógico para digital ADC.
CAN ou Rede controladora de Área
CRC para Gerar Checksum.
AES para criptografia.
DES para criptografia.
EEPROM.
Ethernet.
EPI ou Interface Periférica Externa.
Memória flash.
FPU ou unidade de ponto flutuante.
GPIO ou entradas de uso geral - Saídas.
Módulo de hibernação.
I2C (Circuito Inter-Integrado).
Controlador de interrupção.
Controlador LCD.
MPU ou unidade de proteção de memória.
Master Module 1-Wire.
PWM ou modulação de largura de pulso.
QEI ou Codificador.
SHA / MD5 para criptografia.
SSI ou interface serial síncrona.
Controle do Sistema.
Módulo para exceções do sistema.
Temporizador do sistema (SysTick).
Temporizadores.
UART.
Controlador DMA.
USB.
Watchdog Timer.
Usando a ROM.
Neste artigo, descreveremos mais detalhadamente as funções para programar GPIOs ou entradas e saídas de uso geral. Na Figura 7, podemos ver o diagrama de classe ou módulos para a biblioteca periférica TivaWare. Esta biblioteca ou biblioteca é gratuita e pode ser usada em qualquer projeto ou idéia que designers ou engenheiros acreditam.
Na Figura 8, podemos ver como o programa escrito pelo usuário, chama as funções da biblioteca, para ler ou escrever nos periféricos. Por exemplo, um usuário que está desenvolvendo um alarme para casa ou empresa; leia os sensores de portas e janelas, chamando a função que lê os pinos de entrada do microcontrolador. Também para acionar a sirene ou algum outro sinal indicando que o alarme foi disparado, o usuário chamará a função que eles escrevem para os pinos de saída do microcontrolador.
Funções para entradas ou saídas de uso geral ou GPIO.
Cada microcontrolador na família ARM Tiva-C possui um certo número de portas dependendo da referência do microcontrolador. Por exemplo, no microcontrolador Tiva-C TM4C123GH6PM encontramos as portas (GPIO) A, B, C, D, E e F.
Na Figura 9, podemos ver a estrutura dessas portas. Nesta figura, destacamos os registros que tratam do controle de dados. Para a maioria dos microcontroladores ARM, existem 2 registros responsáveis pelo controle de dados:
1 - O registro do endereço.
1 - O registro de dados.
A Figura 10 mostra esses registros. O registro de endereço (GPIODIR) permite que você configure cada pino individualmente como uma entrada ou saída. Quando o bit neste registro é 0 (nível lógico baixo), o pino correspondente é configurado como entrada e quando o bit neste registro é 1 (nível lógico alto), o pino correspondente é configurado como saída.
Essa configuração feita no registro de endereços afeta diretamente os bits do registro de dados (GPIODATA). Através dos bits na gravação de dados, podemos ler ou escrever nos respectivos pinos do microcontrolador, configurados como entradas ou saídas. A Figura 11 mostra as funções que programam o endereço e os registros de dados.
A Figura 12 mostra as principais funções para a programação das portas de E / S do microcontrolador. As funções que a biblioteca TivaWare oferece para programar GPIOs podem ser classificadas em 3 tipos:
Aquelas que configuram os pinos.
Aquelas que acessam o estado dos pinos.
Aquelas que lidam com interrupções.
Neste artigo, discutiremos as funções que configuram e acessam os pinos da porta e em outro artigo discutiremos as funções que operam nas interrupções.
Como a maioria dos pinos do microcontrolador ARM Tiva-C, ele possui várias funções alternativas, a biblioteca também oferece rotinas para programar as funções alternativas de um determinado pino.
As principais funções para configurar entradas-saídas e estados de leitura e gravação são:
GPIOPinLire
Esta função lê os valores ou estados do pino de entrada ou saída especificado ou pinos. O protótipo para esta função é:
int32_t
GPIOPinRead(uint32_t ui32Port, uint8_t ui8Pins)
Os parâmetros para esta função são:
ui32Port: Este é o endereço base da porta GPIO.
ui8Pins: é a representação do pino ou pinos para ler.
GPIOPinWrite
Esta função escreve um valor para o pino especificado. O protótipo para esta função é:
void
GPIOPinWrite (uint32_t ui32Port, uint8_t ui8Pins, uint8_t ui8Val)
Os parâmetros para esta função são:
ui32Port: Este é o endereço base da porta GPIO.
ui8Pins: é a representação do pino ou pinos para ler.
ui8Val: é o valor para escrever no pino ou pinos.
GPIOPinTypeGPIOInput
Esta função define o pino ou os pinos como entradas. O protótipo para esta função é:
void
GPIOPinTypeGPIOInput (uint32_t ui32Port, uint8_t ui8Pins)
Os parâmetros para esta função são:
ui32Port: Este é o endereço base da porta GPIO.
ui8Pins: é a representação do pino ou pinos a serem configurados como entradas.
GPIOPinTypeGPIOOutput
Esta função define o pino ou pinos como saída. O protótipo para esta função é:
void
GPIOPinTypeGPIOOutput (uint32_t ui32Port, uint8_t ui8Pins)
Os parâmetros para esta função são:
ui32Port: Este é o endereço base da porta GPIO.
ui8Pins: é a representação do pino ou pinos para configurar como saída.
Exemplo de programa para configurar, ler e escrever para pinos GPIO.
O seguinte é um exemplo básico de como programar os GPIOs dos microcontroladores Tiva-C ARM. É vital compreender quais são as funções que escrevem e lê dados nas portas e pinos do microcontrolador, pois qualquer tipo de projeto precisa usar essas funções para poder interagir com o mundo físico. No Guia do Usuário da biblioteca de periféricos TivaWare, você encontrará um exemplo semelhante ao apresentado na próxima seção.
int32_t i32Val;
//
// Ativa a porta GPIOA.
//
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOA);
//
// Aguarde até que o módulo GPIOA esteja pronto.
//
enquanto (! SysCtlPeripheralReady (SYSCTL_PERIPH_GPIOA))
{
}
//
// Inicializa a configuração dos pinos GPIO.
//
// Defina os pinos 2, 4 e 5 como entradas.
//
GPIOPinTypeGPIOInput (GPIO_PORTA_BASE, PIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5);
//
// Defina os pinos 0 e 3 como saídas.
//
PIOPinTypeGPIOOutput (GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_3);
//
// Leia alguns pinos.
//
i32Val = GPIOPinRead (GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3 | PIO_PIN_4 | GPIO_PIN_5));
//
// Escreva no pino 0, do Porto A (PORT) um valor de 1 (Nível Alto).
//
GPIOPinWrite (GPIO_PORTA_BASE, GPIO_PIN_0, 1);
Como podemos ver, no código de exemplo anterior, programar, configurar e usar os pinos de E / S dos microcontroladores Tiva-C é uma tarefa simples. A biblioteca ou biblioteca TivaWare simplifica essa tarefa e o programador terá mais tempo para se dedicar ao projeto ou aplicativo que está em desenvolvimento.
As funções dos GPIOs permitem fazer mais configurações, como interrupções, entradas analógicas, controle de corrente nos pinos, etc. Para obter mais informações, visite o site da Texas Instruments ou consulte o guia do usuário para a biblioteca de periféricos TivaWare.