Vinculación de bit / tasa a la frecuencia en un protocolo USB

3

Desarrollé un protocolo USB que transfiere aproximadamente 5 Mbits / s del dispositivo a mi PC. El mcu es el tm4c123 de TI. El reloj MCU es creado por un 16 MHZ que se alimenta a una PPL que da como resultado una frecuencia del sistema de 80 MHZ.

Quiero precisar cuál es el cuello de botella actual en mi protocolo USB porque, estoy lejos de los 12 Mbits / s La tasa máxima teórica (9,5 Mbits / s) para USB 2 de máxima velocidad. Es el hardware o el software en pocas palabras.

Entonces, mi pregunta, ¿cuál es la tasa de bits máxima que puede obtener en un protocolo USB con un sistema de 80 Mhz? No necesito una respuesta precisa, una regla de pulgares ciertamente haría el trabajo.

Aquí puede encontrar las apis USB de TI, implemento un dispositivo masivo.

Aquí puede encontrar la API LibUSBdotNET utilizada en el lado de la ventana.

    
pregunta MathieuL

1 respuesta

3

Su problema es casi seguro que no se debe al hardware. USB utiliza tasas de bits fijas. La velocidad de bits en la línea debe ser de 12.000 Mbps +/- 0.25%, independientemente de la cantidad de datos que transmita. Si su velocidad de bits fuera incorrecta, no podría enviar ningún dato y verá mensajes de error en Windows. El TM4C123 tiene un PLL separado solo para el módulo USB. Aquí hay parte de un diagrama de bloques de la hoja de datos :

A nivel de protocolo, asegúrese de que está utilizando puntos finales a granel para transferir datos, y trate de no tener otros dispositivos conectados a ese controlador en el lado de la PC. Puedes ver esto en la vista de conexión del Administrador de dispositivos. Esto permitirá un máximo de 19 paquetes de 64 bytes por trama (milisegundos), lo que da 1216 kilobytes / segundo de datos de la aplicación. Esta es la velocidad de datos real más rápida posible para USB de máxima velocidad.

Hay dos posibles cuellos de botella de software en su sistema. El primero está en el lado MCU. Si no hay datos disponibles cuando el host (PC) envía un paquete IN, la MCU no funcionará y el host intentará más tarde. Si su MCU está ocupada haciendo otras cosas, puede tardar mucho tiempo en entrar en la interrupción USB. La forma más fácil de detectar esto es mediante el uso de un analizador de bus. Le costará varios cientos de dólares para el hardware, pero puede ahorrarle muchos dolores de cabeza a largo plazo. Me gustan los analizadores de Teledyne-LeCroy, personalmente.

El otro posible cuello de botella está en el lado de la PC. Por alguna razón, a Windows no le gusta maximizar el ancho de banda del USB. El uso de múltiples puntos finales con transferencias asíncronas que se ejecutan en paralelo funciona bien. Si solo tiene un flujo de datos, intente solicitar muchos más datos de los que necesita cuando configura la transferencia. Una vez más, un analizador de bus puede decirle lo que está pasando. También puede obtener información útil de un analizador de software USB que se ejecuta en la PC, pero nunca lo he probado.

    
respondido por el Adam Haun

Lea otras preguntas en las etiquetas