UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ
DEPARTAMENTO ACADÊMICO DE ELETROTÉCNICA
CURSO DE ENGENHARIA INDUSTRIAL ELÉTRICA
Tópicos Especiais Em Eletrônica Industrial - Sistemas Embarcados
Configuração e acesso aos pinos de E/S de propósito geral (GPIO)
Prof. Amauri Assef - [email protected] 1
paginapessoal.utfpr.edu.br/amauriassef
UTFPR – Campus Curitiba
Prof. Amauri Assef
Sistemas Embarcados
Microcontroladores – MCUs
Dispositivos digitais que agregam µP + memórias + periféricos E/S
Programados para funções específicas e embarcados em outro dispositivo
Geralmente, automação e controle de produtos e periféricos
Contraste com outros µPs de propósito geral (utilizados em PC)
Escolhidos conforme a aplicação do projeto – GPIOs, periféricos, interfaces,
memorias, etc.
uP Mem. GPIO ADC Timers SPI CAN Ethernet Ctrl. Interrupções
FLASH digital
Mem. Mem. USART DAC PWM I2C USB RTC
RAM EEPROM
UTFPR – Campus Curitiba 2
Prof. Amauri Assef
Sistemas Embarcados
Microcontrolador MK60DN512VMD10
Fabricante Freescale Semiconductor, Inc. (www.freescale.com)
MCU do portfólio da família Kinetis
UTFPR – Campus Curitiba 3
Prof. Amauri Assef
Sistemas Embarcados
Características do MCU MK60DN512VMD10
32-bit ARM Cortex-M4 core with DSP instructions
100MHz maximum core operating frequency
144 MAPBGA, 13mm x 13mm, 1.0mm pitch package
1.71V – 3.6V operating voltage input range
512 Kbytes of program flash, 128 Kbytes of static RAM
External bus interface
Power management controller with 10 different power modes
Multi-purpose clock generator with PLL and FLL operation modes
16-bit SAR ADC, 12-bit DAC
High-speed analog comparator with 6-bit DAC
Programmable voltage reference
UTFPR – Campus Curitiba 4
Prof. Amauri Assef
Sistemas Embarcados
Características do MCU MK60DN512VMD10
USB full-speed/low-speed OTG/Host/Device controller with device charge
detect
10/100 Mbps Ethernet MAC
SPI, I2C (w/ SMBUS support), UART (w/ ISO7816 and IrDA), CAN, I2S
SD Host Controller (SDHC)
GPIO with pin interrupt support, DMA request capability, digital glitch
filtering
Capacitive touch sensing inputs (TSI)
Debug interfaces: JTAG, cJTAG, SWD
Trace: TPIO, FPB, DWT, ITM, ETM, ETB
UTFPR – Campus Curitiba 5
Prof. Amauri Assef
Sistemas Embarcados
Quadro resumo dos dispositivos da família K60
Manual de referência: K60 Sub-Family Reference Manual
K60P144M100SF2V2RM.pdf
UTFPR – Campus Curitiba 6
Prof. Amauri Assef
Sistemas Embarcados
Placa TWR-K60D100M
Tower compatible microcontroller module
MK60N512VMD100: K60N512 in a 144 MAPBGA with 100MHz operation
Touch Tower Plug-in Socket
General purpose Tower Plug-in (TWRPI) socket
On-board JTAG debug circuit (OSJTAG) with virtual serial port
Three axis accelerometer (MMA7660)
Four (4) user-controllable LEDs
Four (4) capacitive touch pads
Two (2) user pushbutton switches
Potentiometer
Battery Holder for 20mm lithium battery (e.g. 2032, 2025)
SD Card slot
UTFPR – Campus Curitiba 7
Prof. Amauri Assef
Sistemas Embarcados
Placa TWR-K60D100M
UTFPR – Campus Curitiba 8
Prof. Amauri Assef
Sistemas Embarcados
Placa TWR-K60D100M
UTFPR – Campus Curitiba 9
Prof. Amauri Assef
Sistemas Embarcados
Placa TWR-K60D100M
UTFPR – Campus Curitiba 10
Prof. Amauri Assef
Sistemas Embarcados
Placa TWR-K60D100M – Conector E/S e pinagem
UTFPR – Campus Curitiba 11
Prof. Amauri Assef
Sistemas Embarcados
GPIOs (General-Purpose Input/Output) – cap. 55
Representam os módulos para leitura e escrita de dados para
interfaceamento com demais dispositivos e periféricos
Nos MCUs Kinetis cada porta possui 32 pinos [31:0]
Cada porta é conectada ao MCU através de uma bridge periférica
(barramento), possibilitando a comunicação do MCU com módulos mais
lentos
UTFPR – Campus Curitiba 12
Prof. Amauri Assef
Sistemas Embarcados
Diagram em blocos do módulo GPIO do MCU Kinetis
1 Bridge periférica
ARM Cortex
PORTA M4 CPU
32 13
1
PORTB
32
1
PORTC
32
1
PORTD
32
1
PORTE
32
UTFPR – Campus Curitiba
Prof. Amauri Assef
Sistemas Embarcados
Registradores do GPIO
Cada porta possui um conjunto de registradores para controle dos pinos
Port Data Direction Register (GPIOx_PDDR) – configura entrada ou saída
Port Data Output Register (GPIOx_PDOR) – configura o nível lógico do pino
Port Set Output Register (GPIOx_PSOR) – nível lógico 1 para setar o pino
Port Clear Output Register(GPIOx_PCOR) – nível lógico 1 para zerar o pino
UTFPR – Campus Curitiba 14
Prof. Amauri Assef
Sistemas Embarcados
Port Toggle Output Register (GPIOx_PTOR) – nível lógico 1 para inverter o
nível lógico presente no pino
Port Data Input Register (GPIOx_PDIR) – registro para leitura da porta
UTFPR – Campus Curitiba 15
Prof. Amauri Assef
Sistemas Embarcados
Mapa de memória do GPIOA (PORTA)
UTFPR – Campus Curitiba 16
Prof. Amauri Assef
Sistemas Embarcados
Diagrama em blocos das operações do GPIO
Data Output Register
Output MUX Set Output Register
Buffer Clear Output Register
Pin Inv Toggle Output Register
Pad
Data Direction Register
Input Data Input Register
Buffer
UTFPR – Campus Curitiba 17
Prof. Amauri Assef
Sistemas Embarcados
Exemplos:
PTA11, PTA28, PTA29, PTA10 como saídas em nível alto:
// Configuração da direção dos pinos
GPIOA_PDDR = (1 << 11) | (1<<28) | (1<<29) | (1<<10);
// Instrução para setar os pinos em nível alto
GPIOA_PSOR = (1 << 11) | (1<<28) | (1<<29) | (1<<10);
PTA19, PTE26 como entradas:
GPIOA_PDDR &= ~(1 << 19); // Configuração da chave SW1
GPIOE_PDDR &= ~(1 << 26); // Configuração da chave SW2
UTFPR – Campus Curitiba 18
Prof. Amauri Assef
Sistemas Embarcados
Exemplos:
Teste das chaves SW1 (PTA19) e SW2 (PTE26) :
If ((GPIOA_PDIR & (1 << 19) == 0) || (GPIOE_PDIR & (1 << 26) == 0))
{
Escrever a função para chave pressionada
}
else
{
Escrever a função para chave aberta
}
UTFPR – Campus Curitiba 19
Prof. Amauri Assef
Sistemas Embarcados
Registradores do GPIO – ativação do clock
Na configuração padrão os clocks de áreas específicas que não estão em
uso são desativados, reduzindo o consumo dinâmico necessário.
Para utilizar um periférico particular ou recurso o usuário precisa ativar
esse relógio para cada item individualmente através do registro:
System Clock Gating Control Register 5 (SIM_SCGC5)
UTFPR – Campus Curitiba 20
Prof. Amauri Assef
Sistemas Embarcados
Registradores do GPIO – seleção do MUX
Cada pino do MCU é ligado a um multiplexador. Isso permite que cada
pino possa executar diversas funções, bem como otimizar a
funcionalidade em encapsulamentos menores.
O multiplexador de sinais e outras opções de pinos podem ser
configurados no:
Pin Control Register n (PORTx_PCRn)
UTFPR – Campus Curitiba 21
Prof. Amauri Assef
Sistemas Embarcados
Pin Control Register n (PORTx_PCRn)
Configurações: interrupção, DMA, multiplexador dos pinos, capacidade de
corrente (Drive Strength Enable), saída com dreno aberto (Open Drain
Enable), filtro dos pinos de entrada, valocidade (Slew Rate Enable), pull
up, pull down, etc.
Verificar Reference Manual para maiores detalhes
UTFPR – Campus Curitiba 22
Prof. Amauri Assef
Sistemas Embarcados
Exemplos:
PTA11, PTA28, PTA29, PTA10 como I/O digital:
PORTA_PCR11 = 0X0100;
PORTA_PCR28 = 0X0100;
PORTA_PCR29 = 0X0100;
PORTA_PCR10 = 0X0100;
PTA19, PTE26 como entradas como I/O digital e pull-up:
PORTA_PCR19 = 0X0100 | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK;
PORTE_PCR26 = 0X0100 | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK;
UTFPR – Campus Curitiba 23
Prof. Amauri Assef
Sistemas Embarcados
Código exemplo para configuração do GPIO
Teste para configuração de LED (PTA11) no pino e chave SW1 (PTA19):
1. Habilitar o respectivo clock para cada PORT – registro SIM_SCGC5
2. Configurar o registro PORTx_PCRn (x= A,B,C..E , n = 0..31) para GPIO
UTFPR – Campus Curitiba 24
Prof. Amauri Assef
Sistemas Embarcados
int main(void) // HABILITAÇÃO DO CLOCK DO PORTA;
{
int counter = 0; // LED LARANJA
// SW1
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK; // LED LARANJA
// SW1
//HABILITA MUX COMO I/O DIGITAL // SAÍDA PARA LED
PORTA_PCR11 = 0X100; // CHAVE SW1
PORTA_PCR19 = 0X100 | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK;
// ATRASO POR SOFWARE
// PORTA_PCR11 = PORT_PCR_MUX(1); // INVERTE O ESTADO DO LED
// PORTA_PCR19 = PORT_PCR_MUX(1) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK;
GPIOA_PDDR = (1<<11);
GPIOA_PDDR &= ~(1<<19);
//LAÇO INFINITO
for(;;) {
counter++;
if (counter == 100000){
counter = 0;
GPIOA_PTOR = (1<<11);
}
}
return 0;
}
UTFPR – Campus Curitiba 25
Prof. Amauri Assef
Sistemas Embarcados
Processor Expert
É um plug in do CodeWarrior (Eclipse)
Utiliza como conceito um grau de abstração maior
Possibilita criação de aplicações com pouco conhecimento prévio do MCU
Permite inserção de objetos/componentes, chamados de Beans, que se
relacionam com os recursos de hardware e periféricos internos do MCU
O acesso dos recursos de hardware não é direto e sim por meio de
bibliotecas de funções (métodos )
Embedded Component
Configuração completa do dispositivo
Configuração do CPU selecionado
Configuração dos componentes selecionados pelo usuário conforme a aplicação
Gerador de código
Códigos de drivers / arquivos de configuração necessários
UTFPR – Campus Curitiba 26
Prof. Amauri Assef
Sistemas Embarcados
Conceitos do Processor Expert (PE)
Aplicação do usuário com Microkernel Device Drivers
acesso ao hardware via
Camada do Processor Expert
Processor Expert
DAC USB GPIO I2C
Camada do Processor Expert CPU ADC Timer UART
Microcontrolador
Periféricos Internos
Núcleo
UTFPR – Campus Curitiba 27
Prof. Amauri Assef
Sistemas Embarcados
Componentes (Beans) e Camadas
High Level Components
Logical Device Drivers (LDD Components)
Low Level Components
Peripheral Initialization Components
PDD Physical Device Drivers:
Apenas disponível para Kinetis e Coldfire+
Camada de software para acessar os registradores dos periféricos
Necessita de inclusão de arquivo de cabeçário (.h), estes arquivos se
encontram em: {CodeWarrior}\Processor Expert\lib\{MCU}\pdd
Implementados com “macros”
UTFPR – Campus Curitiba 28
Prof. Amauri Assef
Sistemas Embarcados
Árvore do
projeto
Component Component Perspectivas
Inspector Library
UTFPR – Campus Curitiba Dica: Pressionar o botão direito
Prof. Amauri Assef sobre a Cpu e visualizar o
encapsulamento do alvo
(Target CPU View)
29
Sistemas Embarcados
Select Different
Package
Unused Peripherals
CPU Pins
UTFPR – Campus Curitiba 30
Prof. Amauri Assef
Sistemas Embarcados
Componentes
São blocos de construção de uma aplicação
Cada funcionalidade é separada em pequenos blocos
Cada componente possui a sua interface de configuração (similar às classes de
programação orientada a objeto)
Propriedades
Modificar/customizar o comportamento de objetos
Configuração durante o desenvolvimento do projeto
Métodos
Processo que podem ser executados
Chamada de funções
Eventos
Indicação de mudanção de estado
Geralmente implementada como serviço de requisição de interrupções (ISRs)
UTFPR – Campus Curitiba 31
Prof. Amauri Assef
Sistemas Embarcados
Component Inspector
Propriedades
Métodos
Eventos
UTFPR – Campus Curitiba 32
Prof. Amauri Assef
Sistemas Embarcados
Components Library
Bibliotecas de periféricos, módulos e funções pré-elaboradas
UTFPR – Campus Curitiba 33
Prof. Amauri Assef
Sistemas Embarcados
Componente:
Bits_IO
8 pinos - GPIOE
Saídas
Valor inicial = 0
UTFPR – Campus Curitiba 34
Prof. Amauri Assef
Sistemas Embarcados
Métodos 35
disponíveis
UTFPR – Campus Curitiba
Prof. Amauri Assef
Sistemas Embarcados
Componente:
Timer_Int
1ms
UTFPR – Campus Curitiba 36
Prof. Amauri Assef
Sistemas Embarcados
Escrever 1 (ms) e
pressionar ok
UTFPR – Campus Curitiba 37
Prof. Amauri Assef
Sistemas Embarcados
Propriedades do
TI1
Nome do evento 38
(interrupção do
TI1)
UTFPR – Campus Curitiba
Prof. Amauri Assef
Sistemas Embarcados
Pressionar o botão Generate Processor Expert Code
Os arquivos de inicialização do PE e dos eventos serão atualizados
UTFPR – Campus Curitiba 39
Prof. Amauri Assef
Sistemas Embarcados
No arquivo Events.c incluir a variável global contador e inverter o estados
dos pinos do GPIOE a cada 1s (1000 interrupções de 1 ms).
Clicar no método
e arrastá-lo para o
arquivo
UTFPR – Campus Curitiba 40
Prof. Amauri Assef
Sistemas Embarcados 41
Selecionar a conexão alvo
e compilar o projeto:
– Project → Build Project
– Obs 1: Pressionar o botão
direito do mouse sobre o
nome do projeto e
escolher a opção Build
Project
– Obs 2: Selecionar a opção
Clean Project após
alterações significativas
UTFPR – Campus Curitiba
Prof. Amauri Assef
Sistemas Embarcados
UTFPR – Campus Curitiba DEPURAÇÃO
Prof. Amauri Assef
42
Sistemas Embarcados
Debug Control Data/Register Views
Source Code TELA DE DEPURAÇÃO
UTFPR – Campus Curitiba Disassembler
Prof. Amauri Assef
Console, Tasks, Problems Views
43
Sistemas Embarcados
Referências:
1) www.freescale.com/TWR-K60N512
2) www.freescale.com/kinetis
3) TWR-K60N512-QSG: Quick Start Guide
4) TWR-K60N512-SCH: Schematics
5) TWR-K60N512-PWA: Design Package
6) TWRPI-SLCD-SCH: Schematics
7) TWRPI-SLCD-PWA: Design Package
8) K60 Family Product Brief
9) K60 Family Reference Manual
10) Kinetis Quick Reference User Guide (QRUG)
11) Tower Configuration Tool
Agradecimento:
Freescale Semiconductor, Inc
Sra. Damaris Ochoa, Coordenadora do Programa Universitário da Freescale na América
Latina
UTFPR – Campus Curitiba 44
Prof. Amauri Assef