A maior rede de estudos do Brasil

Grátis
256 pág.
Descobrindo o STM32

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

Descobrindo o Microcontrolador STM32
Geoffrey Brown
©2012
6 de junho de 2018
This work is covered by the Creative Commons Attibution-NonCommercial-
ShareAlike 3.0 Unported (CC BY-NC-SA 3.0) license.
http://creativecommons.org/licenses/by-nc-sa/3.0/
Este livro foi traduzido pela turma de Engenharia de Automação e
Controle do Instituto Federal do Espírito Santo - Campus Serra, como um tra-
balho para a disciplina Arquitetura de Computadores em 2014/2. (Amanda
Fernandes Vilaça Martins, Felippe Gaede, Pedro Freitas, Gabriel Magnago
Alves, Henrique Silva Costa, José Smith, Vivian Azeredo Gusella, Guilherme
Ferrari)
Correções, sugestões e comentários: envie para serafini@ifes.edu.br ou jisera-
fini@gmail.com
Revision: (None) ((None)) 1
Sumário
Lista de Exercícios 7
Prefácio 11
1 Iniciando 13
1.1 Hardware Necessário . . . . . . . . . . . . . . . . . . . . . . . . 16
STM32 VL Discovery . . . . . . . . . . . . . . . . . . . . . . . 18
Asynchronous Serial . . . . . . . . . . . . . . . . . . . . . . . . 19
SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Time Based . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Interface Analógica . . . . . . . . . . . . . . . . . . . . . . . . . 23
Power Supply . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Materiais para Prototipagem . . . . . . . . . . . . . . . . . . . 25
Equipamento de Testes . . . . . . . . . . . . . . . . . . . . . . . 25
1.2 Instalação do Software . . . . . . . . . . . . . . . . . . . . . . . 27
A Tool-chain da GNU . . . . . . . . . . . . . . . . . . . . . . . 27
A Biblioteca Firmware STM32 . . . . . . . . . . . . . . . . . . 28
Template de Código . . . . . . . . . . . . . . . . . . . . . . . . 28
Servidor GDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.3 Referências Principais . . . . . . . . . . . . . . . . . . . . . . . 30
2 Introdução ao STM32 F1 33
2.1 O Cortex-M3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.2 STM32 F1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3 Programa Esqueleto 49
Programa Demo . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Scripts Make . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
O Modelo de Memória do STM32 e a sequencia de Boot . . . . 54
2 Revision: (None) ((None))
SUMÁRIO
4 Configuração do STM32 59
4.1 Distribuição de Clock . . . . . . . . . . . . . . . . . . . . . . . 63
4.2 Pinos de I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.3 Funções Alternativas . . . . . . . . . . . . . . . . . . . . . . . . 67
4.4 Remapeamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.5 Atribuições de Pinos para os Exemplos e Exercícios . . . . . . . 68
4.6 Configuração de Periféricos . . . . . . . . . . . . . . . . . . . . 70
5 Asynchronous Serial Communication 73
5.1 Implementação de Polling no STM32 . . . . . . . . . . . . . . . 79
5.2 Inicialização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6 SPI 89
6.1 Protocolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.2 Periféricos SPI do STM32 . . . . . . . . . . . . . . . . . . . . . 91
6.3 Testando a Interface SPI . . . . . . . . . . . . . . . . . . . . . . 94
6.4 Interface EEPROM . . . . . . . . . . . . . . . . . . . . . . . . . 96
7 SPI : Display LCD 103
7.1 Módulo LCD a Cores . . . . . . . . . . . . . . . . . . . . . . . . 103
7.2 Informações sobre Copyright . . . . . . . . . . . . . . . . . . . 115
7.3 Comandos de Inicialização (Restantes) . . . . . . . . . . . . . . 115
8 Cartões de Memória SD 117
8.1 Organização do FatFs . . . . . . . . . . . . . . . . . . . . . . . 120
8.2 SD Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.3 Copyright do FatFs . . . . . . . . . . . . . . . . . . . . . . . . 127
9 I2C – Wii Nunchuk 129
9.1 Protocolo I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
9.2 Wii Nunchuk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
9.3 Inteface STM32 I2C . . . . . . . . . . . . . . . . . . . . . . . . 137
10 Temporizadores ou Timers 145
10.1 Saída PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
7735 Backlight . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
10.2 Captura de Entrada (Input) . . . . . . . . . . . . . . . . . . . . 152
11 Interrupções 157
11.1 Modelo de Exceção do Cortex-M3 . . . . . . . . . . . . . . . . 161
11.2 Habilitando Interrupções e Definindo suas Prioridade . . . . . . 165
Revision: (None) ((None)) 3
SUMÁRIO
11.3 Configuração do NVIC . . . . . . . . . . . . . . . . . . . . . . . 166
11.4 Exemplo: Interrupções do Timer . . . . . . . . . . . . . . . . . 167
11.5 Exemplo: Comunicação Serial com Interrupção . . . . . . . . . 168
Filas de Interrupções Seguras . . . . . . . . . . . . . . . . . . . 173
Controle de Fluxo por Hardware . . . . . . . . . . . . . . . . . 175
11.6 Interrupções Externas . . . . . . . . . . . . . . . . . . . . . . . 180
12 DMA: Direct Memory Access 187
12.1 Arquitetura DMA do STM32 . . . . . . . . . . . . . . . . . . . 189
12.2 Suporte DMA para o SPI . . . . . . . . . . . . . . . . . . . . . 191
13 DAC : Conversão Digital Analógica 197
Advertência: . . . . . . . . . . . . . . . . . . . . . 198
13.1 Exemplo: DMA Driven DAC . . . . . . . . . . . . . . . . . . . 202
14 ADC : Conversão Analógica Digital 209
14.1 Sobre ADCs de Aproximação Sucessivas . . . . . . . . . . . . . 210
15 NewLib 219
15.1 Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
15.2 Construindo a newlib . . . . . . . . . . . . . . . . . . . . . . . . 226
16 Sistemas Operacionais de Tempo-Real 227
16.1 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
16.2 Configuração do FreeRTOS . . . . . . . . . . . . . . . . . . . . 234
16.3 Sincronização . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
16.4 Manipuladores de Interrupção . . . . . . . . . . . . . . . . . . . 237
16.5 SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
16.6 FatFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
16.7 FreeRTOS API . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
16.8 Discussão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
17 Próximos Passos 247
17.1 Processadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
17.2 Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Medições de Posição/Inercial . . . . . . . . . . . . . . . . . . . 250
Sensores Ambientais . . . . . . . . . . . . . . . . . . . . . . . . 251
Sensores de Força e Movimento . . . . . . . . . . . . . . . . . . 251
Identificação – Código de Barras/RFID . . . . . . . . . . . . . 251
Proximidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
17.3 Comunicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
4 Revision: (None) ((None))
SUMÁRIO
17.4 Discussão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Atribuições 254
Referências Bibliográficas 255
Revision: (None) ((None)) 5
SUMÁRIO
List of exercises
Exercise 3.1 GDB no STM32 . . . . . . . . . . . . . . . . . . . . . 52
Exercise 4.1 Blinking Lights . . . . . . . . . . . . . . . . . . . . . . 62
Exercise 4.2 Blinking Lights com Pushbutton . . . . . . . . . . . . . 67
Exercise 4.3 Configuração sem a Standard Peripheral Library . . . 70
Exercise 5.1 Testando a Interface USB/UART . . . . . . . . . . . . 75
Exercise 5.2 Hello World! . . . . . . . . . . . . . . . . . . . . . . . 83
Exercise 5.3 Echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Exercise 6.1 SPI Loopback . . . . . . . . . . . . . . . . . . . . . . . 95
Exercise 6.2 Write e Teste de um Módulo EEPROM . . . . . . . . 101