
Un miembro de nuestra colaboración científica diseñó una caja de adquisición de datos con 4 canales a 1 kHz que sincroniza la hora con el GPS. Utiliza USB 2.0 para que la caja se comunique con una computadora, y la interfaz serial COM con una velocidad de 115200 baudios se usa para transferir datos a la computadora en formato ASCII. El fabricante lo llama "serie virtual" a través de USB 2.0. En consecuencia, todas las configuraciones como paridad, control de flujo de trabajo, etc... no importan en la interfaz serie, sino que sólo la velocidad en baudios debe establecerse en 115200 para que esto funcione.
Mi pregunta es:¿Este número 115200 realmente representa la cantidad de bytes por segundo que se pueden transferir al máximo a través de este puerto, creando una limitación de lo que puede hacer el puerto USB 2.0? ¿O este número realmente no importa y la tasa de transferencia real es aproximadamente480 Mbits/s como estándar USB 2.0?
¿Cuáles son los factores que deciden esto?
¿Por qué preguntas?Actualmente, la caja utiliza comunicación serie unidireccional para entregar datos, lo que causa problemas deperder bytes algunas veces por sobrecarga de la computadora. La solución confiable sería hacer que la conexión sea bidireccional con sumas de verificación y solicitar paquetes y volver a preguntar cuando los datos estén dañados. Sin embargo, si estamos realmente limitados a 115 kB/s, esto significa que no podemos transferir 4 canales a 1 kHz.
Si necesita alguna información adicional, por favor pregunte.
Respuesta1
Serie sobre USB 2.0. ¿Es realmente más rápido que el serial?
Tu terminología es descuidada.
"Serie a través de USB 2.0"podría referirse al uso de adaptadores USB a RS232, o consultarCDC/ACM.
Su última referencia a"de serie"presumiblemente es a RS-232.
Mi pregunta es: ¿Este número 115200 realmente representa la cantidad de bytes por segundo que se pueden transferir al máximo a través de este puerto, creando una limitación de lo que puede hacer el puerto USB 2.0?
115200 es la velocidad en baudios, que (en este caso) es bits por segundo (y no bytes por segundo).
Dado que se trata de un canal asíncrono, cada carácter/byte se encuadra individualmente con un bit de inicio y 1/1,5/2 bits de parada. Por lo tanto, hay una sobrecarga de encuadre del 25% (asumiendo la configuración típica de 8N1).
USB es un bus y puede manejar más de un canal de datos.
Los datos RS-232 asíncronos se empaquetan para su transmisión a través de USB síncrono y comparten el ancho de banda total de los 480 Mbs del USB 2.0. (Aunque el típico adaptador USB a RS232 utiliza sólo USB 1.1.)
He sido testigo de la transmisión simultánea de cuatro canales RS-232 de 115200 baudios a través de una única conexión USB 1.1 sin ningún problema.
¿O este número realmente no importa y la velocidad de transferencia real es de aproximadamente 480 Mbits/s como USB 2.0 estándar?
El número sí importa porque es la velocidad en baudios configurada para ese canal.
¿Cuáles son los factores que deciden esto?
La velocidad máxima en baudios suele estar limitada por el hardware y el software de soporte.
¿Por qué preguntas? Actualmente, la caja utiliza comunicación serial unidireccional para entregar datos, lo que causa problemas de pérdida de bytes algunas veces debido a la sobrecarga de la computadora.
La pérdida de datos parece ser un caso de desbordamiento del búfer del sistema. Los datos llegan más rápido de lo que el programa de aplicación los lee/procesa. No se emplea ningún control de flujo en el canal de datos para evitar el desbordamiento.