STM32F4DISCOVERY (kit Discovery STM32F407VGT6)

STMicroelectronicsMCU 8-32 bitarduino

⚡ Lo esencial en 60 segundos

La STM32F4DISCOVERY, también conocida bajo el código de pedido STM32F4DISCOVERY, es una placa de evaluación y desarrollo de alto rendimiento fabricada por STMicroelectronics. Diseñada para aprovechar las capacidades de los microcontroladores de la serie STM32F4, esta placa se centra específicamente en facilitar el desarrollo de aplicaciones de audio. El corazón de este sistema es el microcontrolador STM32F407VGT6, un componente basado en la arquitectura ARM Cortex-M4F. Para entender su potencia, es útil recordar que el Cortex-M4F es un procesador de un solo núcleo que opera a una frecuencia máxima de 168 MHz. Esta velocidad, combinada con una unidad de punto flotante integrada (FPU) y instrucciones de procesamiento digital de señales (DSP), permite a la placa ejecutar cálculos matemáticos complejos y procesamiento de audio en tiempo real con una eficiencia notable. En términos de memoria, el microcontrolador dispone de 1 MB (1024 KB) de memoria flash para almacenar el programa y 192 KB de RAM para los datos durante la ejecución, incluyendo 64 KB de memoria de núcleo acoplado (CCM) que optimiza el acceso a los datos críticos, además de 4 KB de RAM respaldada por batería para conservar información sensible cuando el sistema está apagado.

Aunque la serie STM32F4 fue anunciada por STMicroelectronics en septiembre de 2011 y la placa F4DISCOVERY se lanzó poco después, a principios de 2012, es importante señalar que este modelo está actualmente considerado obsoleto o en fin de vida útil. Ha sido reemplazado en el catálogo oficial por las placas de la serie Nucleo-F4xx y otras variantes más recientes de Discovery. Sin embargo, su legado es extenso y sigue siendo ampliamente utilizada en el mercado de segunda mano y en entornos educativos debido a su robusto soporte de software. La placa sigue siendo totalmente compatible con herramientas clave como STM32CubeF4, Zephyr RTOS, el núcleo Arduino para STM32 (stm32duino), MicroPython y OpenOCD. Es crucial distinguir esta placa original de sus hermanas de la familia F4, como la STM32F401CDISCOVERY o la STM32F411E-DISCOVERY, ya que, aunque comparten la misma filosofía de diseño, poseen microcontroladores diferentes y, en algunos casos, periféricos distintos. Por ejemplo, el acelerómetro de 6 ejes LSM330 que a veces se asocia erróneamente con la "F4 Discovery" se encuentra en las placas F401 y F411, no en la F4DISCOVERY original, que utiliza un acelerómetro de 3 ejes.

Una de las características distintivas de la STM32F4DISCOVERY es su enfoque en el audio, lo que la convierte en una plataforma ideal para aprender sobre procesamiento de señales. La placa integra un convertidor digital-analógico (DAC) CS43L22 con un amplificador de clase D para altavoces, lo que permite reproducir sonido de manera eficiente sin necesidad de componentes externos. Además, incluye un micrófono digital omnidireccional MP45DT02, que utiliza una interfaz PDM (modulación de densidad de pulsos) para capturar audio. Esta configuración permite a los desarrolladores experimentar con grabación y reproducción de audio directamente desde la placa, utilizando una toma para auriculares y un conector para altavoz. Para la interacción básica, la placa cuenta con cuatro LED de usuario (verde, naranja, rojo y azul) conectados a los pines PD12 a PD15, y un botón de usuario (USER) en el pin PA0. También dispone de un botón de reinicio. Cabe destacar que, a diferencia de otras placas Discovery, esta no incluye un joystick.

La conectividad y la expansión son otros puntos fuertes de este kit. La placa incorpora un programador y depurador ST-LINK/V2-A integrado, lo que elimina la necesidad de comprar una sonda externa para cargar el código o depurar el programa; esto se realiza a través de un puerto USB dedicado. Además, existe un segundo puerto USB, un conector micro-AB OTG FS, que permite que la placa actúe como dispositivo o anfitrión USB, habilitando proyectos como emuladores de teclado o lectores de almacenamiento masivo. Para la expansión física, dos cabeceras de extensión exponen casi todos los pines de entrada/salida del microcontrolador en su paquete LQFP100. Esto permite acceder a interfaces ricas como dos buses CAN, una interfaz de cámara paralela, SDIO y dos DACs, aunque es importante notar que la placa no incluye los conectores físicos o transceptores (PHY) para Ethernet o la cámara, por lo que estos requieren hardware adicional.

El ecosistema de software es uno de los aspectos más valorados de esta placa. Los desarrolladores pueden elegir entre múltiples entornos. Para quienes prefieren la programación en C/C++ con herramientas oficiales de ST, STM32CubeIDE y el paquete de firmware STM32CubeF4 ofrecen controladores HAL y ejemplos específicos para esta placa. Para quienes buscan un sistema operativo en tiempo real ligero, Zephyr RTOS soporta la placa bajo el nombre stm32f4_disco. La comunidad Arduino también ha portado su entorno a esta placa mediante el núcleo STM32duino, identificándola como "STM32F407G-DISC1". Finalmente, MicroPython permite programar la placa en un lenguaje de alto nivel, ideal para prototipado rápido y educación.

Sin embargo, los usuarios deben ser conscientes de ciertas particularidades y limitaciones documentadas. Un problema común es que el puerto de comunicación virtual (VCP) del ST-LINK no está conectado directamente al puerto serie del microcontrolador en todas las revisiones de la placa. Para usar la consola serie, a menudo es necesario conectar un cable serie externo a los pines del UART2 (PA2/PA3) o verificar los puentes internos. Otro detalle crítico es que el acelerómetro integrado varía según la revisión de la placa: las primeras versiones usan el LIS302DL y las posteriores el LIS3DSH. El código debe ser capaz de detectar automáticamente qué sensor está presente leyendo su ID de chip, o bien el usuario debe consultar la marca del componente. Además, el pin PA0, usado por el botón de usuario, comparte función con otras señales como el despertador (WKUP) y la transmisión de UART4, lo que puede requerir modificaciones físicas (como quitar un puente de soldadura) para liberar el pin en ciertos proyectos. Finalmente, dado que la placa está obsoleta, no hay garantía de suministro futuro y las erratas del silicio del microcontrolador STM32F407 deben consultarse en las hojas de datos oficiales de ST para evitar errores de diseño en productos finales. A pesar de estos desafíos, la STM32F4DISCOVERY sigue siendo una referencia histórica y pedagógica sólida para entender el desarrollo embebido de alto rendimiento.

Foro (1 tema) →

AttrEspecificacionesverificado
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).? sin verificar
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").? sin verificar
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).? sin verificar
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.? sin verificar
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.? sin verificar
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.? sin verificar
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).? sin verificar
powerflexible supply — USB VBUS or external 3.3 V / 5 V / 7–12 V, with power-management access point (Zephyr board doc).? sin verificar
typical_consumption_temperature? sin verificar
  • Fabricante: STMicroelectronics.
  • Producto: STM32F4DISCOVERY, placa de evaluación/descubrimiento de alto rendimiento, descrita por ST como una placa que aprovecha "the capabilities of the STM32F407 high-performance microcontrollers, to allow users to develop audio applications easily" (página de producto de ST, consultada el 2026-10-13).
  • MCU a bordo: STM32F407VGT6, ARM Cortex-M4F @ 168 MHz, 1024 KB de flash, 192 KB de RAM + 4 KB de RAM respaldada por batería, LQFP100 (Wikipedia "STM32", sección Discovery boards; documentación de placas de Zephyr).
  • Lanzamiento: la serie STM32F4 (Cortex-M4F) fue anunciada por ST en septiembre de 2011 (tabla de historial STM32 en Wikipedia); la placa F4DISCOVERY en sí se lanzó poco después, a principios de 2012.
  • Estado: obsoleta / fin de vida. La sección Discovery boards de Wikipedia etiqueta explícitamente la placa STM32F4DISCOVERY como "(obsolete)" (consultada el 2026-10-13); la página de producto de ST sigue en línea, pero la placa ha sido sustituida por las placas Nucleo-F4xx y los kits Discovery más recientes. Sigue muy disponible en el mercado de segunda mano y sigue plenamente admitida por CubeF4, Zephyr, stm32duino, MicroPython y OpenOCD.
  • Variantes / revisiones de placa: existieron varias revisiones de hardware a lo largo de la vida del producto; el acelerador MEMS embarcado difiere según la revisión (LIS302DL en las placas tempranas, LIS3DSH en las posteriores — el BSP de ST autodetecta ambos leyendo el ID del chip, ver stm32f4discovery-bsp). La página de producto actual de ST describe "one MEMS digital accelerometer" (en singular).
  • Placas relacionadas de la misma familia: STM32F401CDISCOVERY (F401VC), STM32F411E-DISCOVERY, STM32F412G-DISCOVERY, STM32F413H-DISCOVERY, STM32F429I-DISCOVERY, STM32F469I-DISCOVERY (todas listadas en la lista de placas del README de STM32CubeF4). Nota: la IMU de 6 ejes LSM330 que algunas fuentes asocian con "F4 Discovery" está en los kits Discovery F401/F411, no en la STM32F4DISCOVERY original.

+ Puntos fuertes

  • Discovery orientada al audio: DAC CS43L22 + driver de altavoz de clase D + micrófono PDM MP45DT02 + conector de auriculares en una placa de la categoría de menos de 20 USD — el argumento de ST era "develop audio applications easily" (página de producto de ST). BSP completo de grabación/reproducción con I2S3 (reproducción) / I2S2 (captura PDM) en CubeF4.
  • ST-LINK/V2-A embarcado depurador/programador con conector SWD — sin sonda externa (página de producto de ST; Zephyr).
  • Cortex-M4F @ 168 MHz con FPU + instrucciones DSP era el buque insignia de rendimiento de la línea M4 de ST; 1 MB de flash la convirtieron en una placa duradera para docencia y hackathons.
  • Acelerador MEMS con interrupción de click/tap (LIS302DL/LIS3DSH en SPI1, INT en PE0/PE1) — usado en las demos "Accelerometer" de ST.
  • USB dual: puerto ST-LINK dedicado más un puerto real micro-AB USB OTG FS device/host (demos de clases de dispositivo, host mass-storage, etc.).
  • Silicio rico expuesto en cabeceras: CAN ×2, MAC Ethernet (a nivel de chip), interfaz de cámara paralela, SDIO, DAC ×2 — útil para experimentos con breakout aunque la placa no exponga PHY/zócalo SD/jack para ellos.
  • Densidad de ecosistema: BSP + ejemplos de primer fabricante en CubeF4, Zephyr, mbed (legado), core de Arduino, MicroPython, configs OpenOCD al estilo libopencm3 — probablemente la placa de desarrollo con más software de la década de 2012.

− Puntos débiles

  • El VCP del ST-LINK no está cableado al USART del MCU en las placas de fábrica. Doc de placa de 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)." Nótese la contradicción: el archivo variant_DISCO_F407VG.h del core de Arduino etiqueta USART2 (PA2/PA3) como "Connected to ST-Link" — en muchas revisiones de la placa hay que comprobar/habilitar los jumpers VCP-a-USART2 (zona CN3/CN5), y algunas revisiones simplemente carecen del cableado. Verifica en tu revisión concreta antes de confiar en Serial por el puerto USB del ST-LINK.
  • El modelo de acelerómetro varía según la revisión de la placa (LIS302DL vs LIS3DSH, ambos en SPI1). El código debe autodetectarlo vía ID de chip como hace el BSP de ST, o leer el marcado; un código ingenuo con un solo driver falla silenciosamente en la otra revisión. (BSP de ST stm32f4_discovery_accelerometer.c.)
  • UART1 es inutilizable sin modificar la placa: sus pines alternos son PB6/PB7, y PB6 está conectado al SCL del I2C del códec de audio (comentario de mpconfigboard.h de MicroPython: "Without board modifications, this makes UART1 unusable on this board").
  • Conflictos en PA0: el botón USER comparte PA0 con UART4 TX/CTS y WKUP; MicroPython indica retirar SB20 (parte trasera de la placa) para liberar PA0.
  • Ruido del altavoz a bajas tasas de muestreo: "Known Limitations" del BSP de ST: los archivos de audio de baja calidad "may produce high and uncomfortable noise level" en el altavoz de clase D; subir la tasa de muestreo por encima de 48 kHz.
  • Riesgo de corrupción en el códec por I2C: limitación del BSP de ST — la comunicación I2C con el CS43L22 "may be corrupted if it is interrupted by some user interrupt routines".
  • Restricciones del driver de audio: el BSP solo admite flujos estéreo de 16 bits (el mono debe duplicarse) — limitaciones 4 y 5 del BSP de ST.
  • La placa es obsoleta/EOL (etiqueta de Wikipedia): sin nuevas revisiones, sin garantía de suministro; aplican las erratas del silicio F407 (documentos de revisión ES0209 o posterior) — consultar la hoja de erratas actual para la revisión de die que te toque.
  • Precaución con PC7: conectado a la entrada MCLK del códec; usarlo como salida UART solo tiene sentido cuando el códec no se usa (comentario de 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

Opiniones y proyectos de la comunidad

  • STM32CubeF4 board examples/demos

    Ejemplos/demos de la placa STM32CubeF4 — demos oficiales de LED, botón, reproducción/grabación de audio y acelerómetro: .com/STMicroelectronics/STM32CubeF4 (ver Projects/STM32F4-Discovery/ ). (unverified au 2026-10-13) Puerto de MicroPython STM32F4DISC — REPL…

  • Zephyr samples on `stm32f4_disco`

    Ejemplos de Zephyr en stm32f4_disco — los ejemplos de blinky, botón y sensor se compilan sin configuración adicional: .zephyrproject.org/latest/boards/st/stm32f4_disco/doc/index.html (unverified au 2026-10-13)

  • ChibiOS/RT ports for Discovery boards

    Puertos de ChibiOS/RT para placas Discovery — (Wikipedia, referencia citada): .wikipedia.org/wiki/STM32 Discovery_boards (unverified au 2026-10-13)

Contenido no disponible todavía.

  • El VCP del ST-LINK no está cableado al USART del MCU en las placas de fábrica. Doc de placa de 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)." Nótese la contradicción: el archivo variant_DISCO_F407VG.h del core de Arduino etiqueta USART2 (PA2/PA3) como "Connected to ST-Link" — en muchas revisiones de la placa hay que comprobar/habilitar los jumpers VCP-a-USART2 (zona CN3/CN5), y algunas revisiones simplemente carecen del cableado. Verifica en tu revisión concreta antes de confiar en Serial por el puerto USB del ST-LINK.
  • El modelo de acelerómetro varía según la revisión de la placa (LIS302DL vs LIS3DSH, ambos en SPI1). El código debe autodetectarlo vía ID de chip como hace el BSP de ST, o leer el marcado; un código ingenuo con un solo driver falla silenciosamente en la otra revisión. (BSP de ST stm32f4_discovery_accelerometer.c.)
  • UART1 es inutilizable sin modificar la placa: sus pines alternos son PB6/PB7, y PB6 está conectado al SCL del I2C del códec de audio (comentario de mpconfigboard.h de MicroPython: "Without board modifications, this makes UART1 unusable on this board").
  • Conflictos en PA0: el botón USER comparte PA0 con UART4 TX/CTS y WKUP; MicroPython indica retirar SB20 (parte trasera de la placa) para liberar PA0.
  • Ruido del altavoz a bajas tasas de muestreo: "Known Limitations" del BSP de ST: los archivos de audio de baja calidad "may produce high and uncomfortable noise level" en el altavoz de clase D; subir la tasa de muestreo por encima de 48 kHz.
  • Riesgo de corrupción en el códec por I2C: limitación del BSP de ST — la comunicación I2C con el CS43L22 "may be corrupted if it is interrupted by some user interrupt routines".
  • Restricciones del driver de audio: el BSP solo admite flujos estéreo de 16 bits (el mono debe duplicarse) — limitaciones 4 y 5 del BSP de ST.
  • La placa es obsoleta/EOL (etiqueta de Wikipedia): sin nuevas revisiones, sin garantía de suministro; aplican las erratas del silicio F407 (documentos de revisión ES0209 o posterior) — consultar la hoja de erratas actual para la revisión de die que te toque.
  • Precaución con PC7: conectado a la entrada MCLK del códec; usarlo como salida UART solo tiene sentido cuando el códec no se usa (comentario de MicroPython).

Biblioteca de código — ejemplos escritos para esta placa

  • clignotante.c C

    El parpadeo de referencia en C puro con STM32 HAL: el LED de usuario en pin 12 cambia cada 500 ms gracias al tick SysTick de 1 ms de HAL. El esqueleto es el generado por STM32CubeIDE, listo para comp…

  • bouton-hal.c C

    El botón de usuario de la placa (GPIOA/GPIO_PIN_0, activo en HIGH) alterna el LED en cada pulsación. El antirrebote por muestreo a 50 Hz es el patrón estándar en C embebido, sin interrupciones ni esp…

  • usart-printf.c C

    Redirigir printf() al USART en tres líneas: la placa envía sus medidas por el puerto serie virtual USB, visibles en un terminal a 115200 baudios. El patrón de retargeting es el mismo en toda la gama …

  • adc-temperature.c C

    El sensor térmico interno cuelga de un canal dedicado del ADC: este programa lo convierte, aplica la calibración típica de la ficha técnica e imprime la temperatura del circuito en grados Celsius por…

  • pwm-timer-led.c C

    El PWM hardware de un temporizador STM32 hace respirar un LED sin consumir CPU: el canal compara con el contador y genera la señal en autonomía. El ciclo de trabajo se expresa en porcentaje del perio…

  • servo-pwm.c C

    El temporizador configurado para contar microsegundos genera el impulso de control del servo (0,5 a 2,5 ms sobre periodo de 20 ms). La función servo_angle convierte cualquier ángulo en un valor de co…

  • i2c-oled.c C

    El protocolo I2C del SSD1306 se resume en dos bytes de control: 0x00 para orden, 0x40 para datos. Este programa envía la secuencia de inicialización y una imagen de prueba, sin librería: la mejor for…

  • watchdog-iwdg.c C

    El watchdog independiente IWDG reinicia la placa si el firmware deja de refrescarlo: aquí un bucle infinito simulado provoca el reset tras 30 ciclos. El puerto serie muestra claramente el rearranque …

  • rtc-reveil.c C

    La RTC mantiene la hora aunque se corte la alimentación (pila de botón o supercondensador de la placa): este programa imprime el reloj continuamente y lanza un despertador cada 10 s, base de las esta…

  • usart-reception.c C

    El DMA circular rellena el búfer UART sin interrumpir nunca la CPU: el bucle principal trocea el flujo en líneas y ejecuta órdenes ("led" alterna el LED de usuario). El patrón de referencia para un m…

Ejemplos y repositorios encontrados en línea