A maior rede de estudos do Brasil

Grátis
256 pág.
Descobrindo o STM32

Pré-visualização | Página 5 de 47

de tempo complexas.
Demonstraremos como os temporizadores podem ser usados para definir a po-
sição de um servo motor comum (Figura 1.8) e como medir o “tempo de voo”
de um sensor ultrassônico (Figura 1.9). O sensor ultrassônico usado é conhe-
cido genericamente como HC-SR04 e está disponível por muitos fornecedores
–- comprei um de um vendedor do Ebay. Virtualmente qualquer servo motor
funcionará, entretanto, devido a limitações do USB, é desejável que utilize um
“micro” servo para os experimentos descritos neste livro.
Figura 1.8: Servo
Interface Analógica
A última interface a ser considerada é a analógica – tanto de entrada
(analógica para digital) como de saída (digital para analógica). Um conversor
Digital-Analógico (DAC) converte um valor digital em tensão. Para ilustrar
esta capacidade, usamos um DAC para controlar um pequeno alto-falante
através de um amplificador (Figura 1.11). Este experimento, lendo arquivos
Revision: (None) ((None)) 23
CAPÍTULO 1. INICIANDO
Figura 1.9: Ultrasonic Sensor
de áudio de um cartão de memória SD e tocando-os em um alto-falante, requer
o uso de múltiplas interfaces bem como timers e DMA.
Para ilustrar o uso de conversão Analógica-Digital, utilizaremos um
pequeno potenciômetro (Figura 1.10) para fornecer uma tensão de entrada
variável e um microfone (Figura 1.12) para fornecer um sinal analógico.
Figura 1.10: Potenciômetro comum
Figura 1.11: Auto-falante e Amplificador
Power Supply
Em nosso laboratório utilizamos uma fonte USB para a maioria dos ex-
perimentos. Entretanto, se necessário construir uma fonte por bateria, então
24 Revision: (None) ((None))
1.1. HARDWARE NECESSÁRIO
Figura 1.12: Microfone
será necessário o uso de um regulador de tensão (conversor) entre a bateria
desejada e 5V. O STM32 VL Discovery possui um regulador linear para con-
verter 5V para 3.3V. Utilizei um conversor Buck simples -– A Figura 1.13
mostra um disponível da Pololu –- para converter uma bateria de 9V para
5V. De posse do conversor e da bateria, todos os experimentos descritos neste
livro podem ser feitos de modo portátil.
Figura 1.13: Fonte de Alimentação
Materiais para Prototipagem
Need pictures
De modo a prover uma plataforma para conexão de vários componentes,
recomendo comprar duas placas breadboards de 700-pontos juntamente com
um número de jumpers tanto na configuração macho-macho quanto fêmea-
fêmea. Todos estes estão disponíveis no Ebay com preços altamente competi-
tivos.
Equipamento de Testes
O Analisador Lógico Saleae é mostrado na Figura 1.14. Este disposi-
tivo fornece um analisador lógico de 8 canais capaz de capturar dados digitais
a 10-20MHz, o que é suficientemente rápido para depurar os protocolos seriais
básicos utilizados pelos tutoriais. Enquanto o hardware é muito simples -–
até um pouco primitivo -– o software provido é muito sofisticado. Mais im-
portante, ele tem a capacidade de analisar vários protocolos de comunicação e
Revision: (None) ((None)) 25
CAPÍTULO 1. INICIANDO
mostrar os dados resultantes de maneira significativa. A Figura 1.15 demons-
tra a saída de dados seriais -– neste caso “hello world” (Você talvez precise
dar zoom no PDF para ver os detalhes).
Figura 1.14: Saleae Logic
Figura 1.15: Saleae Logic Software
26 Revision: (None) ((None))
1.2. INSTALAÇÃO DO SOFTWARE
Quando desenvolvemos softwares em ambientes embarcados, o cenário
mais comum quando testamos uma nova interface de hardware é ... não acon-
tecer nada. A não ser que as coisas funcionem perfeitamente, é difícil saber
onde começar a procurar por problemas. Com um analisador lógico, podemos
capturar e visualizar qualquer dado que está sendo transmitido. Por exemplo,
trabalhando com um software para acionar uma porta serial , é possível de-
terminar se alguma coisa está sendo transmitida, e se for o caso, o quê. Isto é
especialmente importante quando o processador embarcado está comunicando
com um dispositivo externo (p. ex.: um Wii Nunchuk) –- onde cada comando
requer a transmissão e recepção de uma sequência binária específica. Um ana-
lisador lógico fornece os meios para a observação dos eventos comunicados em
tempo real (se algum !).
1.2 Instalação do Software
O processo de desenvolvimento de software descrito neste livro utiliza
as bibliotecas de firmware distribuídas pela STMicroelectronics, que fornecem
acesso de baixo nível a todos os periféricos da família STM32. Enquanto estas
bibliotecas são relativamente complicadas, este livro fornece um “caminho das
pedras” para seu uso, bem como alguns atalhos iniciais. As vantagens de utili-
zar estas bibliotecas de firmware são que elas abstraem muito dos detalhes em
nível de bit necessários para programar o STM32, são relativamente madu-
ras e testadas exaustivamente, e possibilitam o desenvolvimento de aplicações
portáveis entre os membros da família STM32. Em contraste, examinamos
um código base distribuído com o processador NXP LPC13XX Cortex-M3 e
descobrimos que está incompleto e relativamente em estado imaturo.
A Tool-chain da GNU
O desenvolvimento de software para este livro foi executado usando
ferramentas de desenvolvimento para sistemas embarcados GNU, incluindo
gcc, gas, gdb e gld. Nós utilizamos com sucesso duas distribuições diferentes
dessas ferramentas. No ambiente Linux usamos a Sourcery (uma subsidia-
ria da Mentor Graphics) CodeBench Lite Edition for ARM (EABI). Ela pode
ser obtida através do endereço: https://sourcery.mentor.com/sgpp/lite/
arm/portal/subscription?@template=lite. Recomendo o uso do instala-
dor GNU/Linux. O site inclui documentação em PDF para a tool-chain GNU
juntamente com um documento “getting started” que mostra instruções deta-
lhadas de instalação.
Revision: (None) ((None)) 27
CAPÍTULO 1. INICIANDO
Adicionar a linha de comandos Linux no arquivo de inicialização do
bash irá tornar a utilização mais fácil
export PATH=path-to/codesourcery/bin:$PATH
Nos sistemas OS X (Macs) utilizamos a distribuição yagarto (www.
yagarto.de) da toolchain da GNU. Existe um instalador simples disponível
para download.
A Biblioteca Firmware STM32
Os componentes STM32 são suportados pela ST Standard Peripheral
Library 5 que fornece o firmware para suportar todos os periféricos dos vários
STM32. Esta biblioteca, embora de fácil instalação, tem o seu uso desafia-
dor. Existem muitos módulos separados (um para cada periférico), bem como
um grande número de funções e definições para cada módulo. Além disto,
compilar usando estes módulos requer sinalizações apropriadas aos compila-
dores, assim como alguns arquivos externos (um arquivo de configuração, e
um pequena quantidade de código). A abordagem utilizada nesta documen-
tação é fornecer um ambiente de construção básico (makefiles, arquivos de
configuração, etc.) que podem facilmente serem estendidos ao explorar os vá-
rios periféricos. Ao invés de tentar descrever completamente a biblioteca de
periféricos, apresento os módulos a medida em que são necessários e outras
funções/definições necessárias.
Template de Código
Enquanto o firmware fornecido pela STMicroelectronics fornece uma
fundação sólida de desenvolvimento de software da família STM32, ele pode
ser difícil de iniciar o desenvolvimento. Infelizmente, os exemplos distribuídos
na placa STM32 VL Discovery estão extremamente entrelaçados com as IDEs
comerciais baseada em Windows para o desenvolvimento de código para o
STM32, e é desafiador extrair e usar em um ambiente Linux. Criei um pequeno
template de exemplo que utiliza makefiles padrão para Linux e em que todos
os aspectos de criação do processo são expostos ao usuário.
Este template pode ser baixado em:
git clone git://github.com/geoffreymbrown/STM32-Template.git
5http://www.st.com/web/en/catalog/tools/PF257890
28 Revision: (None) ((None))
1.2. INSTALAÇÃO DO SOFTWARE
STM32-Template/
BlinkLight.elf

Crie agora seu perfil grátis para visualizar sem restrições.