Minhas anotações e atividades do treinamento do professor Gabriel Moreira Vigiano sobre os microcontroladores da família STM32 32-bit ARM Cortex MCUs.
Este repositório contém exercícios, códigos de exemplo, documentação e recursos sobre o curso. Utilize os links abaixo para acessar rapidamente os conteúdos.
-
Fabricante: STMicroelectronics
A família do Cortex tem três categorias principais:
- ARM Cortex-A (p/ processadores)
- ARM Cortex-R (p/ aplicações em tempo real)
- ARM Cortex-M (p/ microcontroladores)
Alguns conceitos:
- Firmware - um tipo de software que é armazenado em um dispositivo eletrônico e que controla o funcionamento deste dispositivo.
- Linguagens de programação para MCU's - C, C++, Assembly, Python, Java Basic e Pascal.
- Bare Metal - programação de um sistema operacional instalado diretamente no hardware, sem camadas de software de gestão e hipervisores.
- HAL (Hardware Adstraction Layer) e LL (Low-Layer) APIs - O HAL é uma camada de software que permite a comunicação entre o software e o hardware, e o Low-Layer APIs são mais detalhadas e específicas do que as High-Level APIs, permitindo um controle mais granular.
- IDE: STM32CubeIDE
- Gravador: STM32CubeProg
- Servidor ST-LINK: ST-LINK server
- Núcleo Board: NUCLEO-L476RG, UM1724: STM32 Nucleo-64 boards (MB1136), Schematic MB1136-C05, Datasheet STM32L476xx.
- Upgrade St-Link:
-
Pratique em Dev-C++.
-
Board Selector: NUCLEO-L476RG
-
Compilar: Project>Build All
-
Debugger: Run>Debug As>1 STM32 Cortex-M C/C++ Application
-
Em Run>Debug Configurations, habilite em Debugger o recurso Serial Wire Viewr (SWV).
Ao entrar do modo Debugger vai em Window>Show View> SWV>SWV Data Trace Timerline Graph
Click em Configure trace e na aba inicializada deixe as seguinte opções:
-
Modelos de ST-Links: ST-LINK/V2 e STLINK-V3
-
Habilitando a geração dos arquivos Bin e Hex ao compilar:
Va em "Project>Properties>C/C++ Build>Settings", e deixe marcado as seguinte opções:
-
STM32 microcontroller system memory boot mode: AN2606
-
Para gravação do firmware via UART, use o FLASHER-STM32 ou o STM32CubeProg, e faça uma das conexão indicadas na tabela 152 do application note AN2606.
NOTA: Coloque o BOOT0 em nível logico alto para gravação do firmware.
-
Bootloader Customizado
-
Documentação: AN2867
-
Configurado em System Core>RCC:
-
Ociladores - Crytal X3
-
Ociladores - Crytal Externo
-
Documentação: AN4899
-
NOTA: Na seção "Output driving current" do datasheet, encontram-se as informações sobre a corrente máxima que os pinos de GPIO podem suportar, seja ao receber (sink) da carga conectada, ou ao fornecer (source) para ela.
-
Opções de configura:
-
Debounce é uma técnica que evita que um interruptor físico seja detectado múltiplas vezes quando pressionado ou liberado.
-
NOTA: Ao utilizar um botão, use um capacito (
$1uF$ ) em paralelo ao mesmo.
-
NOTA: Ao utilizar um botão, use um capacito (
-
Interrupção é uma funcionalidade que interrompe a tarefa atual do processador para processar um evento.
-
DMA - Visão Geral
O Direct Memory Access é um elemento lógico digital que permite a transferência de dados que pode ser usado em conjunto com o processador principal do mesmo chip. Uma de suas vantagens é que libera operações da CPU e a torna "livre". Outra característica é a otimização de transferência de dados aumentando a eficiência e velocidade no sistema.
- Modelos de Transferência de Dados:
- Mover dados de um periférico para um endereço de memória;
- Mover dados de um endereço de memória para um periférico;
- Mover dados de memória para memória.
- Modelos de Transferência de Dados:
16. Comunicação I2C
17. Comunicação SPI
-
Serial Peripheral Interface (SPI):
-
Alta velocidade (20MHz)
-
Modos de Operação: consistem em quatro combinações de Clock Polarity(CPOL) e Clock Phase (CPHA).
Modo CPOL CPHA Borda de Troca Transição Nível em IDLE 0 0 0 Subida Meio do bit 1 1 0 1 Decida Começo do bit 0 2 1 0 Decida Meio do bit 0 3 1 1 Subida Começo do bit 1 NOTA: Os modos 0 e 3 são os mais utilizados.
NOTA: O CPOL define o nível inicial do clock, sendo 0 para nível baixo e 1 para nível alto, enquanto o CPHA determina o momento da transição, sendo 0 para a transição no meio do bit, e 1 para a transição no início do bit.
-
Informações Complementares:
-
-
Componente que usam comunicação SPI: MCP4921, MCP3008, ADE9000.
18. FreeRTOS
É um tipo de sistema operacional destinado a execução de tarefas dentro de um determinado prazo de tempo (deadline). O principal propósito de FreeRTOS é a execução de mais tarefas (tasks) ao mesmo tempo.
-
Características:
- Gratuito (MIT Open Source License);
- Código Aberto;
- Integração no STM32CubeIDE, CMSIS-RTOS (Cortex Microcontroller Software Interface Standard)
-
Em que dispositivos é usado?
- MCUS de 8/16 bits -> Programação em Bare Matel;
- MCUS de 32 bits --> Programação em Bare Matel ou FreeRTOS;
- Processadores -> Sistema Operacional de Próposito Genérico (Windows, Linux, Android e etc).
-
Verifique se a opção
USE_PREEMPTION
está habilitada e observe o valor do deadline emTICK_RATE_HZ
.Após selecionar o modo, vá na aba
Tasks and Queues
do menu de configurações para criar, excluir ou editar as tarefas.NOTA: Ao usar o RTOS, é recomendado NÃO usar o
Systick
como o timebase source.
19. LCD 16x2
20. SdCard
21. TouchGF Designer
22. Nextion Display
O MODBUS é um protocolo de comunicação desenvolvido pela Modicon em 1979, cujo o principal propósito é estabelecer a comunicação de dados entre dispositivos, sendo altamente encontrado em equipamentos de automação e controladores lógicos programáveis.
-
Camada física :
- RS232-Serial: utilizado apenas em comunicações do tipo ponto a ponto (o mestre e 1 escravo), com velocidade máxima em torno de 115Kbps e a distância máxima entre os dispositivos em torno de 30m.
- RS485-Serial: muito utilizado na indústria e permite taxas de 12Mbps e em alguns casos até 50Mbps, com a distância máxima em torno de 1200m, com o máximo 32 dispositivos no barramento.
- Ethernet TCP/IP (Modbus TCP).
-
Topologia:
-
Modos de transmisão:
Os modos definem a forma como são transmitidos os bytes da mensagem, e como a informação da mensagem será empacotada na mensagem e descompactada. Não é possível utilizar os dois modos de transmissão na mesma rede. Na especificação do protocolo Modbus estão definidos os seguintes modos de transmissão: