Introdução às placas de desenvolvimento STM32H7

Índice

A hand carefully holds a small STM32H7 development board connected with colorful jumper wires, with other electronic components blurred in the background and the title "Getting Started with STM32H7 Development Boards" overlaid.

A série STM32H7 é uma potência no mundo dos microcontroladores. Conhecida por seu alto desempenho, é uma das favoritas entre os desenvolvedores.

Esses microcontroladores são projetados pela STMicroelectronics, líder na indústria de semicondutores. Eles oferecem velocidades de processamento impressionantes e recursos avançados.

As placas de desenvolvimento STM32H7 são perfeitas para projetos que exigem desempenho em tempo real e alto poder computacional. Elas atendem a uma ampla gama de aplicações.

Seja você um engenheiro ou um amador, as placas STM32H7 fornecem as ferramentas de que você precisa. Elas são versáteis e adaptáveis a vários requisitos de projeto.

Neste guia, exploraremos a série STM32H7 em detalhes. De recursos a programação, você aprenderá tudo o que precisa para começar.

O que é a série de microcontroladores STM32H7?

A série STM32H7 destaca-se como a melhor escolha para microcontroladores de alto desempenho. Estes chips possuem capacidades de processamento impressionantes, tornando-os a solução ideal para tarefas exigentes.

Equipados com o núcleo ARM Cortex-M7, eles podem atingir velocidades de até 480 MHz. Isso os torna ideais para aplicações que exigem grande poder computacional e eficiência.

Os principais atributos da série STM32H7 incluem:

  • Até 2 MB de memória Flash e 1 MB de RA
  • Opções avançadas de conectividade, como Ethernet, USB e CAN
  • Suporte para FreeRTOS e outros sistemas operacionais em tempo real
Close-up of an STM32H7 series microcontroller chip, black in color with silver pins and the STMicroelectronics logo.
A close-up view of an STM32H7 series microcontroller

Esses microcontroladores atendem a várias aplicações, incluindo automação industrial, eletrônicos de consumo e sistemas automotivos. Seu design robusto oferece confiabilidade a longo prazo, fundamental em muitos setores.

Com recursos de segurança robustos, os microcontroladores STM32H7 garantem a integridade e a segurança dos dados. Recursos como criptografia de hardware e inicialização segura os tornam adequados para aplicações seguras.

Em resumo, a série STM32H7 oferece versatilidade, desempenho e confiabilidade. É uma excelente escolha para desenvolvedores que desejam construir sistemas embarcados eficientes e seguros.

Placas de desenvolvimento STM32H7 populares

A série STM32H7 oferece uma variedade de placas de desenvolvimento, cada uma atendendo a diferentes requisitos de projeto. Essas placas vêm em vários formatos e configurações, tornando-as versáteis para inúmeras aplicações.

STM32H743ZI Placa central

Uma opção notável é a placa Nucleo STM32H743ZI. Ela é popular entre os desenvolvedores devido ao seu design fácil de usar e amplo suporte a periféricos. Essa placa é ideal para projetos de controle de motores e automação industrial. Sua compatibilidade com o ecossistema Arduino aumenta sua flexibilidade para prototipagem.

Top and bottom views of the STM32H743ZI Nucleo Board, showcasing its various pins, connectors, and integrated components
STM32H743ZI Nucleo Board, presented with both its top and bottom views

Kit de descoberta STM32H750B-DK

Outra placa popular é o kit STM32H750B-DK Discovery. Essa placa foi projetada para aplicações que exigem gráficos aprimorados e interfaces sensíveis ao toque. Ela possui um display LCD, tornando-a adequada para aplicações de interface homem-máquina (HMI).

Top and bottom views of the STM32H750B-DK Discovery kit, showing the integrated display on the top view and the densely populated mainboard on the bottom view.
STM32H750B-DK Discovery kit, displaying both the top view with its integrated display and the detailed bottom view of the development board

Kit de descoberta STM32H7S78-DK

O kit STM32H7S78-DK Discovery destaca-se como uma plataforma poderosa para aplicações de alto desempenho. Equipado com recursos gráficos avançados e uma tela de alta resolução, é perfeito para desenvolver interfaces de usuário sofisticadas e experiências multimídia ricas. Este kit também oferece opções de conectividade robustas e um conjunto abrangente de periféricos, tornando-o altamente versátil para projetos embarcados exigentes que requerem tanto poder de processamento quanto saída visual avançada.

Top and bottom views of the STM32H7S78-DK Discovery kit, featuring an integrated display on the top and complex circuitry on the bottom.
STM32H7S78-DK Discovery kit, showing both the top view with its embedded display and the comprehensive bottom view of the board

STM32H7 vs ESP32: Uma comparação detalhada

Ao escolher um microcontrolador, é fundamental comparar o STM32H7 e o ESP32. Ambos têm pontos fortes únicos e atendem a necessidades diferentes.

O STM32H7 se destaca por seu excepcional poder de processamento. Ele possui até 480 MHz, tornando-o adequado para cálculos intensivos. Em contrapartida, o ESP32 oferece um poder de processamento moderado, mas integra Wi-Fi e Bluetooth, tornando-o uma escolha popular para IoT.

Os desenvolvedores costumam escolher o STM32H7 por seu amplo suporte a periféricos e interfaces. Ele é ideal para aplicações que exigem vários protocolos de comunicação, como I2C, SPI e UART. Por outro lado, o ESP32 se destaca na conectividade sem fio. Seu Wi-Fi robusto e

Bluetooth são adequados para dispositivos inteligentes e automação residencial.

Aqui está uma comparação rápida dos recursos:

STM32H7

CPU: Arm Cortex-M7 (Single or Dual Core, up to 600 MHz)

RAM: Up to 1.4 MB SRAM, plus other RAM

Flash Memory: Up to 2 MB embedded Flash

Connectivity: Ethernet, USB, SPI, I2C, UART, CAN, etc.

Peripherals: ADC, DAC, Timers, PWM, RNG, LCD Controller, etc.

Power Consumption: As low as 32 µA in Stop mode, total current consumption as low as 4µA

Main Applications: High-performance industrial control, graphical interfaces, real-time processing, complex embedded systems

Ecosystem: Extensive STM32 ecosystem, including STM32CubeMX, HAL libraries, etc.

Price: Typically higher

ESP32

CPU: Xtensa LX6 Dual-Core (up to 240 MHz)

RAM: 520 KB SRAM

Flash Memory: 448 KB ROM (built-in), external Flash expandable

Connectivity: Wi-Fi (802.11 b/g/n), Bluetooth (v4.2 BR/EDR & BLE), SPI, I2S, I2C, UART, SD/SDIO, etc.

Peripherals: ADC, DAC, Touch Sensors, PWM, IR Remote, Pulse Counter, etc.

Power Consumption: Deep sleep current 5 µA

Main Applications: Internet of Things (IoT), wireless communication, smart home, low-power applications

Ecosystem: ESP-IDF, Arduino IDE, MicroPython, etc.

Price: Typically lower

Summary:

The **STM32H7** series are high-performance microcontrollers designed for applications requiring significant processing power, rich peripherals, and real-time capabilities, such as advanced industrial control, graphical user interfaces, and complex embedded systems. They generally feature more memory and higher clock frequencies.

The **ESP32** series, on the other hand, is a microcontroller with integrated Wi-Fi and Bluetooth, making it ideal for Internet of Things (IoT) applications, wireless communication, and scenarios requiring low-power connectivity. Its strengths lie in its wireless connectivity features and more accessible price point.

The choice between these microcontrollers depends on your specific project needs, including performance requirements, power budget, connectivity demands, and cost considerations.

Introdução à programação do STM32H7

Mergulhar na programação do STM32H7 pode ser emocionante e gratificante. Esta série oferece alto poder de processamento, tornando-a a favorita para aplicações complexas. Entender como programar esses microcontroladores é crucial para aproveitar todo o seu potencial.
O STM32CubeIDE é o principal ambiente de desenvolvimento para a programação do STM32H7. Ele fornece um conjunto integrado de ferramentas para codificação, depuração e implantação de aplicações. Este IDE suporta várias linguagens de programação, incluindo C e C++, atendendo às preferências de vários desenvolvedores.

O STM32H7 suporta vários sistemas operacionais em tempo real (RTOS), incluindo o FreeRTOS. Um RTOS permite que os desenvolvedores criem aplicações com tempo de controle preciso, crucial para sistemas em tempo real. A incorporação de um RTOS pode melhorar significativamente o desempenho de seus projetos STM32H7.

Para começar, siga estas etapas:

  • Instale o STM32CubeIDE: baixe e configure o IDE.
  • Configure o Toolchain: Configure compiladores e plugins necessários.
  • Aprenda o básico: explore a interface e os recursos do STM32CubeIDE.
  • Projetos de exemplo: comece com os modelos fornecidos para entender o fluxo de trabalho.
  • Explore as bibliotecas: utilize bibliotecas de middleware e periféricas.

Exemplo de programação - Piscar um LED

Neste caso, você aprenderá a configurar um projeto básico para fazer um LED piscar. Este "Hello World" fundamental da programação embarcada irá apresentá-lo ao controle GPIO (General Purpose Input/Output), ao ambiente de desenvolvimento STM32CubeIDE e às etapas essenciais de configuração, codificação, compilação e flash da sua placa STM32H7.

Ao final deste guia, você terá feito um LED piscar com sucesso em sua placa de desenvolvimento, estabelecendo uma base sólida para projetos mais complexos.

Requisitos de hardware

Antes de começarmos, certifique-se de que possui o seguinte hardware:

  • Placa de desenvolvimento STM32H7:

    • Qualquer kit de descoberta STM32H7 (por exemplo, STM32H750B-DK, STM32H7S78-DK)
    • Ou uma placa STM32H7 Nucleo (por exemplo, STM32H743ZI Nucleo)
    • (A maioria dessas placas tem pelo menos um LED programável pelo usuário integrado, normalmente conectado a um pino GPIO como PC13, PB0, PB1 ou PE1)

  • Cabo USB tipo A para micro-B/tipo C: para alimentar a placa e conectá-la ao computador para programação/depuração.

  • Computador pessoal: Com Windows, macOS ou Linux.

Requisitos de software

Você precisará ter os seguintes softwares instalados no seu computador:

  • STM32CubeIDE: Este é o Ambiente de Desenvolvimento Integrado oficial da STMicroelectronics, que inclui o compilador GCC, o depurador e a ferramenta de configuração gráfica STM32CubeMX. É gratuito e altamente recomendado.

Tutorial passo a passo

Parte 1: Configuração do projeto STM32CubeIDE
  1. Inicie o STM32CubeIDE: Abra o aplicativo. Se for a primeira vez, ele poderá solicitar um local para o espaço de trabalho. Escolha um diretório adequado.

STM32CubeIDE Launcher window prompting the user to select a directory as workspace.
Selecting the workspace directory for STM32CubeIDE before launching the IDE
  1. Criar um novo projeto STM32:

Vá para File > New > STM32 Project.

STM32CubeIDE menu showing "File > New > STM32 Project" option selected.
Navigating the STM32CubeIDE menu to create a new STM32 Project

Após o sistema inicializar o seletor de destino STM32, você pode especificar seu microcontrolador STM32H7 exato na janela "Seleção de destino".

STM32CubeIDE initializing the target microcontroller selector
STM32CubeIDE initializing the target microcontroller selector

Você pode usar a barra de pesquisa "Número da peça". Por exemplo:

        • Se você tiver um STM32H743ZI Nucleo, digite STM32H743ZI.
        • Se você tiver um STM32H750B-DK, digite STM32H750VB.
        • Se você tiver um STM32H7S78-DK, digite STM32H7S78.

Selecione seu dispositivo específico na lista e clique em Next.

STM32CubeIDE "Target Selection" window showing STM32H743ZI selected in the Part Number filter.
Selecting the STM32H743ZI microcontroller in the STM32CubeIDE target selection wizard
  1. Nome e configurações do projeto:
    • Nome do projeto: Insira um nome descritivo, por exemplo, H7_LED_Blink.
    • Tipo de projeto alvo: Deixe como Empty.
    • Clique Finish.
    • Se for solicitado para inicializar todos os periféricos com seu modo padrão, clique em Yes. Isso abrirá a interface de configuração do STM32CubeMX.
STM32CubeIDE "Setup STM32 project" window showing the Project Name "H7_LED_Blink".
Naming the new STM32 project "H7_LED_Blink" in STM32CubeIDE
Parte 2: Configuração do STM32CubeMX (dentro do STM32CubeIDE)

Depois que o projeto for criado, o .ioc arquivo (arquivo de configuração STM32CubeMX) será aberto. É aqui que você configura graficamente seu microcontrolador.

  1. Pinagem e configuração:

    • Identifique o pino do LED: Consulte o manual do usuário da placa de desenvolvimento para descobrir a qual pino GPIO o LED do usuário integrado está conectado. Os pinos comuns incluem PC13 (para placas Nucleo-144), PB0, PB1ou PE1.

    • Configure o pino GPIO:

      • Encontre o pino identificado no diagrama do chip ou na "Visualização da pinagem" (por exemplo, PC13).

      • Clique com o botão esquerdo do mouse no pino e selecione GPIO_Output. O pino ficará verde, indicando que está configurado como saída.

      • Opcional – Etiqueta do usuário: É uma boa prática etiquetar seus pinos. Você pode clicar com o botão direito do mouse no pino e selecionar Enter User Label. Digite Onboard_LED (ou um nome descritivo semelhante).

STM32CubeIDE Pinout & Configuration tab showing PC13 pin selected on the chip diagram with "GPIO_Output" option in a context menu.
Configuring pin PC13 as a GPIO Output on the STM32H7 microcontroller in STM32CubeIDE
    • Configurar as definições GPIO:
      • Na guia "Pinagem e configuração", expanda System Core > GPIO.
      • Encontre a linha correspondente ao pino LED configurado (por exemplo, PC13).
      • Na coluna "Nível de saída GPIO", defina-o como Low. (Queremos que o LED comece desligado).
      • Certifique-se de que "Modo GPIO" esteja Output Push Pull.
      • Deixe as outras configurações (Pull-up/Pull-down, Velocidade máxima de saída) como padrão para este exemplo básico.
STM32CubeIDE Pinout & Configuration tab showing GPIO settings for PC13, including "GPIO output level" set to "Low"
Setting the GPIO output level for PC13 to "Low" in STM32CubeIDE
  1. Núcleo do sistema -> Configuração SYS:
    • Na guia "Pinagem e configuração", expanda System Core > SYS.
    • Em "Configuração", defina a Debug opção para Serial Wire. Isso é crucial para depuração e atualização.
  1. Configuração do relógio:
    • Vá para a Clock Configuration .
    • Para um simples piscar de LED, as configurações padrão do relógio geradas pelo CubeIDE geralmente são suficientes. Normalmente, não são necessárias alterações aqui, a menos que você precise de velocidades de relógio muito específicas.
  1. Gerente de projeto e geração de código:
    • Vá para a Project Manager guia.
    • Verifique o Project Name e Toolchain/IDE (deve ser STM32CubeIDE).
    • Gerar código: Clique no Generate Code (o ícone de engrenagem ou Project > Generate Code).
    • Se for solicitado para salvar as alterações, clique em Yes.
    • Esta ação irá gerar todo o código de inicialização necessário para o seu projeto com base na sua configuração CubeMX.
STM32CubeIDE project configuration window showing the "Project Manager" tab with project settings.
Viewing project settings under the "Project Manager" tab in STM32CubeIDE
Parte 3: Implementação do código

Agora que a estrutura básica do projeto e as configurações periféricas estão definidas, vamos escrever a lógica de piscar.

  1. Navegue até main.c:

    • No painel Project Explorer (lado esquerdo do STM32CubeIDE), navegue até: H7_LED_Blink (nome do seu projeto) > Core > Src > main.c

    • Clique duas vezes main.c para abri-lo no editor.

  2. Localize o loop while(1):

    • Role para baixo em main.c até encontrar o /* USER CODE BEGIN 3 */ e /* USER CODE END 3 */ comentários dentro do while(1) loop. É aqui que você adicionará o código do seu aplicativo.

  3. Adicione a lógica de piscar:

    • Dentro do while(1) loop, adicione as duas linhas de código a seguir:

				
					/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(Onboard_LED_GPIO_Port, Onboard_LED_Pin); // Toggle the LED state
HAL_Delay(500); // Wait for 500 milliseconds (0.5 seconds)
/* USER CODE END 3 */
				
			

Explicação do código:

  • HAL_GPIO_TogglePin(): Esta é uma função da biblioteca STM32Cube HAL (Hardware Abstraction Layer). Ela altera o estado do pino GPIO especificado de alto para baixo ou de baixo para alto.

    • Onboard_LED_GPIO_Port: Esta é uma macro gerada automaticamente pelo CubeMX, representando a porta GPIO (por exemplo, GPIOC se o seu LED estiver no PC13).

    • Onboard_LED_Pin: Esta é uma macro gerada automaticamente pelo CubeMX, representando o número específico do pino (por exemplo, GPIO_PIN_13 se o seu LED estiver no PC13).

  • HAL_Delay(500): Esta função HAL cria um atraso de bloqueio pelo número especificado de milissegundos. Aqui, ela pausa a execução por 500 ms (meio segundo).

Parte 4: Compilar, gravar e verificar

Por fim, vamos compilar o seu código, carregá-lo na placa e ver o LED piscar!

  1. Conecte sua placa:

    • Conecte uma extremidade do cabo USB na porta USB apropriada da placa de desenvolvimento STM32H7 (geralmente identificada como "USB ST-LINK" ou "USB USER").

    • Conecte a outra extremidade em uma porta USB do seu computador. Seu computador deve reconhecer a placa.

  2. Compile o projeto:

    • Vá para Project > Build Project ou clique no ícone do martelo na barra de ferramentas.

    • Verifique se há erros ou avisos na visualização "Console". Uma compilação bem-sucedida exibirá "Build Finished" (Compilação concluída) e indicará que não há erros.

  3. Grave o programa na placa:

    • Vá para Run > Debug ou clique no ícone Debug (um inseto verde).

    • O STM32CubeIDE configurará automaticamente as definições do depurador (ST-LINK).

    • Clique OK ou Switch se solicitado para alternar para a perspectiva Depuração.

    • O programa será compilado (se ainda não estiver), baixado para a memória flash da placa STM32H7 e o depurador será iniciado.

  4. Observe o LED piscando:

    • Quando o piscar terminar e o programa começar a ser executado, você deverá ver o LED do usuário na placa de desenvolvimento STM32H7 começar a piscar, com um intervalo de meio segundo.

  5. Sair da depuração:

    • Para parar o depurador e deixar o programa rodar livremente, clique no botão vermelho quadrado "Terminate" na perspectiva Debug e, em seguida, clique no botão "Run" (play verde). Como alternativa, basta desconectar o cabo USB e reconectá-lo (o programa já está na memória flash).

    • Para voltar à perspectiva C/C++, clique em Window > Perspective > Open Perspective > C/C++.

Parte 5: Conclusão e próximos passos

Parabéns! Você concluiu com sucesso seu primeiro projeto de programação embarcada STM32H7. Você aprendeu como:

  • Criar um novo projeto no STM32CubeIDE.

  • Configurar pinos GPIO usando o STM32CubeMX.

  • Escrever código C básico usando funções HAL.

  • Compilar, gravar e executar seu programa na placa STM32H7.

Próximos passos:

  • Experimente com o atraso: altere o HAL_Delay() valor para fazer o LED piscar mais rápido ou mais lento.

  • Controle vários LEDs: Configure outro pino GPIO como saída e faça vários LEDs piscarem simultaneamente ou em sequência.

  • Entrada de botão: Configure um pino GPIO como entrada para ler o estado de um botão do usuário e controlar o LED com base nos pressionamentos do botão.

  • Explore mais periféricos: Pesquise o uso de UART para comunicação serial, temporizadores para temporização precisa ou ADC para leituras analógicas.

A programação do STM32H7 se beneficia de extensas bibliotecas e middleware fornecidos pela STMicroelectronics. Esses recursos simplificam o processo de adicionar funcionalidades complexas às suas aplicações. Com um suporte robusto da comunidade e documentação detalhada, começar a programar com o STM32H7 é fácil e viável.

Ferramentas e software essenciais para o desenvolvimento do STM32H7

Para iniciar o desenvolvimento do STM32H7, é necessário um conjunto de ferramentas e softwares essenciais. Esses recursos garantem um fluxo de trabalho eficiente e um gerenciamento abrangente do projeto. A escolha das ferramentas certas melhora significativamente o processo de desenvolvimento.

O primeiro passo envolve a seleção de um Ambiente de Desenvolvimento Integrado (IDE) compatível. O STM32CubeIDE é ideal para a programação do STM32H7. Ele integra várias funções, oferecendo recursos de codificação, compilação e depuração em uma única plataforma. Essa conveniência é incomparável para os desenvolvedores.

Além do STM32CubeIDE, considere usar o STM32CubeMX. Essa ferramenta gráfica simplifica a configuração das definições do microcontrolador. Ela permite o gerenciamento fácil de periféricos e configurações de pinos, simplificando a fase de configuração do seu projeto.

Aqui está uma lista de ferramentas essenciais para o desenvolvimento do STM32H7:

  • STM32CubeIDE: Ambiente de desenvolvimento abrangente.
  • STM32CubeMX: Simplifica a configuração de periféricos.
  • Ferramentas de depuração/programação: ST-LINK/V2 para depuração no chip.
  • Bibliotecas e middleware: aprimoram a funcionalidade do aplicativo.

O ST-LINK/V2 é crucial para a depuração e programação em circuito. Ele permite que os desenvolvedores conectem perfeitamente suas placas de desenvolvimento STM32H7 a computadores, fornecendo informações detalhadas e controle durante o troubleshooting. A utilização dessas ferramentas garante que seu desenvolvimento STM32H7 seja eficaz e agradável.

Conclusão

A série STM32H7 oferece desempenho e versatilidade incomparáveis. É uma escolha sólida para projetos que exigem poder de processamento robusto e controle preciso. Com seu conjunto de recursos, ela atende a vários setores e aplicações.

Antes de selecionar o STM32H7, avalie os requisitos específicos do seu projeto. Considere fatores como velocidade de processamento, conectividade e orçamento. Se alto desempenho e recursos avançados forem fundamentais, o STM32H7 provavelmente será adequado para atender às suas necessidades.

Inscreva-se

Inscreva-se na nossa lista de assinantes para receber atualizações mensais do blog, notícias sobre tecnologia e estudos de caso. Nunca enviaremos spam e você pode cancelar a assinatura a qualquer momento.

Sobre o autor

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Precisa de ajuda?

Rolar para cima

Instant Quote