5 votos

USB: ¿cuáles son las ventajas (o desventajas) o el uso de HID a través de puerto serie-sobre-USB?

Descargo de responsabilidad: yo soy un novato en electrónica y más aún para trabajar con USB, por favor tengan paciencia conmigo si he malinterpretado algunos de los fundamentos detrás de funcionamiento de USB. Cualquier corrección de bienvenida!

El escenario: con un grupo de amigos estamos construyendo un robot de barco de vela. Somos la gestión de todos los de a bordo sensores a través de un µC (AVR), pero la vela de la IA se realiza en un sistema linux embebido. La electrónica está conectado a la IA de hardware a través de USB, y estoy en busca de consejos sobre lo que el protocolo a utilizar para la transmisión.

Ya hemos intentado tanto la serie-sobre-USB y el uso de HID, y ambos funcionaron suficientemente buena™ en nuestro corto, cerca de la costa de pruebas, pero antes de decidirse por uno u otro, me gustaría saber si hay algún no-trivial, pero, sin embargo, diferencias importantes entre las dos que he perdido a considerar. Para nuestro proyecto de las características más importantes son:

  • Fiabilidad: nuestro robot es debido a navegar de forma autónoma por un par de días. Es de los dos el protocolo inherentemente más seguro "" / con mejor manejo de errores / auto-recuperación de la funcionalidad?
  • Rendimiento: a pesar de que en situaciones de funcionamiento normal de nuestro rendimiento podría bien sea bajo un tamaño de 1 kb/s, bajo ciertas condiciones que se necesitan datos de la cosecha casi en tiempo real. De serie está limitada a 115Kb/s, ¿ HID tienen un límite de velocidad otro de los 1500 kb/s de la USB 1.0 protocolo?

...pero como ya he dicho: soy bastante nuevo para la electrónica/USB, por lo que si siento que me falta un parámetro clave, estaré encantado de escuchar.

Gracias de antemano por su tiempo y experiencia!

3voto

Michael Hardy Puntos 4554

Para determinar qué solución es mejor para el rendimiento, es necesario encontrar el cuello de botella y mejorar hasta que éste no es el cuello de botella hasta que usted no puede quitar nada.

  1. El AVR tiene un máximo fijo de frecuencia, tienen como objetivo hacer de su (optimizado) rutinas de procesamiento en el factor limitante. Si el protocolo de comunicaciones puede manejar esto de la velocidad, entonces no hay nada más que usted puede hacer.
  2. USB de 1.5 Mbps representa el movimiento de 1 byte cada 160 relojes. Eso es un montón de tiempo. para hacer el procesamiento, y si eres de triple buffering de sus datos o el envío de bloques completos te quiero que esto sea aún más rápido. A las 12 Mbps, se obtiene 13 ciclos de reloj por byte, que es mucho más difícil de lograr, y sería un objetivo razonable.
  3. La interfaz entre el USB (e incluso USB sí) va a llevar algo de sobrecarga. El envío de datos ASCII a través de una interfaz serie asíncrona es una gran sobrecarga. Un paralelo FIFO interfaz USB chip será mucho más rápido. Un micro con puertos USB integrados periféricos será mejor aún.

Para obtener más fiabilidad, la necesidad de seguir con lo que funciona y lo que usted sabe mejor. Relajar las especificaciones. Aquí, un probado y verdadero de la interfaz de serie, es una buena opción.


¿Cómo funciona "serie a través de USB" en su aplicación?

Si se trata de un software de controlador en el Linux embebido dispositivo, y un USB <-> paralelo IC (o software de serie en un puerto compatible con USB AVR, que suena más probable, ya que he probado de modo HID), entonces no tendrás problemas con las mayores tasas de bits.

Sin embargo, la verdadera USB <-> de serie de ICs no existen y son populares (el FTDI232R en mayores Arduinos viene a la mente...) que girar a la USB en la lógica-nivel de comunicación serie RS232. Usted no desea o no necesita esta capa para su aplicación. Esto ayudará a reducir su rendimiento y agregar un adicional asincrónica sección delay en su aplicación.

2voto

FlySwat Puntos 173

Hice un proyecto que requiere una interfaz USB (usando PIC micro) hace un par de años, me miró a ambos, pero HID es superior siento:

HID cuenta con un sistema automático de detección y el almacenamiento en búfer de paquetes por windoze como contraposición a seguir teniendo a 'conectar' el puerto serie en cada plug-in (y un número de puerto que depende el puerto usb se utiliza cada vez (LAME)) --programación VB para HID es simple!

Máximo rendimiento es menor para HID, creo que su 64bytes (max escondió tamaño de búfer) en ambos sentidos cada 10ms para USB 1.1 o 1ms para USB 2.0.

1voto

JFW Puntos 168

1) en cuanto a la fiabilidad prefiero protocolos de bajo nivel, como el hardware de serie con manual de manejo de errores. Dispositivo USB podrían desaparecer si el controlador no le gusta algo, y si no reinicializar - no lo vuelva a ver. Por lo que necesita para aprender a reinit USB.

2) en cuanto a la velocidad de la - serie-sobre-USB no está limitado a 115Kb/s en general, en el busto de estar viendo limitación en una de nuestras implementaciones. En general yo esperaría de serie-sobre-USB "ser más eficiente que el HID, HID debería tener más "decoración" de la carga. Aun más rápido es 'parralel-sobre-USB", que se utiliza para bombear a velocidades cercanas a los USB de rendimiento.

1voto

Jordan S. Jones Puntos 1023

No es la serie de perfiles que se limita a 115.200 bps - de hecho, es muy raro que incluso el puerto serie en la actualidad. Si usas algo como un FT245 se puede llegar a velocidades mucho más altas que eso. El problema con el estándar asíncronos (RS-232 estilo) la transferencia es que usted necesita para tener lagunas de vez en cuando a una oportunidad para sincronizar en bytes (o, alternativamente, enviar 0xff de vez en cuando).

En cuanto a la diferencia entre HID USB serie, la serie es mayor mientras HID es el control y la interrupción. Eso es fundamental para el USB, y significa HID (potencialmente) disminuir la latencia, pero la serie tiene una mayor capacidad. No hay mucho más que eso, ni es más fiable, y usted querrá una manera de restablecer el circuito cuando las cosas van mal.

... por cierto, esto suena familiar. Hola Mac! Perdón por mi ausencia de Abbenay ayer.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X