Latencia del dispositivo USB

Esta es una pregunta teórica. Me gustaría saber cuál es la latencia más baja que se puede lograr al conectar un microcontrolador con interfaz USB. Considere un host USB (computadora) que envía un byte a un dispositivo USB (microcontrolador) y espera que responda el mismo byte. ¿Cuánto tiempo tomaría esto al menos? ¿Hay algún experimento al respecto? Cualquier información me ayudaría.

Cuando se utiliza la comunicación en serie (RS232), la latencia mínima que se puede lograr es de 1 ms (mediante el uso de un convertidor de USB a serie). Estoy buscando una forma más rápida de comunicarme con mi microcontrolador (en términos de latencia).

Respuestas (3)

USB tiene una estricta arquitectura maestro/esclavo, en la que toda la comunicación es controlada por la PC host.

Cuando el host desea enviar datos al dispositivo, y suponiendo que no haya otros dispositivos en el bus, los datos siempre se pueden enviar de inmediato.

Cuando el host quiere recibir datos del dispositivo, debe solicitarlos.
Si el controlador de host acaba de terminar de recibir un paquete anterior, generalmente solicita el siguiente paquete de inmediato. Pero si el bus ha estado inactivo, el sondeo continuo de nuevos datos desperdiciaría mucha energía, por lo que este sondeo ocurre una vez cada milisegundo (para dispositivos de velocidad máxima).


Para obtener una latencia inferior a 1 ms, tendría que utilizar un protocolo con una arquitectura peer-to-peer, en la que los dispositivos pueden enviar datos sin que el host se lo solicite. Incluso RS-232 simple puede lograr esto, pero deberá reemplazar el convertidor USB con una tarjeta PCI(e).

Con USB realmente depende del punto final utilizado. USB tiene 3 tipos diferentes. Una transferencia de interrupción tendría la menor latencia, pero solo es capaz de realizar transferencias pequeñas. El convertidor de USB a serie generalmente usa transferencias masivas que otorgan transmisión pero no latencia. Los mejores resultados serían si la pila USB se ejecutara directamente en el chip.

Acabo de medir la latencia USB de nuestro dispositivo USB de velocidad completa y obtuve alrededor de 1 ms cuando se conectó directamente a la PC, no es una sorpresa aquí.

Se vuelve interesante cuando conecta un USB 2.0 HS Hub entre la PC y el dispositivo: ¡La latencia se reduce a aproximadamente 0,33 ms en promedio! Mi línea de pensamiento actual es que el dispositivo se parece más a un USB de alta velocidad a la PC (con el HUB traduciendo), y la programación de las transferencias de alta velocidad es diferente. Entonces, agregar un concentrador USB 2.0 de alta velocidad (o USB 3.0 si está disponible) podría ayudarlo un poco.

USB 2.0 HS Hub realiza la traducción de transacciones para dispositivos USB 1.1/2.0 LS/FS. PERO (desafortunadamente) no se produce la misma traducción de USB 3.0 SS a USB 2.0 HS. USB 3 y USB 2 funcionan esencialmente de forma independiente como dos sistemas diferentes, no se produce ninguna traducción. Un concentrador USB 3 SS solo puede funcionar como un concentrador USB 2 HS para dispositivos USB 2.0.