¿Cómo aumentar la velocidad de escritura con el modo de host de alta velocidad USB con STM32F4? [cerrado]

0

Quiero escribir en un archivo de texto en una unidad flash utilizando STM32F407 (XCore407I Core Board) y mediante el modo USB HS. He utilizado la biblioteca fatfs y también Tilen Majerle Bibliotecas para el modo USB HS HOST. Logré escribir en un archivo de texto en una memoria flash de 8GB. Pero tengo dos problemas aquí:

  1. Cuando uso otra unidad flash, excepto 8 GB, por ejemplo, 16 GB, no puedo escribir en flash y se produce un error en la etapa de montaje.
  2. La velocidad máxima que he alcanzado es de 1.3MB / s. Quiero aumentar esta velocidad, ¿cómo puedo hacer esto? ¿Alguien tiene algún documento para usar USB HS en STM32?
pregunta Ahmad Fatehi

2 respuestas

1

¿Hay alguna razón por la que no esté comenzando con el paquete de software de demostración provisto para su placa? Una de las demos hace lo que estás pidiendo. Consulte el enlace 'Demo' en enlace

La página 14 del manual del usuario de XCor407l (disponible en la misma página web), en la sección 2.9.5, indica: 'Demostración de HS USB, la placa de desarrollo funciona como host USB; Demostración de la unidad flash USB '. Esto parece ser exactamente lo que quieres como punto de partida.

Puede descargar el software, incluido el código fuente, desde el enlace 'Demo'. El código fuente de este ejemplo se encuentra en 'EVK407L-Demo / USB HS Example / Project / USB_Host_Examples / MSC'. Eché un vistazo rápido al código fuente, claramente respalda el ULPI.

Como recuerdo, por haber escrito el firmware para varios dispositivos USB de alta velocidad, los problemas técnicos clave que operan a alta velocidad son:

Transceptor de alta velocidad: para que un dispositivo USB se conecte a alta velocidad (480M bits / s), se necesita un protocolo de enlace y los dispositivos encienden sus transceptores de alta velocidad. Si observa la hoja de datos del Microchip USB3300, verá en la página 20 que el registro de 'Control de función' toma como valor predeterminado el valor 0x41, por lo que el transceptor de velocidad completa está habilitado (sección 6.1.4.5, Selección de Xcvr [1: 0] tiene el valor 1). El firmware que controla el ULPI debe guiarlo correctamente al encender el transceptor de alta velocidad.

Tamaño del paquete: en el modo de alta velocidad USB 2.0, el tamaño del paquete de transferencia de datos es de 512 bytes, a diferencia de los 64 bytes en el modo de velocidad completa de USB 1.1. Esto se aplica solo a la transferencia de datos USB, no a los comandos y respuestas USB. El firmware debe tener en cuenta este tamaño de paquete al leer y escribir datos.

Con respecto a la velocidad de transferencia de datos, le está yendo bien para lograr 1.3M Bytes / s con USB 1.1 a toda velocidad. Existe una sobrecarga en el protocolo, los comandos y el estado del intercambio del host y el dispositivo, además de los datos, y eso lleva tiempo.

Las especificaciones de USB 2 pueden ser útiles. Están bien escritos y disponibles en USB.org, consulte enlace

    
respondido por el D. Brown
0

La biblioteca vinculada a su pregunta no admite el modo de alta velocidad USB.

Más bien, admite el uso del periférico de alta velocidad OTG en el modo Velocidad completa .

Supported USB FS and USB HS in FS mode
  USB OTG is connected to USB FS mode on STM32F4-Discovery board
  USB OTG is connected to USB HS in FS mode on STM32F429-Discovery board

Es necesario "leer la letra pequeña" para ver esto en lo de arriba, específicamente que HS se menciona solo cuando va seguido de in FS mode . Y de hecho, la palabra "alto" no aparece en ninguna parte en la página principal de su enlace.

También es bastante lógico por qué este es el caso: el hardware no admitirá el funcionamiento a alta velocidad sin el uso de un chip PHY externo conectado a los pines ULPI del procesador. Las conexiones de cableado proporcionadas en la documentación de la biblioteca de software son específicamente para la conexión a uno de los PHY de velocidad completa en el chip.

El STM32F4DISCOVERY (que en realidad tiene un 'F407 no un' F405) no contiene un PHY de alta velocidad. Rompe los pines ULPI, pero tendría que proporcionar una tarjeta portadora que contenga el chip PHY. (También tenga en cuenta que en esta placa el software utiliza el motor periférico de velocidad completa; solo en el 'F429 usa el periférico de alta velocidad, pero en modo de velocidad máxima ).

Es probable que tratar de agregar un PHY no sea una elección acertada para lograr su objetivo final, especialmente porque habrá mucho trabajo de software por hacer. Es posible que desee intentar cambiar a otra MCU (aunque los PHY de alta velocidad se encuentran más comúnmente en los SoC que en las MCU), y tal vez hacer una investigación sobre el rendimiento comparativo que pueda lograrse con una que pueda operar una tarjeta SD de alto rendimiento en forma nativa (más bien modo SPI). Sin embargo, en realidad, cualquier camino para lograr un registro de alta velocidad que no sea la compra de una solución comprobada de hardware y sistema operativo probablemente será una tarea técnica larga y desafiante.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas