🛠 Automatización de almacenamiento USB de alta velocidad en ESP32-P4 Hydra

Adafruit Metro ESP32-P4 Hydra · avance · Configurez le port USB-A hôte pour monter et écrire sur des clés USB à 480 Mbps, exploitant la puissance du RISC-V.

Objetivos

Este tutorial tiene como objetivo aprovechar las capacidades avanzadas del puerto host USB-A de alta velocidad (480 Mbps) de la placa Adafruit Metro ESP32-P4 Hydra. A diferencia de los microcontroladores clásicos limitados a USB Full-Speed, el SoC ESP32-P4 permite transferencias masivas de datos. Configuraremos el sistema para detectar automáticamente una unidad USB, montar el sistema de archivos y realizar una escritura secuencial de registros, ilustrando la automatización de la recopilación de datos industriales.

Hardware Necesario

Pasos

  1. Configuración del Proyecto: Cree un nuevo proyecto ESP-IDF. En el menú de configuración (idf.py menuconfig), habilite el soporte de USB Host High-Speed bajo USB Host Stack > USB Host High-Speed. Asegúrese de que el controlador USB Mass Storage Class esté habilitado.
  2. Inicialización del Bus: En su código app_main, inicialice el bus USB. El P4 utiliza líneas dedicadas para HS. Habilite el control de software de la alimentación del puerto USB-A si es necesario para proteger la placa.
  3. Detección y Montaje: Implemente una tarea FreeRTOS que espere el evento USB_HOST_MSC_DEVICE_CONNECTED. Una vez detectado, llame a esp_vfs_fat_usb_disk_register para montar el volumen.
  4. Escritura de Datos: Abra un archivo en modo escritura (fopen("/usb/logs.txt", "a")). Escriba datos en bloques de 4 KB para saturar el bus y probar el rendimiento. Use fflush para forzar la escritura física.
  5. Manejo de Errores: Añada un manejador para eventos de desconexión (USB_HOST_MSC_DEVICE_DISCONNECTED) para desmontar limpiamente el sistema de archivos y evitar la corrupción de datos.

Verificación

Abra el monitor serie (idf.py monitor). Debería ver mensajes de inicialización del bus USB, seguidos de la detección de la unidad USB y el mensaje "Volume mounted successfully". Retire la unidad USB después de escribir y verifique en un PC que logs.txt contiene los datos escritos. El rendimiento esperado debe ser significativamente superior a 10 MB/s.

Para Ir Más Allá

Integre el coprocesador ESP32-C6 para transmitir registros a través de WiFi o Thread antes de la escritura local, creando un nodo IoT híbrido de alto rendimiento.

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales