STM32F407VG-Discovery USB Limits

0

Actualmente estoy en la mitad de mi proyecto universitario de tercer año y estoy tratando de convertir el tablero STM Discovery en un registrador de datos. Ya he encontrado este sitio , que muestra cómo hacer un registrador de datos GPS y debería ser un buen trampolín para mí.

Mi pregunta es doble:

1) ¿El puerto USB del STM es capaz de transferir datos a 15Megabits por segundo (15Mbps)?

2) He leído que hay un límite físico en el tamaño de la memoria USB que el STM puede leer, pero no he encontrado ninguna fuente confiable para esto. ¿Existe este límite y, en caso afirmativo, cuál es?

Para aclarar, los datos que se transfieren son voltajes de CA sin procesar de numerosos sensores, junto con el tipo de sensor, el tiempo de lectura y un valor de contador. 7 sensores son de audio y se muestrean a 100 kHz (la frecuencia máxima de interés es de 40 kHz), se muestrean 144 sensores a 3125Hz y otros 100 sensores se muestrean a 391Hz. Todos los 16 pines ADC están en uso, junto con SPI2.

Gracias de antemano.

Editar: aquí está el agregado calculado total de los datos que se transfieren:

(12bits * 100kHz * 7sensors) + (12bits * 3125Hz * 144sensors) + (12bits * 390.625Hz * 32sensors) + (16bits * 390.625Hz * 63sensors) = 14343750bits por segundo     

pregunta user3303504

1 respuesta

2
  

1) ¿El puerto USB del STM es capaz de transferir datos a 15Megabits por segundo (15Mbps)?

No. El zócalo USB OTG es USB Full Speed, lo que significa un máximo de 12 Megabits por segundo. La otra toma USB está conectada al depurador de hardware, que es un STM32F103, que solo es capaz de una velocidad completa de USB, 12Megabits / segundo, y se transmite a través de una interfaz SWD mucho más lenta.

EDITAR:
Solo para aclarar cómo llegué a la conclusión de que la placa DISCOVERY solo tiene USB Full-Speed en el zócalo:

El puerto USB OTG con capacidad de alta velocidad solo tiene transceptores USB de velocidad completa en el chip. Para operar a alta velocidad, necesita un PHY externo de alta velocidad.

La Hoja de datos STM32F407 dice:

  

2.2.31 Bus serie universal de alta velocidad en movimiento (OTG_HS)
  Los dispositivos STM32F405xx y STM32F407xx incorporan un USB OTG de alta velocidad (hasta   480 Mb / s) dispositivo / host / periférico OTG. El USB OTG HS es compatible con velocidad completa y   Operaciones de alta velocidad. Integra los transceptores para operación a toda velocidad (12 MB / s) y presenta una interfaz UTMI de bajo pin (ULPI) para operación a alta velocidad (480 MB / s). Al usar el USB OTG HS en modo HS, se requiere un dispositivo PHY externo conectado al ULPI .

Miré el STM32F4DISCOVERY hoja de datos para ese tablero de descubrimiento. Tiene esquemas para el tablero (sección 6). Solo los pines USB de velocidad completa están conectados a una toma USB y no hay un PHY de alta velocidad externo. Por lo tanto, debe ser solo de velocidad completa.

Sin embargo, parece que los pines ULPI de alta velocidad están disponibles, por lo que es posible que pueda conectar un PHY externo, etc. y hacer que funcione. Podría valer la pena buscar en el sitio web de st.com para ver si tienen una nota de aplicación para eso. Sin embargo, no esperaría automáticamente que fuera fácil. No sé si el software del controlador está disponible, así que, a menos que tenga mucha experiencia y algún equipo de prueba para depurarlo, le recomiendo que verifique primero el software del controlador.

END EDIT.

Además, la velocidad de USB a 12 Mbps es un máximo teórico que agrega datos y ancho de banda de control. AFAIK, estaría feliz con el 50% de eso. IIRC, el software en el kit de desarrollo no daría el 50% para transferencias "normales" (sin pérdidas).

  

2) He leído que hay un límite físico en el tamaño de la memoria USB que el STM puede leer, pero no he encontrado ninguna fuente confiable para esto. ¿Existe este límite y, en caso afirmativo, cuál es?

Supongo que está utilizando el conector USB OTG. No he experimentado con esto.

EDIT 2:
No conozco ningún límite real de físico , pero me parece fácil creer que existen límites prácticos impuestos por el software de la clase de almacenamiento masivo de USB Host en las bibliotecas de la placa de descubrimiento STM32 (o de terceros). bibliotecas). Pueden ser los límites sobre los que has leído.

Por ejemplo, si la memoria USB está formateada con FAT32, entonces el tamaño máximo de archivo para un archivo en un sistema de archivos FAT32 fue de 4 GiB menos 1 byte, (\ $ 2 ^ {32} - 1 \ $), o 4,294,967,295 bytes Puede ser un límite sobre el que haya leído y podría ser un problema para su registrador, ya que su velocidad de datos es de casi 2 MB / segundo. Por lo tanto, podría iniciar sesión durante menos de 40 minutos en un archivo.

(Esto podría solucionarse utilizando una secuencia de archivos para registrar el flujo de datos, por ejemplo, escriba el primer, digamos, \ $ 2 ^ {30} \ $ bytes en el archivo 'log00001.dat', luego ciérrelo y escriba los siguientes \ $ 2 ^ {30} \ $ bytes en el archivo 'log00002.dat', etc)

    
respondido por el gbulmer

Lea otras preguntas en las etiquetas