🛠 USB OTG FS et SDIO réels : les périphériques cachés derrière les en-têtes morpho

Famille STM32 Nucleo-64 F4 — modelo insignia: Nucleo-F401RE · avance · Schéma : IMG-stm32f4-nucleo-avance-8-stm32f4nuc-usb-otg-sdio-morpho.svg — le connecteur micro-USB de la carte mène au ST-LINK tandis que l'OTG FS du MCU et le SDIO sortent sur les en-têtes morpho vers un connecteur USB et une carte SD

Objetivos

Comprender las dos "características" más engañosas de la Nucleo-F401RE: el conector micro-USB de la placa no es el USB del MCU, y los periféricos USB 2.0 OTG FS y SDIO reales del MCU solo están disponibles en los conectores ST morpho. Luego, planificar el cableado real para ambos.

La trampa

El conector USB de la placa (micro-B, full-speed) está conectado al adaptador host ST-LINK/V2-1, que se enumera como depurador SWD + puerto COM virtual + dispositivo de almacenamiento masivo USB. Los pines USB 2.0 OTG FS del STM32F401RE están expuestos en los conectores morpho, no enrutados al conector de la placa. Por lo tanto, Serial funciona sin ningún conocimiento de USB — y cualquier sketch que quiera que el propio MCU sea un dispositivo USB necesita cableado externo.

Lo que el silicio realmente tiene (documentación de la placa Zephyr)

USB 2.0 OTG FS (dispositivo/host), SDIO, controlador DMA, 4× SPI, 3× I2C, 3× USART/UART, I2S, ADC de 12 bits con 16 canales, RTC, 1 temporizador avanzado + 7 temporizadores de propósito general, 2 watchdogs.

Pasos — OTG FS en los conectores morpho

  1. Identificar los pines OTG FS (DM/DP) para el F401RE en los conectores morpho. > NO VERIFICADO: los números exactos de los pines morpho no fueron verificados automáticamente durante la investigación — léalos en UM1760, el manual oficial de la placa (descárguelo desde st.com en un navegador; las descargas mediante scripts están bloqueadas).
  2. Conectar un conector USB hembra: DM/DP con trazas cortas y resistencias en serie, VBUS desde su propia fuente de 5 V (el VBUS del conector de la placa alimenta el lado del ST-LINK), masas conectadas.
  3. En CubeMX, habilitar USB_OTG_FS en modo dispositivo (por ejemplo, la clase CDC) y generar:
/* CubeMX-style skeleton: the MCU becomes the USB device */
void MX_USB_DEVICE_Init(void)
{
  hpcd_USB_OTG_FS.Instance = USB_OTG_FS;  /* pins live on the morpho headers */
  HAL_PCD_Init(&hpcd_USB_OTG_FS);
  USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS);
  USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC);
  USBD_Start(&hUsbDeviceFS);
}

Pasos — SDIO

  1. Conectar un zócalo SD a los pines SDIO (CMD, CLK, D0–D3) en el dominio de 3.3 V — el rango de VDD es 1.7–3.6 V, no 5 V.
  2. Comenzar desde los proyectos de ejemplo SDIO bajo Projects/STM32F401RE-Nucleo en STM32CubeF4 — los ejemplos de GPIO, ADC, USART, USB y SDIO para esta placa exacta son mantenidos por ST.
  3. Transmitir datos con el controlador DMA integrado en el chip para que el Cortex-M4F de 84 MHz permanezca libre mientras los bloques se mueven a la tarjeta.

Resultado esperado

Un dispositivo CDC que aparece porque el MCU es el dispositivo USB — no el ST-LINK — y una tarjeta SD registrando a velocidades SDIO sin bit-banging. Ambos coexisten con el puerto COM propio del ST-LINK: un diseño, dos puertos serie, cero confusión una vez que los dos mundos USB estén separados en su mente.

Errores comunes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales