Skip to content

Minhas anotações e atividades do treinamento do professor Gabriel Moreira Vigiano.

Notifications You must be signed in to change notification settings

mercedesDiniz/Curso-STM32

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Curso STM32

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.


Documentação e Ferramentas


Módulos

A família do Cortex tem três categorias principais:

  1. ARM Cortex-A (p/ processadores)
  2. ARM Cortex-R (p/ aplicações em tempo real)
  3. ARM Cortex-M (p/ microcontroladores)

Famílias Cortex

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.
  • Board Selector: NUCLEO-L476RG

  • Compilar: Project>Build All

  • Debugger: Run>Debug As>1 STM32 Cortex-M C/C++ Application

    Click em Apply e OK na janela de configuração do debugger. alt text

  • Debugger Serial:
    alt text

    Em Run>Debug Configurations, habilite em Debugger o recurso Serial Wire Viewr (SWV).

    alt text

    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: alt text

  • 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: alt text

  • STM32 M4 Clicker

  • STM32 microcontroller system memory boot mode: AN2606

alt text

  • 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. alt text

  • Cuidados com o Option Bytes: AN4758 e AN4701

  • Bootloader Customizado

    • Referencias: AN3155 e AN2606.
    • Terminal RS232: Termite
    • O baud rate deve está entre 1200 e 115200, e a paridade em even.

    Figura 1 - AN3155

    USART bootloader commands: Tabela 2 - AN3155

  • Documentação: AN2867

  • Configurado em System Core>RCC:

    alt text

  • Ociladores - Crytal X3

    • Valores de load capacitance:alt text

      NOTA: A capacitância de dispersão $C_S$ pode se estimado como $2pF$ ou $5pF$, o $C_L$ é fornecido pelo fabricante do crytal selecionado, e $C_{L1}$ e $C_{L2}$ são os valores dos capacitores C33 e C34.

      alt text

  • Ociladores - Crytal Externo

    • Pinos para conexão externa: alt text NOTA: Recomendado utilizar crytal de $16MHz$ ou $8MHz$ para projetos com HSE.
  • 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:

    • GPIO mode: alt text
  • 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.
  • 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.

    alt text

    • Modelos de Transferência de Dados:
      1. Mover dados de um periférico para um endereço de memória;
      2. Mover dados de um endereço de memória para um periférico;
      3. Mover dados de memória para memória.
  • Serial Peripheral Interface (SPI):

    • Alta velocidade (20MHz)

    • Conexões e Pinos: alt text

    • 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.

      alt text

      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:

      Artigo: Hardware - Interface SPI by Leonardo Ritter

      alt text alt text alt text

  • Componente que usam comunicação SPI: MCP4921, MCP3008, ADE9000.

É 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).
  • Configurando alt text

    Verifique se a opção USE_PREEMPTION está habilitada e observe o valor do deadline em TICK_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. alt text

    NOTA: Ao usar o RTOS, é recomendado NÃO usar o Systick como o timebase source.
    alt text

20. SdCard

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:

    • Modbus Serial: alt text

    • Modbus TCP: alt text

  • 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:

    • ASCII

      alt text

    • RTU (Remote Terminal Unit):
      alt text

    • TCP

      alt text


About

Minhas anotações e atividades do treinamento do professor Gabriel Moreira Vigiano.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages