STM32F4DISCOVERY (kit Discovery STM32F407VGT6)

STMicroelectronicsMCU 8-32 bitarduino

⚡ L’essentiel en 60 secondes

La carte STM32F4DISCOVERY, souvent désignée par le code de commande STM32F4DISCOVERY, est une carte de développement emblématique produite par STMicroelectronics. Elle s'inscrit dans la gamme des kits « Discovery » destinés à explorer les capacités des microcontrôleurs de la série STM32F4. Cette carte a été lancée peu après l'annonce de la série F4 par STMicroelectronics en septembre 2011, arrivant sur le marché au début de l'année 2012. Bien que ce modèle soit désormais officiellement considéré comme obsolète ou en fin de vie par le fabricant, il reste extrêmement populaire dans le milieu éducatif, les ateliers de fabrication numérique et le marché de l'occasion en raison de sa richesse fonctionnelle et de la maturité de son écosystème logiciel. La carte est centrée autour du microcontrôleur STM32F407VGT6, un circuit intégré puissant qui a marqué un tournant dans la performance des microcontrôleurs grand public.

Le cœur de cette carte est le microcontrôleur STM32F407VGT6, qui intègre un processeur ARM Cortex-M4F cadencé à une fréquence maximale de 168 MHz. Pour comprendre l'intérêt de cette fréquence, il faut savoir que le nombre de cycles d'horloge par seconde détermine la vitesse d'exécution des instructions ; 168 millions de cycles par seconde offrent une réactivité élevée pour des tâches complexes comme le traitement du signal ou les interfaces graphiques simples. Le suffixe « F » dans Cortex-M4F indique la présence d'une unité de calcul à virgule flottante (FPU), permettant d'effectuer des opérations mathématiques précises (comme des calculs trigonométriques ou des filtres audio) beaucoup plus rapidement qu'un processeur sans cette unité. En termes de mémoire, ce microcontrôleur dispose de 1024 Ko (soit 1 Mo) de mémoire flash pour stocker le programme, et de 192 Ko de mémoire vive SRAM, dont 64 Ko sont couplés directement au cœur du processeur pour accélérer les accès aux données critiques, ainsi que 4 Ko de mémoire sauvegardée par batterie pour conserver des paramètrès sensibles même lorsque la carte est éteinte.

L'une des caractéristiques distinctives de la STM32F4DISCOVERY est son orientation vers les applications audio, comme le souligne STMicroelectronics en indiquant qu'elle permet de « développer des applications audio facilement ». La carte intègre en effet un convertisseur numérique-analogique (DAC) CS43L22 qui possède un amplificateur de classe D intégré pour piloter directement un petit haut-parleur, ainsi qu'un microphone numérique omnidirectionnel MP45DT02. Cette configuration permet aux utilisateurs de créer des systèmes de lecture et d'enregistrement audio sans avoir besoin de composants externes supplémentaires. La carte est également équipée d'un accéléromètre MEMS à trois axes, qui permet de détecter le mouvement, les chocs ou l'orientation de la carte. Il est important de noter que selon les révisions matérielles de la carte, cet accéléromètre peut être un modèle LIS302DL ou LIS3DSH. Les logiciels officiels de STMicroelectronics sont capables de détecter automatiquement quel composant est présent, mais les développeurs écrivant leur propre code doivent être vigilants à cette variation matérielle pour éviter que leur programme ne fonctionne pas sur certaines versions de la carte.

Pour l'interaction humaine, la carte dispose de quatre LED colorées (verte, orange, rouge et bleue) connectées aux broches du microcontrôleur, ainsi que d'un bouton utilisateur et d'un bouton de réinitialisation. Contrairement à d'autres kits de la gamme Discovery, cette carte ne possède pas de joystick. L'alimentation est flexible : elle peut être fournie via le port USB ou par une source externe variant de 3,3 V à 12 V. La connectivité est assurée par deux ports USB. Le premier est dédié au débogueur intégré ST-LINK/V2-A, qui permet de programmer la carte et de déboguer le code depuis un ordinateur sans avoir besoin d'acheter un outil de programmation séparé. Le second port est un port USB OTG (On-The-Go) de type micro-AB, qui permet à la carte de se comporter soit comme un périphérique (par exemple, une clé USB ou un clavier), soit comme un hôte (pour lire une clé USB), offrant ainsi une grande polyvalence pour les projets d'interfaçage.

La carte expose la quasi-totalité des broches d'entrée/sortie (GPIO) du microcontrôleur sur deux connecteurs d'extension. Cela signifie que les utilisateurs peuvent connecter des capteurs, des actionneurs ou d'autres modules externes directement sur la carte. Les GPIO sont des broches numériques et analogiques configurables par logiciel, permettant de lire des capteurs ou de commander des moteurs. La tension de fonctionnement de ces broches est de 3,3 volts, une norme courante en électronique numérique moderne, bien que la plupart des broches tolèrent des signaux de 5 volts. Le microcontrôleur intègre également de nombreuses interfaces de communication telles que l'I2C, le SPI, l'UART (série), le CAN (utilisé dans l'automobile) et un contrôleur Ethernet MAC. Cependant, il est crucial de noter que si le contrôleur Ethernet est présent dans la puce, la carte ne possède pas le connecteur physique ni la puce PHY nécessaire pour se connecter à un réseau filaire standard sans ajout de matériel externe.

Sur le plan logiciel, la STM32F4DISCOVERY bénéficie d'un soutien exceptionnel. Elle est prise en charge par l'ensemble de l'écosystème STMicroelectronics, notamment via le logiciel STM32CubeIDE et le paquet de firmware STM32CubeF4, qui fournit des pilotes prêts à l'emploi pour tous les composants de la carte. Au-delà des outils officiels, la carte est largement supportée par des environnements de développement populaires et gratuits. Les développeurs peuvent utiliser l'environnement Arduino via le noyau STM32duino, ce qui permet d'écrire du code simple et accessible. Le système d'exploitation temps réel Zephyr RTOS propose également un support natif pour cette carte, facilitant le développement d'applications complexes nécessitant une gestion rigoureuse des tâches. MicroPython, qui permet de programmer la carte avec le langage Python, est également disponible, offrant une alternative rapide pour le prototypage. Enfin, des supports existent pour des langages plus avancés comme le Rust, ainsi que pour des systèmes d'exploitation temps réel comme ChibiOS ou FreeRTOS.

Il existe quelques pièges techniques à connaître pour une utilisation optimale. Par exemple, le port série virtuel (VCP) du débogueur ST-LINK n'est pas toujours relié directement aux broches série du microcontrôleur sur toutes les révisions de la carte, ce qui peut nécessiter l'utilisation d'un câble série externe ou la vérification des ponts de soudure pour obtenir une sortie de console sur l'ordinateur. De plus, certaines broches sont partagées entre plusieurs fonctions, comme la broche PA0 qui sert à la fois au bouton utilisateur et à des fonctions série, ou la broche PB6 qui est utilisée par l'audio, rendant l'usage simultané de certaines interfaces impossible sans modifications matérielles. Enfin, bien que la carte soit robuste, les utilisateurs doivent consulter les feuilles d'errata du microcontrôleur STM32F407 pour connaître les éventuels défauts matériels connus de la puce, car la carte elle-même n'est plus mise à jour matériellement. Malgré ces nuances, la STM32F4DISCOVERY demeure une référence pédagogique solide pour apprendre l'électronique embarquée, le traitement du signal et la programmation de microcontrôleurs performants.

Forum (1 sujet) →

AttrSpecsvérifié
cpuARM Cortex-M4 (single core), FPU (single-precision), up to 168 MHz, ~210 DMIPS class (F4 series is ST's "high-performance" Cortex-M4F line per Wikipedia STM32 series table).? non vérifié
memory1 MB (1024 KB) flash; 192 KB SRAM including 64 KB core-coupled memory (CCM) plus 4 KB battery-backed RAM (Zephyr: "192+4 KB SRAM including 64-Kbyte of core coupled memory"; Wikipedia board entry: "1024 KB flash, 192 KB RAM, 4 KB battery-backed").? non vérifié
gpunone (2D-only DMA2D Chrom-GFX ART accelerator on some F4 parts; the F407 has the ART accelerator, no GPU, no display controller on this board).? non vérifié
on_chip_peripherals_f407_per_zephyr_board_doc_feature_list3× 12-bit ADC (24 channels), 2× 12-bit DAC, RTC, advanced-control timer + 17 general-purpose timers, 2× watchdog, 6× USART/UART, 3× I2C, 3× SPI, SDIO, 2× CAN, USB 2.0 OTG FS (on-chip PHY), USB 2.0 OTG HS/FS with DMA + full-speed PHY + ULPI, 10/100 Ethernet MAC (MAC only — no PHY/RMII connector is fitted on this board), 8- to 14-bit parallel camera interface, CRC unit, true RNG, DMA controllers.? non vérifié
gpio_expansionLQFP100 package; two extension headers expose essentially all LQFP100 I/Os ("Extension header for all LQFP100 I/Os", Zephyr). Arduino core variant exposes 79 digital pins, 16 analog inputs for this board (variant_DISCO_F407VG.h). I/O voltage: VDD 1.8–3.6 V (Zephyr); GPIOs are 3.3 V, 5 V-tolerant on most pins per the F407 datasheet.? non vérifié
on_board_i_o- 4 user LEDs on PD12–PD15: green (LD4/PD12), orange (LD3/PD13), red (LD5/PD14), blue (LD6/PD15) — pin map from ST BSP stm32f4_discovery.h (LED4=PD12, LED3=PD13, LED5=PD14, LED6=PD15); colors cross-checked between Zephyr doc and MicroPython STM32F4DISC/mpconfigboard.h. Plus LD1 (USB), LD2 (3.3 V PWR), LD7/LD8 (OTG VBUS/over-current) — 8 LEDs total (Zephyr). - Buttons: USER (PA0, also WKUP) and RESET (Zephyr; ST BSP KEY_BUTTON_PIN = GPIO_PIN_0 / GPIOA). There is no joystick on this board (that's other Discovery kits). - Audio: CS43L22 audio DAC with integrated class D speaker driver (ST product page; BSP checks CS43L22_ID on I2C1, device address 0x94, reset pin PD4) + MP45DT02 omni-directional PDM digital microphone (Zephyr; BSP records via I2S2 + PDM filter), headphone jack, speaker connector. - MEMS: LIS302DL or LIS3DSH 3-axis accelerometer on SPI1 (SCK PA5 / MISO PA6 / MOSI PA7, CS PE3, INT PE0/PE1) — ST BSP stm32f4_discovery_accelerometer.c.? non vérifié
usbST-LINK/V2-A debugger connector + USB OTG FS micro-AB connector (ST product page: "USB OTG Micro-AB connector"; Zephyr: "USB OTG FS with micro-AB connector"; OTG FS pins PA11/PA12, VBUS detect PA9, ID PA10 per MicroPython/Arduino variant files).? non vérifié
powerflexible supply — USB VBUS or external 3.3 V / 5 V / 7–12 V, with power-management access point (Zephyr board doc).? non vérifié
typical_consumption_temperature? non vérifié
  • Fabricant : STMicroelectronics.
  • Produit : carte d'évaluation/discovery haute performance STM32F4DISCOVERY, décrite par ST comme exploitant "the capabilities of the STM32F407 high-performance microcontrollers, to allow users to develop audio applications easily" (page produit ST, consultée le 2026-10-13).
  • MCU embarqué : STM32F407VGT6, ARM Cortex-M4F @ 168 MHz, flash 1024 Ko, RAM 192 Ko + RAM 4 Ko sauvegardée par batterie, LQFP100 (Wikipedia "STM32", section Discovery boards ; documentation des cartes Zephyr).
  • Lancement : la série STM32F4 (Cortex-M4F) a été annoncée par ST en septembre 2011 (tableau historique STM32 de Wikipedia) ; la carte F4DISCOVERY elle-même est sortie peu après, début 2012.
  • Statut : obsolète / fin de vie. La section Discovery boards de Wikipedia qualifie explicitement la carte STM32F4DISCOVERY d'« (obsolete) » (consultée le 2026-10-13) ; la page produit ST est toujours en ligne mais la carte a été remplacée par les cartes Nucleo-F4xx et des kits Discovery plus récents. Elle reste largement disponible sur le marché de l'occasion et est toujours entièrement prise en charge par CubeF4, Zephyr, stm32duino, MicroPython et OpenOCD.
  • Variantes / révisions de carte : plusieurs révisions matérielles ont existé au cours de la vie du produit ; l'accéléromètre MEMS embarqué diffère selon la révision (LIS302DL sur les premières cartes, LIS3DSH sur les suivantes — le BSP de ST auto-détecte les deux en lisant l'ID de puce, voir stm32f4discovery-bsp). La page produit ST actuelle décrit « one MEMS digital accelerometer » (au singulier).
  • Cartes apparentées de la même famille : STM32F401CDISCOVERY (F401VC), STM32F411E-DISCOVERY, STM32F412G-DISCOVERY, STM32F413H-DISCOVERY, STM32F429I-DISCOVERY, STM32F469I-DISCOVERY (toutes listées dans la liste des cartes du README de STM32CubeF4). Note : l'IMU 6 axes LSM330 que certaines sources associent à « F4 Discovery » se trouve sur les kits Discovery F401/F411, pas sur l'original STM32F4DISCOVERY.

+ Points forts

  • Discovery audio-first : DAC CS43L22 + amplificateur haut-parleur classe D + micro PDM MP45DT02 + prise casque sur une carte de classe < 20 $ — l'argument de ST était "develop audio applications easily" (page produit ST). BSP complet d'enregistrement/lecture avec I2S3 (lecture) / I2S2 (capture PDM) dans CubeF4.
  • ST-LINK/V2-A embarqué débogueur/programmeur avec connecteur SWD — aucun sonde externe nécessaire (page produit ST ; Zephyr).
  • Cortex-M4F @ 168 MHz avec FPU + instructions DSP : le vaisseau amiral de la performance de la gamme M4 de ST ; 1 Mo de flash en ont fait une carte durable pour l'enseignement et les hackathons.
  • Accéléromètre MEMS avec interruption click/tap (LIS302DL/LIS3DSH sur SPI1, INT sur PE0/PE1) — utilisé dans les démos "Accelerometer" de ST.
  • Double USB : port ST-LINK dédié plus un vrai port périphérique/hôte USB OTG FS micro-AB (démos de classes périphérique, hôte mass-storage, etc.).
  • Silicium riche exposé sur connecteurs : CAN ×2, MAC Ethernet (au niveau de la puce), interface caméra parallèle, SDIO, DAC ×2 — utile pour des expériences sur breakout, même si la carte n'expose ni PHY, ni connecteur SD, ni prise pour eux.
  • Densité de l'écosystème : BSP + exemples officiels dans CubeF4, Zephyr, mbed (héritage), core Arduino, MicroPython, configs OpenOCD à la libopencm3 — sans doute la carte de développement la plus soutenue logiciel de la décennie 2012.

− Points faibles

  • Le VCP du ST-LINK n'est pas câblé au USART du MCU sur les cartes d'origine. Doc de carte Zephyr : "Please note that ST-Link Virtual Com Port is not wired to chip serial port. In order to enable console output you should use a serial cable and connect it to UART2 pins (PA2/PA3)." Noter la contradiction : le fichier variant_DISCO_F407VG.h du core Arduino étiquette USART2 (PA2/PA3) comme "Connected to ST-Link" — sur beaucoup de révisions de la carte, les jumpers VCP-vers-USART2 (zone CN3/CN5) doivent être vérifiés/activés, et certaines révisions n'ont tout simplement pas le câblage. Vérifier sur votre révision spécifique avant de compter sur Serial via le port USB du ST-LINK.
  • La référence de l'accéléromètre varie selon la révision de carte (LIS302DL vs LIS3DSH, tous deux sur SPI1). Le code doit auto-détecter via l'ID de puce comme le fait le BSP de ST, ou lire le marquage ; un code naïf à pilote unique échoue silencieusement sur l'autre révision. (BSP ST stm32f4_discovery_accelerometer.c.)
  • UART1 est inutilisable sans modification de la carte : ses broches alternatives sont PB6/PB7, et PB6 est relié au SCL I2C du codec audio (commentaire de mpconfigboard.h de MicroPython : "Without board modifications, this makes UART1 unusable on this board").
  • Conflits sur PA0 : le bouton USER partage PA0 avec UART4 TX/CTS et WKUP ; MicroPython note qu'il faut retirer SB20 (face arrière de la carte) pour libérer PA0.
  • Bruit du haut-parleur aux basses fréquences d'échantillonnage : "Known Limitations" du BSP ST — des fichiers audio de faible qualité "may produce high and uncomfortable noise level" sur le haut-parleur classe D ; monter la fréquence d'échantillonnage au-delà de 48 kHz.
  • Risque de corruption I2C du codec : limitation du BSP ST — la communication I2C avec le CS43L22 "may be corrupted if it is interrupted by some user interrupt routines".
  • Contraintes du pilote audio : le BSP ne prend en charge que les flux stéréo 16 bits (le mono doit être dupliqué) — limitations 4 et 5 du BSP ST.
  • La carte est obsolète/EOL (étiquette Wikipedia) : pas de nouvelles révisions, pas de garantie d'approvisionnement ; les errata du silicium F407 (documents de révision ES0209 ou ultérieurs) s'appliquent — vérifier la fiche d'errata en cours pour la révision de die reçue.
  • Prudence avec PC7 : connecté à l'entrée MCLK du codec ; l'utiliser comme sortie UART n'a de sens que si le codec est inutilisé (commentaire MicroPython).
  • Retour d'expérience expert expert — expert-microcontroleur
    • J'ai enfin pris le temps de creuser cette carte. Sur le papier, c'est un monstre pour l'audio avec le CS43L22 et le micro PDM, et l'argument d'être sous les 20 dollars pour du F407 a 168MHz est difficile a battre. Le BSP CubeF4 pour la lecture/enregistrement est complet. Par contre, attention au pi… — expert-microcontroleur
    • Merci pour ce retour ! C'est exactement le problème que j'ai rencontre la semaine derniere. Je pensais que le ST-LINK etait magiquement relie au port série, donc j'ai passe une soiree a vérifier ma config GPIO sans rien comprendre. Du coup, jai du souder deux fils pour relier le TX/RX de l'adaptate… — maker_du_samedi
    • Pour repondre a ta question sur la simultaneite I2S, en theorie le F407 gere très bien les deux canaux independants, mais la configuration DMA doit être faite avec soin pour ne pas saturer le bus AHB. Concernant le problème du VCP, c'est dommage que ST ne l'ait pas cable sur cette revision par defa… — codeur_embedde

Retours et projets de la communauté

  • STM32CubeF4 board examples/demos

    STM32CubeF4 board examples/demos — official LED, button, audio play/record, accelerometer demos: .com/STMicroelectronics/STM32CubeF4 (see Projects/STM32F4-Discovery/ ). (unverified au 2026-10-13) MicroPython port STM32F4DISC — REPL over USB, DAC/RNG/servo ena…

  • Zephyr samples on `stm32f4_disco`

    Zephyr samples on stm32f4_disco — blinky, button, sensor samples build out of the box: .zephyrproject.org/latest/boards/st/stm32f4_disco/doc/index.html (unverified au 2026-10-13)

  • ChibiOS/RT ports for Discovery boards

    ChibiOS/RT ports for Discovery boards — (Wikipedia, cited reference): .wikipedia.org/wiki/STM32 Discovery_boards (unverified au 2026-10-13)

Contenu indisponible pour le moment.

  • Le VCP du ST-LINK n'est pas câblé au USART du MCU sur les cartes d'origine. Doc de carte Zephyr : "Please note that ST-Link Virtual Com Port is not wired to chip serial port. In order to enable console output you should use a serial cable and connect it to UART2 pins (PA2/PA3)." Noter la contradiction : le fichier variant_DISCO_F407VG.h du core Arduino étiquette USART2 (PA2/PA3) comme "Connected to ST-Link" — sur beaucoup de révisions de la carte, les jumpers VCP-vers-USART2 (zone CN3/CN5) doivent être vérifiés/activés, et certaines révisions n'ont tout simplement pas le câblage. Vérifier sur votre révision spécifique avant de compter sur Serial via le port USB du ST-LINK.
  • La référence de l'accéléromètre varie selon la révision de carte (LIS302DL vs LIS3DSH, tous deux sur SPI1). Le code doit auto-détecter via l'ID de puce comme le fait le BSP de ST, ou lire le marquage ; un code naïf à pilote unique échoue silencieusement sur l'autre révision. (BSP ST stm32f4_discovery_accelerometer.c.)
  • UART1 est inutilisable sans modification de la carte : ses broches alternatives sont PB6/PB7, et PB6 est relié au SCL I2C du codec audio (commentaire de mpconfigboard.h de MicroPython : "Without board modifications, this makes UART1 unusable on this board").
  • Conflits sur PA0 : le bouton USER partage PA0 avec UART4 TX/CTS et WKUP ; MicroPython note qu'il faut retirer SB20 (face arrière de la carte) pour libérer PA0.
  • Bruit du haut-parleur aux basses fréquences d'échantillonnage : "Known Limitations" du BSP ST — des fichiers audio de faible qualité "may produce high and uncomfortable noise level" sur le haut-parleur classe D ; monter la fréquence d'échantillonnage au-delà de 48 kHz.
  • Risque de corruption I2C du codec : limitation du BSP ST — la communication I2C avec le CS43L22 "may be corrupted if it is interrupted by some user interrupt routines".
  • Contraintes du pilote audio : le BSP ne prend en charge que les flux stéréo 16 bits (le mono doit être dupliqué) — limitations 4 et 5 du BSP ST.
  • La carte est obsolète/EOL (étiquette Wikipedia) : pas de nouvelles révisions, pas de garantie d'approvisionnement ; les errata du silicium F407 (documents de révision ES0209 ou ultérieurs) s'appliquent — vérifier la fiche d'errata en cours pour la révision de die reçue.
  • Prudence avec PC7 : connecté à l'entrée MCLK du codec ; l'utiliser comme sortie UART n'a de sens que si le codec est inutilisé (commentaire MicroPython).

Bibliothèque de code — exemples écrits pour cette carte

  • clignotante.c C

    Le clignotement de référence en C nu avec la STM32 HAL : la LED broche 12 de la carte bascule toutes les 500 ms grâce au tick SysTick de 1 ms. Le squelette est celui généré par STM32CubeIDE, prêt à c…

  • bouton-hal.c C

    Le bouton utilisateur de la carte (GPIOA/GPIO_PIN_0, actif HIGH) bascule la LED à chaque appui. L'anti-rebond par échantillonnage à 50 Hz est le patron standard en C embarqué, sans interruption ni te…

  • usart-printf.c C

    Rediriger printf() vers l'USART en trois lignes : la carte envoie ses mesures sur le port série virtuel USB, visibles dans un terminal à 115200 bauds. Le patron de retargeting est le même sur toute l…

  • adc-temperature.c C

    Le capteur thermique interne est relié à un canal dédié de l'ADC : ce programme le convertit, applique l'étalonnage typique de la fiche technique et affiche la température du circuit en degrés Celsiu…

  • pwm-timer-led.c C

    Le PWM matériel d'un timer STM32 fait respirer une LED sans consommer de CPU : le canal compare la valeur au compteur et génère le créneau en autonomie. Le rapport cyclique s'exprime en pourcentage d…

  • servo-pwm.c C

    Le timer configuré pour compter en microsecondes génère l'impulsion de commande du servo (0,5 à 2,5 ms sur période de 20 ms). La fonction servo_angle convertit n'importe quel angle en valeur de compa…

  • i2c-oled.c C

    Le protocole I2C du SSD1306 tient en deux octets de contrôle : 0x00 pour une commande, 0x40 pour des données. Ce programme envoie la séquence d'initialisation puis une image de test, sans bibliothèqu…

  • watchdog-iwdg.c C

    Le watchdog indépendant IWDG redémarre la carte si le firmware cesse de le rafraîchir : ici une boucle infinie simulée provoque le reset au bout de 30 cycles. Le port série montre clairement le redém…

  • rtc-reveil.c C

    La RTC tient l'heure même alimentation coupée (veilleuse ou condensateur de la carte) : ce programme affiche l'horloge en continu et déclenche un réveil toutes les 10 s, base des stations à réveil pé…

  • usart-reception.c C

    Le DMA circulaire remplit le tampon UART sans jamais interrompre le CPU : la boucle principale découpe le flux en lignes et exécute les commandes ("led" bascule la LED utilisateur). Le patron de réfé…

Exemples et dépôts trouvés en ligne