Você está na página 1de 17

1 WWW.VIDAL.COM.

BR

Neste livro estudaremos passo a passo como desenvolver aplicaes para a famlia de Microcontroladores STM32 da STMicroelectronics, usando como plataforma a placa STM32F4-Discovery. Esta placa usa o chip STM32F407VGT6, com 100 pinos LQFP, 1 MByte de Flash, 192 Kbytes de RAM. Todos os exemplos sero baseados neste modelo. O ambiente de desenvolvimento ser o KEIL uVision4 da KEIL (www.keil.com/arm/) Tpicos cobertos: Introduo ao Cortex A famlia STM32 Mdulos bsicos (clock, interrupes,...) Perifricos da famlia STM32 (timers, AD, USART,...) Ferramentas de hardware (gravao e debug) Bibliotecas prontas Arquivos de configurao (stm32f4xx.h, ) Estruturas de software para configurao de perifricos Ferramentas de software (IDE, compilador, simulador,..) Apresentando o KEIL uVision4 Instalao do KEIL uVision4 Exemplos

2 WWW.VIDAL.COM.BR

1
Breve introduo ao ARM Cortex e a famlia STM32
No vamos nos alongar demais falando sobre as origens e outros detalhes da tecnologia ARM ate mesmo porque basta uma simples pesquisa na internet e teremos material para muitas horas de distrao. Por hora nos basta um breve resumo: No caso do ARM Cortex, temos atualmente 3 famlias: ARM Cortex A: Desenvolvida para sistemas operacionais mais complexos e aplicaes com maior interao com o usurio. Por exemplo: tablets, set-up boxes de TV digital, smartphones. ARM Cortex R: Desenvolvida para sistemas de controle de tempo real. Por exemplo: sistemas veiculares, equipamentos mdicos, modems. ARM Cortex M: Desenvolvida para sistemas de baixo custo e baixo consumo de energia Por exemplo: alarmes, medidores de presso, games, controladores industriais, ...

3 WWW.VIDAL.COM.BR

Em nosso caso vamos focar na familia ARM Cortex-M, cujas caracteristicas de baixo consumo, baixo custo, grande integrao de perifricos e alto poder de processamento a escolha ideal como substituto dos tradicionais microcontroladores de 8 e 16 bits. 1.1 Porque usaremos a linha STM32 da STMicroelectronics ?

Hoje temos uma enorme variedade de fabricantes produzindo chips com a tecnologia ARM. Nossa escolha recaiu sobre a ST devido ao fato de termos uma boa representao local e facilidade de adquirir tanto os chips quanto o sistema de desenvolvimento a preo acessvel.

Figura 1 - Linha de microcontroladores STM32 Cortex-M

4 WWW.VIDAL.COM.BR

1.2

Caractersticas principais da linha STM32: Vamos nos basear na figura 2 para ver as principais caractersticas e perifricos da famlia STM32

Figura 2 Perifricos dos microcontroladores STM32 Cortex-M

5 WWW.VIDAL.COM.BR

Como podemos ver os chips STM32 Cortex so muito poderosos e temos uma enorme gama de perifricos bsicos: Sensor de temperatura Osciladores internos (8 MHz e 32KHz) Conversores de Digital para analgico de 12 bits Conversores de Analgico para digital de 12 bits Watch dog Real time clock (RTC) Timers Canais de comunicao serial sncrona e assncrona (Usart, SPI) DMA Temos ainda perifricos especficos por grupo de dispositivos: Wireless USB Comparadores PWM e controladores para motores CAN udio digital Ethernet Entre vrios outros...

6 WWW.VIDAL.COM.BR

2
Mdulos bsicos da CPU
Todas as CPUs tem os seguintes mdulos bsicos: CPU onde feito o processamento das instrues Memria de Programa e memria de dados Timer de sistema (Systick) Controlador de interrupo (NVIC) Vrios modos de consumo de energia Suporte avanado a debug Vamos dar uma rpida olhada em cada modulo

7 WWW.VIDAL.COM.BR

A. CPU A CPU da famlia ARM Cortex-M uma CPU RISC, com palavras de dados de 32 bits, com um set de instrues poderoso e de alta performance. A maioria das instrues executada em apenas 1 ciclo de maquina, e para garantir a mxima performance enquanto uma instruo esta sendo executada a prxima j esta sendo decodificada e a terceira sendo lida na memria. Caso a prxima instruo seja um desvio condicional a CPU j busca da memria as opes possveis de desvio minimizando o tempo de execuo. O mais importante que no temos de nos preocupar com isto no desenvolvimento de nosso programa. B. Memria de programa e de dados A linha Cortex-M tem uma faixa de endereamento linear de 4 GBytes, divididos entre registros da CPU, perifricos, e memria RAM. A memria de programa tem por objetivo armazenar as instrues a serem executadas pelo processador. Esta memria tem como principal caracterstica no ser voltil, isto , no perde as informaes quando a energia desconectada. Na famlia STM32 temos de 64K a 2MBytes de memria de programa.

8 WWW.VIDAL.COM.BR

J a memria de dados tem largura de 32 bits, e uma caracterstica muito interessante em relao aos tradicionais micros de 8 e 16 bits. A CPU pode manipular dados de 8, 16 e 32 bits diretamente, sem necessidade de artifcios lgicos. Desta forma o desenvolvedor pode usar as variveis no tamanho desejado sem se preocupar com perda de performance ou regies de buraco na memria

Figura 3 Alocao de memria tradicional X Cortex

Na famlia STM32 o tamanho da memria varia de 16Kbytes a 256 KBytes

9 WWW.VIDAL.COM.BR

C. Systick O System Timer, mais conhecido por systick, um contador de 24 bits decrescente e com auto-reload (autorecarga), isto , ao chegar no zero gera um pedido de interrupo e recomea do valor programado. Sua funo principal a de gerar uma base de tempo precisa e repetitiva, muito usada em sistemas de tempo real. Pode ainda ser usado como um timer simples para pedir interrupo em intervalos regulares como qualquer outro timer.. D. NVIC O modulo NVIC (Nested Vector Interrupt Controller Controlador de vetores de interrupo aninhados) existe em toda a linha ARM. Seu objetivo controlar os pedidos de interrupo (baseado em nveis de prioridade), memoriza-los caso mais de uma esteja pendente e acionar as rotinas correspondentes a cada pedido de forma organizada e rpida, com o menor atraso possvel. Na linha STM32 existem 16 niveis de prioridade diferentes. O que uma interrupo ? Uma interrupo nada mais que uma breve parada na atividade atual para executar outra atividade, onde ao final desta o processador retornar a atividade anterior. No caso das interrupes, esta parada solicitada por um evento externo ou interno ao processador, de forma assncrona, isto , no sabemos quando vai ocorrer.

10WWW.VIDAL.COM.BR

Diferente de rotinas que so chamadas pelo programa conforme desejado, onde neste caso sabemos o ponto de parada. Podemos imaginar uma interrupo como o simples ato de pararmos uma atividade, como ler ou assistir televiso, para atender a campainha que tocou (no sabemos de antemo o instante em que a campainha vai tocar). De uma maneira bem simples, podemos considerar que aps atendermos a esta interrupo, voltaremos ao que estvamos fazendo (no vamos levar em conta a incrvel capacidade humana de abandonar uma atividade para se dedicar apenas a outra. No microcontrolador no funciona desta maneira). O que prioridade para uma interrupo ? Podemos dizer que uma interrupo qualquer sempre poder interromper o programa, se estiver habilitada. Mas, se esta interrupo for de baixa prioridade, tambm poder ser interrompida, com a chegada de um pedido de outra interrupo de alta prioridade. Como existem 16 niveis de prioridade, voc consegue imaginar o que acontece com vrias interrupes chegando uma dentro da outra ?

E. Modos de consumo de energia Alem do modo normal onde a CPU roda na velocidade ajustada pelo oscilador e PLL, a famlia STM32 ainda tem mais 3 modos usados para minimizar o consumo de energia: Modo SLEEP Neste modo apenas a CPU para de rodar. Todos os perifricos habilitados continuam operando e podem acordar a CPU.

11WWW.VIDAL.COM.BR

Modo STOP Neste modo temos uma enorme economia de energia, pois todas as fontes de clock so desabilitadas, parando todos os perifricos internos. Apenas a RAM e os registros internos ficam alimentados, mantendo os dados e ajustes ntegros. A CPU saira do modo STOP por uma interrupo externa (EXTI) que esteja habilitada ou pelo alarme do RTC. Modo STANDBY Mxima economia de energia. O regulador de tenso interno desativado, desligando todos os perifricos, sistema de clock, CPU, memria RAM e registros. Apenas a memria RAM do Backup Domain ficara a salvo (caso esteja usando a bateria no pino Vbat) A CPU sair do modo STANDBY por um reset externo, pelo pino WKUP ou pelo alarme do RTC.

F. Debug Todas as CPUs ARM possuem internamente um hardware dedicado para debug. Na linha Cortex-M h hardware especial chamado CoreSight permite o debug e a visualizao de variveis em tempo real. O sistema de debug usado nas placas ST a ferramenta ST-Link (que usa 2 pinos) ou ST-Link/V2 (que usa 2 ou 3 pinos, dependendo do chip a ser usado).

12WWW.VIDAL.COM.BR

Falaremos mais sobre estas ferramentas no Capitulo 4.

G. Encapsulamento A famlia STM32F40X esta disponvel em vrios encapsulamentos e nmero de pinos:

O STM32F407VG usado na placa STM32F4-discovery tem 100 pinos:

13WWW.VIDAL.COM.BR

3
Alimentao, clock, reset
Alimentao A tenso de trabalho esta na faixa de 2.0V a 3.6V. O valor comumente usado de 3.3V. Temos ainda o pino Vbat, especfico para alimentar um modulo especial da CPU, com registros para o relgio de tempo real (RTC) e algumas posies de memria RAM que podem ser usadas para backup.

14WWW.VIDAL.COM.BR

Caso no seja necessrio usar estes registros com backup, ao invs de uma bateria o pino Vbat dever ser ligado ao Vdd. Clock O mnimo para colocar o chip para rodar alimenta-lo corretamente, pois j possui internamente um oscilador de 16 MHz (HSI) que pode ser usado como fonte primaria de clock (alguns modelos tem HSI de 8 MHz). Podemos ainda usar um oscilador externo a cristal (HSE) para os casos em que precisamos de um clock mais preciso. Em qualquer caso, contamos ainda com um PLL que permite elevar a frequncia ate o seu mximo, por exemplo, 168 MHz. Possui ainda um oscilador de 32 KHz interno (LSI), e pinos para a colocao de um cristal de 32.767 Hz (LSE), para o caso de usarmos o RTC.

Reset Possui ainda um circuito de reset interno, e se desejarmos acionar o reset manualmente, basta colocar um boto no pino NRST. Geralmente o pino NRST esta ligado aos pinos do debugger.

15WWW.VIDAL.COM.BR

4
Perifericos da famlia STM32 (timers, AD, USART,...)
Os perifricos mais populares, ou seja, presentes na maioria dos microcontroladores atualmente so: Pinos de Entrada e Sada digital (mais conhecidos por I/O, de Input/Output) Pinos de interrupo externa Conversores AD Comunicao serial Timers

16WWW.VIDAL.COM.BR

Temos tambm Conversores DA Seriais sncronos RTC Timer mais elaborados PWM CAN USB ......

4.1 Pinos de I/O

17WWW.VIDAL.COM.BR

T: //