A placa Freescale Freedom FRDM-KL25Z é a irmã “mais humilde” da FRDM-K64F, já apresentada aqui no Blog MakerHero neste artigo. Todavia, ao contrário do que essa comparação possa levar a parecer, cada uma tem seu foco e aplicação. Enquanto a FRDM-K64F é voltada para aplicações com maior poder de processamento e conectividade, a FRDM-KL25Z é voltada para aplicações mais simples e com baixo consumo de energia, o chamado low-power.
E mantendo também uma boa quantidade de pinos/sinais para controle e interface com componentes em geral, torna-se um belo ferramental para projetos de robótica e automação. Em suma, pense na FRDM-KL25Z como um “Arduino tunado”.
O que vem na placa?
Para aprender e desenvolver aplicações com microcontroladores ARM, família Cortex-M0+, é o pacote completo. Vem o microcontrolador, debugger, e de “brinde”, um LED RGB e Acelerômetro. Vamos falar um pouco de cada um:
- Microcontrolador NXP/Freescale KL25Z Kinetis KL2 MCU (Partnumber: MKL25Z128VLK4)
- Núcleo ARM® Cortex™-M0+ de 32 bits
- Frequência de operação 48MHz
- 16KB de memória RAM
- 128KB de memória FLASH
- Interfaces de controle e comunicação:
- 2xSPI
- 2xI2C
- 3xUART
- 6xPWM
- 6xADC
- Sensor Touch Capacitivo (TSI)
- GPIO
- Periféricos embarcados na placa
- Acelerômetro 3-eixos modelo MMA8451Q
- LED RGB conectado a canais PWM
- Sensor Touch Capacitivo
- Dimensões da placa:
- 81mm x 53mm
- Alimentação
- 5V USB or 4.5-9V via Vin.
- Gravação
- Gravação do tipo “arrastar e soltar” via USB para programação da memória Flash.
Vista de cima, veja na figura abaixo os elementos presentes com legenda.
Só pela parte de “Interfaces de controle e comunicação” pode-se perceber a diferença gritante com o Arduino UNO convencional. Enquanto o Arduino possui 1 SPI, 1 I2C, 1 UART, por exemplo, a KL25Z possui 2 ou mais de cada periférico de comunicação, permitindo uma integração com mais dispositivos e componentes ao mesmo tempo.
E “apelando” um pouco mais: Enquanto o Arduino UNO usa um microcontrolador Atmega de 8 bits operando 16 MHz, a FRDM-KL25Z usa um microcontrolador ARM de 32 bits operando a 48 MHz. Ou seja, é capaz de lidar com mais informação e funcionar (bem) mais rápido que um Arduino convencional.
A presença do acelerômetro integrado já é um adicional bem útil para criar projetos de robótica, criando robôs com percepção de inclinação e inércia, pela aceleração.
Já a presença de uma USB integrada ao microcontrolador torna possível fazer a KL25Z se passar por um dispositivo USB próprio, tal como um teclado, mouse, leitor de código de barras, etc. Exemplo: É possível criar uma KL25Z que se passe por um “mouse” USB, controlado pelos movimentos captados pelo acelerômetro da placa!
Essa placa pode ser alimentada por uma pilha, tipo dessas de relógio, CR2032. Basta você soldar o conector na parte de baixo da placa. Todas as conexões já estão feitas, faltando só o conector metálico de suporte. Sendo assim, com uma pilha dessas a placa é capaz de funcionar em modo de baixo-consumo.
A figura adiante mostra a parte de baixo da placa, onde também é possível observar que os projetistas colocaram também legendas indicando as pinagens dos conectores de I/Os. Já na figura abaixo, há um esquemático destacando as conexões entre esses componentes da placa. Observe que nas partes superior e inferior estão os conectores de Entrada/Saída (I/O), e no meio estão os componentes. À esquerda estão em destaque os conectores USB do microcontrolador KL25Z e do Debugger OpenSDA. Toda a região do Debugger está destacada por uma cor esverdeada. A placa pode ser alimentada pelos 5V da USB e pelo sinal Vin. Como dito anteriormente, a placa também pode ser alimentada por uma bateria CR2032 de 3.3V.
Dentre as conexões mostradas no esquemático também estão as conexões do LED RGB controlado via PWM, do Touch Slides Capacitivo (a interface é TSI) e a interface I2C com o sensor inercial, que é o acelerômetro.
O Microcontrolador KL25Z
Esse microcontrolador é a estrela da placa, pois é o elemento principal. Caso queira ler mais a respeito dele, suas especificações e detalhes, e até mesmo procurar o Partnumber para embutir o microcontrolador em projetos específicos, o modelo do microcontrolador é KL25Z128VLK4.
Esse microcontrolador é parte da Família Kinetis L, da NXP, que é voltada para aplicações Low-Power, ou, no bom e velho português, de baixo consumo de energia. O modelo utilizado na placa é uma versão com 80 pinos em encapsulamento LQFP, que dentre os atributos já comentados anteriormente, possui também:
- Clocks
- Módulo de geração de Clock com FLL e PLL para Sistema e CPU
- Clock de referência interna de 32 kHz a 4 MHz.
- Suporte a cristal externo.
- Low-power 1kHz RC oscillator for RTC and COP watchdog
- Integração de Sistemas
- Controladores para gestão de energia e modos de operação
- Controlador DMA – Direct Memory Access
- Watchdog Timer de COP – Computer Operating Properly (Monitora o bom funcionamento do sistema)
- Periféricos Analógicos
- Conversor ADC de 16-bit com suporte a DMA
- Conversor DAC de 12-bit com suporte a DMA
- Comparador de Alta Velocidade
- Periféricos de Comunicação
- 2 Interfaces SPI de 8-bit.
- USB dual-role controller with built-in FS/LS transceiver
- Regulador de Tensão USB
- 2 Módulos I2C.
- 1 Módulo UART de baixo consumo (low-power)
- 2 Módulos UART “padrão”
- Timers
- Um módulo Timer/PWM de 6 canais
- Dois módulos Timer/PWM de 2 canais
- Timer de Interrupção Periódica (PIT) de 2 Canais
- Relógio de Tempo Real (RTC)
- Timer de modo Low-Power (LPTMR)
- Timer de System Tick
Aplicações da FRDM-KL25Z
Na continuidade do que já foi apresentado antes sobre recursos da KL25Z, vamos falar um pouco sobre essas últimas estruturas apresentadas, e destacar alguns pontos-chave interessantes de aplicações com a FRDM-KL25Z:
Ela possui conversor ADC de 16 bits. Para efeito de comparação, o conversor ADC do Arduino UNO é de 10 bits. Ou seja, o conversor Analógico Digital da KL25Z é 64 vezes mais sensível que o conversor do Arduino UNO, permitindo a interpretação de sinais analógicos muito mais “precisos”.
E em complemento (muito bem-vindo, por sinal) há também conversor DAC – Digital-Analógico – embutido, o que permite gerar sinais analógicos com maior precisão, ao contrário de estimativas feitas por meio do uso de PWM.
Ah, já que falamos de PWM, há um total de 6 canais de modulação PWM presentes na FRDM-KL25Z, o que permite, por exemplo, controlar 6 servo-motores independentemente, 6 controles de LEDs via PWM, ou até mesmo usar os sinais PWM para controle de motores com Ponte-H, dentre outros recursos.
A presença de Relógio de Tempo Real agrega, literalmente, a presença interna de um relógio para controle mais preciso de eventos. Vamos supor que você precise programar uma operação a ser feita a cada dia, a cada hora, por exemplo. Um relógio de tempo real – RTC facilita em muito esse tipo de controle de operação.
O Timer de System Tick é um utilitário muito bem-vindo em aplicações com Sistemas de Tempo Real (RTOS), onde agrega-se um mini-sistema operacional para o controle de múltiplas tarefas no sistema embarcado. Não só isso, a presença de 16 KB de RAM e 128 KB de Flash permite ter memória de sobra para o uso de RTOS.
A presença de controlador DMA permite alocar recursos de transferência de dados sem carregar a CPU com essas tarefas, ganhando desempenho.
Sem perder de vista, a presença de controle de modos de operação e recursos para baixo consumo permite escrever programas capazes de fazer a FRDM-KL25Z durar mais tempo quando alimentada com baterias. O que vem muito a calhar em aplicações de monitoramento remoto e robótica.
Um Debugger Integrado
Um ponto muito positivo, para todas as placas Freedom da NXP, é a presença de Debugger OpenSDA. Isso permite não só carregar programas pela USB (do Debugger), como também permite realizar a execução controlada de programas no microcontrolador KL25Z da placa Freedom.
O Debugger OpenSDA é um microcontrolador à parte, “programado para programar”, ou seja, é um outro microcontrolador presente na FRDM-KL25Z, cujo papel é programar a KL25Z. Para usuários mais familiarizados com ferramentas de desenvolvimento para embarcados, um Debugger vem muito a calhar pois permite acompanhar o fluxo de operação do programa, valor de variáveis, uso de recursos, dentre outros.
Não só isso, ele também é capaz de criar um canal de comunicação Serial Tx/Rx com o KL25Z via USB, o que permite você interagir com a placa transmitindo e recebendo dados pela serial, tal como feito comumente com o Arduino, por exemplo.
Uma característica interessante e bem prática do OpenSDA é que ele também funciona como um MSD – Dispositivo de Armazenamento de Dados. Ou seja, quando você pluga a USB do Debugger da FRDM-KL25Z no computador, ele irá se passar como um “pendrive”, e aí, basta você arrastar os arquivos de programas para esse “pendrive” que ele irá então armazenar e programar a KL25Z com o arquivo do programa. Essa característica, por exemplo, é o ponto-chave do ecossistema de desenvolvimento mbed, alvo de próximos artigos.
Observando o esquemático interno abaixo, é possível observar que o Debugger OpenSDA tem acesso ao Reset do Microcontrolador, como também acesso à Serial UART Rx/Tx e tem acesso à interface de programação SWD/JTAG, que é usada para programar a KL25Z. O OpenSDA também tem acesso a um dos LEDs da placa para informar status de operação.
Pinagem da FRDM-KL25Z
A FRDM-KL25Z tem muitos pinos. Na verdade, são 2 pares de fileiras laterais de sinais de Alimentação Elétrica, Entrada/Saída, sinais de Entrada Analógica, Sinais de Interfaces de Comunicação, dentre outros. Ou seja, é bastante coisa. Em suma, totaliza um total de 64 sinais.
De modo a organizar bem como esses sinais estão distribuídos entre os pinos da FRDM-KL05Z, veja a figura abaixo, e observe que há uma referência para os pinos em cada lado dos pares, em cada fileira.
Compatível com Pinagem Arduino
O formato de pinos do FRDM-KL25Z também é compatível com os pinos do padrão Arduino R3, permitindo o uso de Shields e acessórios desenvolvidos para Arduino também.
Na figura abaixo está uma imagem com a FRDM-KL25Z destacando a compatibilidade dos sinais de Energia/Alimentação elétrica, Sinais Analógicos e Sinais Digitais.
Veja que são os sinais externos das fileiras de conectores que correspondem à pinagem Arduino R3.
Desenvolvimento
É possível criar projetos para a FRDM-KL25Z, a priori, de 2 formas: Usando o Kinetis Design Studio (KDS) e o mBed Compiler. Para usuários mais experientes, é possível configurar uma IDE tal como a Eclipse para o desenvolvimento com a FRDM-KL25Z. Para os curiosos de plantão, existem outras IDEs também, tais como a Atollic True Studio e IAR.
Gostou desse post? Deixe seu comentário logo abaixo.
Qual o preço e lugar para compra.
Excelente explicação sobre a placa.
Eu gostaria de saber dá programar a placa em C++ ou ela é somente programável em C/ASM ?
Obrigado.
Excelente Artigo !