Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

247 views

Published on

Nesses slides são exibidos os detalhes dos pinos de GPIO Kinetis L25Z. São apresentados todos os registradores para a correta configuração dos pinos para uso como entradas e/ou saídas digitais. Esse material faz parte de um curso de férias que ministrei na FACENS

Published in: Engineering
  • Be the first to comment

Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (General Purpose I/O)

  1. 1. Fábio Souza 2015 Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados GPIO (General Purpose I/O)
  2. 2. Fábio Souza 2015 Introdução aos GPIOs Um dos grandes beneficio de um microcontrolador em relação aos microprocessadores são os pinos de I/O de uso geral. Estes pinos efetuam a interface entre o microcontrolador e o mundo externo. Nestes pinos podem ser ligados os botões, LED’s, motores, etc. Nesse módulo aprenderemos como funcionam os pinos de GPIO nos microcontroladores Kinetis L e como fazer corretamente as configurações para uso dos mesmos.
  3. 3. Fábio Souza 2015 GPIO Kinetis L25Z O Kinetis KL25 contém 4 portas, sendo elas PORTA, PORTB, PORTC, PORTD e PORTE, onde: ● PORTA = 8 pinos; ● PORTB = 8 pinos; ● PORTC = 16 pinos; ● PORTD = 8 pinos; ● PORTE = 13 pinos; ● TOTAL = 53 I/O’s disponíveis com multiplas funções
  4. 4. Fábio Souza 2015 Diagrama de blocos
  5. 5. Fábio Souza 2015 Conexão do GPIO a CPU Nota-se no diagrama de blocos que os PORTs se comunicam através de um barramento com o microcontrolador. Como os pinos de GPIO não são de alta velocidade é possível multiplexar os mesmos ou conectá-los em um barramento compartilhado, reduzindo assim a quantidade de vias necessárias para interface com a CPU.
  6. 6. Fábio Souza 2015 Pinos da FRDM KL25Z
  7. 7. Fábio Souza 2015 Registradores Cada PORT possui um conjunto de registradores para configuração e controle dos pinos de GPIO. No Kinetis L os seguintes registradores são utilizados: ● SIM_SCGC5 (System Clock Gating Control) ● Pin Control Register n (PORTx_PCRn) ● GPIO Port Data Direction Register (GPIOx_PDDR) ● Port Data Output Register (GPIOx_PDOR) ● Port Set Output Register (GPIOx_PSOR) ● Port Clear Output Register (GPIOx_PCOR) ● Port Toggle Output Register (GPIOx_PTOR) ● Port Data Input Register (GPIOx_PDIR)
  8. 8. Fábio Souza 2015 Ativando o Clock para o PORT Antes de utilizar o pino deve-se ativar o clock para cada conjunto de porta. Isso é feito através do registrador: SIM_SCGC5 (System Clock Gating Control)
  9. 9. Fábio Souza 2015 Configurando o pino como GPIO Os pinos geralmente possuem diversas funções que são multiplexadas ao mesmo. Dessa forma é necessário configurar qual função vai ser utilizada. Para isso utiliza-se o registrador : Pin Control Register n (PORTx_PCRn). Para uso do pino como GPIO deve-se configurar o MUX como 1. Conforme tabela na pagina 184, do KL25 Sub-Family Reference Manual.
  10. 10. Fábio Souza 2015 Configurando a direção do pino Antes de utilizar o pino deve-se configurar o mesmo como uma entrada ou saída digital. Para isso utiliza-se o registrador GPIO Port Data Direction Register (GPIOx_PDDR), conforme a necessidade do projeto:
  11. 11. Fábio Souza 2015 Alterando valores nos pinos de saídas Quando o pino for configurado como saída, existem 4 registradores que irão determinar o estado do pino: ● Port Data Output Register (GPIOx_PDOR) ● Port Set Output Register (GPIOx_PSOR) ● Port Clear Output Register (GPIOx_PCOR) ● Port Toggle Output Register (GPIOx_PTOR)
  12. 12. Fábio Souza 2015 Port Data Output Register (GPIOx_PDOR) Coloca o pino correspondente em nível lógico “1” ou “0”.
  13. 13. Fábio Souza 2015 Port Set Output Register (GPIOx_PSOR) Escreve nivel lógico “1” no pino correspondente
  14. 14. Fábio Souza 2015 Port Clear Output Register (GPIOx_PCOR) Escreve nivel lógico “0” no pino correspondente
  15. 15. Fábio Souza 2015 Port Toggle Output Register (GPIOx_PTOR) Inverte os estado lógico presente no pino
  16. 16. Fábio Souza 2015 Leitura de estados de pinos de entrada Port Data Input Register (GPIOx_PDIR) - Contêm o estado presente no pino configurado como entrada Digital.
  17. 17. Fábio Souza 2015 Exemplo 1 - LEDs (GPIO_LEDS) Acionar os leds RGB presentes na FRDM KL25Z. Cada led pode ser manipulado separadamente com a configuração dos registradores.
  18. 18. Fábio Souza 2015 Exemplo 1 - Esquemático Conforme exibido no esquemático da FRDM KL25Z os LEDs estão ligados da seguinte forma: Note que estão ligados em anodo comum, dessa forma para ligar o LED o pino correspondente dever ir para nivel ‘0’.
  19. 19. Fábio Souza 2015 Exemplo 1 - passos 1 - Ligar o clock para o PORT dos LEDs 2 - Configurar o pino como GPIO 3 - Configurar o pino como saída 4 - ligar leds
  20. 20. Fábio Souza 2015 Exemplo 2 - Piscar LEDS (GPIO_BLINK) Piscar os leds utilizando rotina de delay Passos: 1. Ligar LED 2. Aguardar 1 seg 3. Desliagar LED 4. Aguardar 1 seg
  21. 21. Fábio Souza 2015 Exemplo 3 - Teclas (GPIO_TECLAS) Fazer a leituras das teclas presentes no shield e ligar leds quando forem pressionadas. SW1 comanda D3 e SW2 comanda D4.

×