Importancia de la velocidad en baudios en CDC USB

5

Según tengo entendido, en las comunicaciones de PC a MCU a través de CDC USB, la especificación de una velocidad en baudios solo es necesaria cuando la MCU envía los datos recibidos a un UART. El dispositivo puente necesita la velocidad en baudios para conocer la velocidad de señalización que se utilizará en las líneas TX / RX.

Por ejemplo, el ATMEGA16U2 usado con el ATMEGA328 en Arduino Unos es responsable de recibir paquetes USB desde la PC y traducirlos a señales UART para el ATMEGA328. Entonces puedo ver por qué es importante que ATMEGAU2 y ATMEGA328 acuerden una velocidad de transmisión.

He leído en alguna parte que la PC ignora cualquier configuración de velocidad en baudios utilizada con USB CDC. Y, sin embargo, cuando se configura una velocidad de baudios incorrecta en el terminal serial de la PC, se recibe un alboroto, aunque los datos se reciben a través de USB sin ningún rastro de hedor de UART. El único caso en el que creo que la velocidad en baudios debería importar en una PC es cuando los datos están siendo transmitidos por la PC al puente. Me imagino que la información de la velocidad en baudios se envía junto con los datos para que el puente pueda saber a qué velocidad debe indicar el UART receptor.

¿Qué hay de malo con mis suposiciones? ¿Cuándo y por qué es relevante la velocidad en baudios al final de la PC en las comunicaciones USB CDC?

    
pregunta TisteAndii

1 respuesta

4

El ATmega16U2 utilizado en el Arduino Uno actúa como un convertidor de USB a serie, conectado al ATmega328P que está programando. La configuración de la velocidad en baudios en el dispositivo serie USB CDC hace que el ATmega16U2 establezca su UART a esa velocidad en baudios, por lo que establecer una velocidad en baudios incorrecta evita las comunicaciones adecuadas entre los dos chips.

Si estaba usando un Arduino basado en un ATmega32U4, como el Arduino Leonardo o Arduino Micro, la velocidad en baudios de los CDC USB no importaría, ya que el AVR interpreta los datos "en serie" directamente desde el flujo USB. (De hecho, puede enviar los datos en cualquier dirección a la velocidad que desee; la velocidad en baudios no afecta a las tasas de transferencia).

    
respondido por el duskwuff

Lea otras preguntas en las etiquetas