2 Comentários

Biblioteca de GPIO para a placa FRDM-KL25Z

Biblioteca de GPIO

Olá caro leitor, iniciarei uma nova série de artigos abordando algumas bibliotecas que desenvolvi para a FRDM-KL25Z. Essas bibliotecas servirão como base para as aplicações que estou desenvolvendo, utilizando a FRDM-KL25Z em conjunto com o KiT de Automação Open Hardware.

Neste primeiro artigo serão apresentadas as funções de acesso ao General Purpose Input/Output (GPIO).

A biblioteca apresentada é compatível com o Kinetis Design Studio IDE e CodeWarrior IDE, e também é facilmente portável para as demais Freedom Boards. Essa biblioteca foi desenvolvida tomando como base a série de artigos Desenvolvimento de sistemas embarcados com a KL05Z, escrita pelo Rodrigo Almeida.

Freedom Board KL25Z

Antes de detalhar a biblioteca, vamos apresentar a plataforma que será utilizada.

A FRDM-KL25Z é uma placa de baixo custo que contém como microcontrolador alvo o Kinetis KL25Z128VLK4, um ARM Cortex-M0+ que pode operar a até 48 MHz.

Principais características deste microcontrolador:

  • Memória Flash de 128 KB;
  • Memória RAM de 16 KB;
  • Conversor Analógico Digital ADC de 16 bits;
  • Conversor Digital Analógico DAC de 12 bits.

Essa placa é equipada com os seguintes periféricos:

  • Slider touch capacitivo;
  • Um acelerômetro MMA8451Q;
  • Um LED RGB;
  • Footprint compatível com Arduino;
  • Interface de debug OpenSDA da P&E Multilink, compatível com diversas IDE's (utiliza porta USB de alimentação).

Para informações mais detalhadas sobre a placa, eu recomendo o artigo Conheça a FRDM KL25Z da NXP publicado pelo Fábio Souza.

Bom! Feita uma breve apresentação da FRDM-KL25Z, vamos agora apresentar a biblioteca desenvolvida.

Biblioteca de GPIO

A biblioteca de GPIO possui dois arquivos gpio.c (Code) e gpio.h (Header). O arquivo gpio.c possui o código fonte e o arquivo gpio.h contém as definições e os protótipos das funções. Para essa biblioteca foram criadas quatro funções, gpio_direction, gpio_set, gpio_toggle e gpio_read.

A seguir temos o arquivo gpio.h. Este arquivo contém todas as definições e os protótipos das funções.

gpio_direction

A função “gpio_direction” é destinada para inicialização dos GPIOs. Essa, por sua vez, recebe diversos parâmetros, que são eles:

  • número do “PORT”;
  • número do pino (Bit);
  • configuração do pino: entrada ou saída (INPUT ou OUTPUT) e Pull Resistor (habilitado ou desabilitado).

A seguir o código dessa função:

gpio_set

A função “gpio_set” foi desenvolvida para o acionamento dos GPIOs, inicializados no modo de saída (OUTPUT). Os parâmetros que essa função recebe são:

  • o número do “PORT”;
  • o número do pino (bit) e;
  • valor que deseja enviar para a saída (0 ou  1).

A seguir o código dessa função:

gpio_toggle

A função “gpio_toggle” tem como objetivo inverter valor do GPIO. Essa função recebe dois parâmetros:

  • o número do "PORT" e;
  • o número do pino (bit).

A seguir o código da função:

gpio_read

Para ler o valor dos GPIOs foi criada a função “gpio_read”, uma vez que o pino foi inicializado como entrada (INPUT). Essa função recebe dois parâmetros, são eles:

  • o número do "PORT" e;
  • o número pino.

O retorno é valor que está presente no IO. A seguir o código da função:

Utilizando a Biblioteca de GPIO

Para demostrar o uso da biblioteca de GPIO foi criado o projeto pisca LED RGB

A seguir, temos uma figura com o circuito elétrico do LED RGB, onde podemos identificar quais são os IOs que devemos acionar. O LED vermelho está no PTB18, o verde no PTB19 e azul PTD1.

Circuito elétrico LED RGB
Figura 1 - Circuito elétrico LED RGB

A seguir o código fonte do projeto Pisca LED RGB:

Conclusão

Neste artigo foi apresentada a biblioteca de acesso General Purpose Input/Output GPIO para a Freedom Board KL25Z e o projeto demonstrando sua aplicação.

Nos próximos artigos vamos apresentar outras bibliotecas (ADC, Timer, UART e entre outras) para utilizar com esse hardware.

Referências

FRDM-KL25Z

Reference Manual 

Diretório do GitHub 

Outros artigos da série

Bibliotecas para ADC da FRDM-KL25Z >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Software » Biblioteca de GPIO para a placa FRDM-KL25Z
Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Jorge Guzman
Jorge Guzman
05/10/2016 21:28

Olá Evandro, Parabens pelo artigo, eu comecei a montar uma lib GPIO igual a sua tempos atrás, praticamente seguindo a mesma interface das suas funções ( void gpio_set(uint8_t port, uint8_t pin, uint8_t value) ), após uma conversa com o prof. Rodrigo almeida que também escreve no canal ele me sugeriu algumas melhorias na lib, eu gostaria de passar elas com você também. Primeiramente todos os pinos são referenciados como algum numero, exemplo: #define PB0 3 #define PB1 4 #define PB2 19 #define PB3 38 #define PB4 7 #define PB5 2 #define PB6 14 #define PB7 15 Eu uso essas referencias… Leia mais »

Talvez você goste:

Séries



Outros da Série

Menu

WEBINAR
 
Debugging
em Linux embarcado

 

Data: 30/09 às 19:30h - Apoio: Mouser Elecctronics
 
INSCREVA-SE AGORA »



 
close-link