Microcontrôleur STM32F407 : caractéristiques, spécifications, projet de développement

Dans le domaine des systèmes embarqués, les microcontrôleurs, en tant que composants clés, jouent un rôle important dans des scénarios tels que le contrôle automatique, l'Internet des objets et les applications industrielles. Le STM32F407 lancé par la société ST est un microcontrôleur 32 bits haute performance et basse consommation qui a attiré l'attention du marché en raison de ses excellentes fonctionnalités et de sa facilité d'utilisation. Dans cet article, nous allons nous intéresser de plus près aux caractéristiques, aux spécifications, aux domaines d'application et à l'environnement de développement du STM32F407.

À propos du STM32F407

La série de puces STM32F407 est un microcontrôleur haute performance lancé par STMicroelectronics et basé sur le cœur ARM Cortex™-M4. Elle utilise un processus NVM de 90 nanomètres et la technologie ART (Adaptive Real-Time Memory Accelerator™).

Caractéristiques du STM32F407

Le STM32F407 est basé sur le cœur ARM Cortex-M4, dispose d'instructions DSP et d'une unité à virgule flottante (FPU), et offre une fréquence d'horloge pouvant atteindre 168 MHz. Voici ses principales caractéristiques :

  • Haute performance

Équipé d'un cœur Cortex-M4 32 bits, qui prend en charge les opérations en virgule flottante et offre une faible latence de cycle d'horloge, il offre des capacités de calcul à grande vitesse.

  • Faible consommation

La technologie d'ajustement dynamique de la tension est utilisée pour basculer entre différents modes de consommation d'énergie et réduire la consommation énergétique du système.

  • Configurations de stockage multiples

Jusqu'à 1 Mo de mémoire Flash et 192 Ko de RAM pour répondre aux besoins en espace de stockage de diverses applications.

  • Prise en charge périphérique puissante

Le STM32F407 dispose de nombreuses interfaces de communication, telles que SPI, I2C, UART, etc. Il prend en charge jusqu'à 3 convertisseurs ADC 12 bits, 2 convertisseurs DAC et des temporisateurs haute résolution.

  • Sécurité et fiabilité

Le module CRC matériel intégré offre une fonction de détection des erreurs de somme de contrôle en temps réel ; le temporisateur Watchdog peut surveiller l'état de fonctionnement du système et empêcher les blocages logiciels.

Spécifications STM32F407

SpecificationDetails
MCU ModelSTM32F407ZGT6
Flash Memory1MB
Clock FrequencyUp to 168MHz
ADCThree 12-bit
DACTwo 12-bit
DMATwo DMA controllers
TimersUp to 17 timers
GPIOUp to 120 configurable GPIO pins
InterfacesBuilt-in I2C, SPI, USART, I2S, CAN, and SDIO communication interfaces

Application du STM32F407

Grâce à sa flexibilité et à sa facilité d'évolutivité, le STM32F407 est largement utilisé dans divers scénarios intelligents, notamment, mais sans s'y limiter :

  • Appareils connectés à l'Internet des objets (IoT)

La faible consommation d'énergie du STM32F407 le rend idéal comme unité centrale de traitement pour les appareils IoT tels que les capteurs et les contrôleurs.

  • Automatisation industrielle

Dans des domaines tels que les machines-outils CNC et les robots industriels, le STM32F407 peut être chargé du contrôle du système, de l'acquisition et du traitement des données, ainsi que de la communication avec les périphériques.

  • Électronique grand public

Le STM32F407 peut être utilisé dans les domaines de l'électronique grand public tels que les maisons intelligentes et les appareils portables afin de répondre aux exigences des consommateurs en matière de performances et de consommation d'énergie.

Ressources de développement STM32F407

Pour faciliter le travail des développeurs, ST fournit une multitude de ressources de développement et d'outils d'assistance, notamment :

  • Cartes de développement des séries Discovery et Nucleo
  • Environnements de développement intégrés (IDE) tels que Keil uVision et IAR
  • Débogueurs JLINK, CMSIS-DAP, ULINK ou STLINK
  • Kit de développement logiciel STM32CubeF4 basé sur la bibliothèque HAL/HLL

Ces ressources contribuent à simplifier le processus de développement, à raccourcir le cycle de développement et permettent aux développeurs d'obtenir une assistance technique, de partager leurs expériences et d'accéder à des ressources d'apprentissage.

Bibliothèque HAL

La bibliothèque HAL (Hardware Abstraction Layer) est en fait le package de pilotes périphériques du STM32F407. Le fichier de code se trouve dans le chemin d'accès suivant : \Drivers\STM32F4xx_HAL_Driver.

An Example of STM32F4xx HAL Library
An Example of STM32F4xx HAL Library

CMSIS

CMSIS (Cortex Microcontroller Software Interface Standard) est un ensemble de pilotes officiellement conçu par ARM. Le schéma fonctionnel est le suivant :

Overview
Structure CMSIS (Crédit image : Keil)

Avec ce progiciel CMSIS, ARM devrait unifier les pilotes périphériques, le traitement numérique du signal DSP, les téléchargeurs et les API de divers RTOS courants provenant de différents fabricants de puces.

STM32CubeMX est un logiciel de développement graphique lancé par ST en 2014 afin de faciliter la configuration des horloges, des périphériques, des broches, des RTOS et divers middlewares par les utilisateurs. Le schéma fonctionnel est le suivant :

Open the STM32CubeMX

Grâce à ce logiciel graphique, vous pouvez facilement générer du code d'ingénierie et prendre en charge des compilateurs tels que MDK, IAR et TrueSTUDIO.

Projet de carte de développement STM32F407

Dans cette expérience de développement, nous utilisons la bibliothèque HAL pour allumer une LED ou faire clignoter une LED.

Étape 1 : Ouvrez STM32CubeMX, trouvez la broche correspondant à la LED et configurez-la comme sortie GPIO.

Configure LED's pin as GPIO output in STM32CubeMX
Configure LED's pin as GPIO output in STM32CubeMX

Étape 2 : Sélectionnez Serial Wire dans SYS. Ce n'est que si cette option est sélectionnée que les projets suivants pourront être gravés normalement à l'aide de st-link.

Select Serial Wire Debug in SYS Mode and Configuration
Select Serial Wire Debug in SYS Mode and Configuration

Étape 3 : Allumez l'horloge externe et activez-la pour atteindre la fréquence maximale de 407 168 MHz.

Select High Speed Clock (HSE) in RCC Mode and Configuration
Select High Speed Clock (HSE) in RCC Mode and Configuration

Étape 4 : Générer le code d'ingénierie.

Generate Code for STM32F407 Project in STM32CubeMX
Generate Code for STM32F407 Project in STM32CubeMX

Le code généré est présenté ci-dessous, et les configurations des broches et de l'horloge sont toutes configurées.

				
					void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct= {0}:

/*GPIO Ports Clock Enable */
_ _HAL_RCC_GPIOF_CLK_ENABLE():
_ _HAL_RCC GPIOH_CLK_ENABLE():
_ _HAL RCC GPIOA CLK_ENABLE():

/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET):
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET):

/*Configure GPIO pins:PF9 PF10 */
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10:
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP:
GPIO_InitStruct.Pul1 =GPIO_NOPULL:
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW:
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct):

/*EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI2_IRQn, 0, 0):
HAL NVIC_EnableIRQ(EXTI2_IRQn):
HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0):
HAL_NVIC_EnableIRQ(EXTI3_IRQn):
HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0):
HAL_NVIC_EnableIRQ(EXTI4_IRQn):

}
				
			

Écrivez ensuite le programme permettant de contrôler la lumière LED dans while(1) de la fonction principale.

				
					while (1)
{
/* USER CODE END WHILE */

//Light up the LED
//HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10|GPIO_PIN_9, GPIO_PIN_RESET);

{
//LED flashes
HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_9|GPIO_PIN_10);
HAL_Delay(1000);
}
/* USER CODE BEGIN 3 */
}
				
			

Part à:

Retour en haut

Instant Quote