MSP430 Módulo USB y detección de velocidad de transmisión

1

Estoy trabajando en un proyecto que utiliza el módulo USB integrado en el MSP430F5529, específicamente usando la placa de desarrollo MSP-EXP430F5529LP de TI. Estoy usando la API USB provista en MSPWare.

El host se comunica con mi dispositivo a través de MODBUS, y estoy guardando la velocidad de transmisión actual en NVM. Generalmente, para cambiar la velocidad en baudios, escribo un valor en un registro MODBUS. El dispositivo lee este valor y configura sus UART en consecuencia, para que pueda actuar como un puente entre el USB y un dispositivo TTL.

El problema es que no todas las implementaciones de MODBUS utilizarán este registro MODBUS como configuración de velocidad en baudios, por lo que escribir en esa dirección puede no tener la intención de cambiar la velocidad en baudios. Por lo tanto, este método tiene que ir.

Esperaba poder detectar la velocidad en baudios que se utiliza para comunicarse a través de la señal USB. El primer pensamiento fue utilizar un temporizador para medir el ancho del bit de inicio y usarlo para calcular la velocidad en baudios. El problema con esto es que 1) necesito enviar un byte ficticio completo a través de USB a mi dispositivo para detectar la velocidad en baudios, antes de iniciar la comunicación normal. El otro problema es que la forma en que se construye la API de MSP430 USB, no parece que tenga acceso a los bits individuales a medida que entran, sino que el mensaje se almacena en un búfer que se proporciona una vez que se completa el mensaje. No podría cronometrar el bit de inicio en este evento.

No creo que haya una manera de simplemente "saber" cuál es la velocidad en baudios del host sin enviar datos, ya que esa información (que yo sepa) no se comunica a través del bus. Por favor, corrígeme si me equivoco.

¿Cómo se puede hacer para determinar la velocidad en baudios de una conexión USB, preferiblemente sin enviar primero un byte ficticio? No estoy completamente convencido de que esto sea posible, parece estar pidiendo lo imposible, pero pensé que alguien aquí podría darme una respuesta definitiva.

He revisado los documentos de TI que describen el módulo USB, la API y su aplicación y aún no he encontrado una solución a este problema.

    
pregunta DerStrom8

1 respuesta

3

La velocidad en baudios de la conexión USB no tiene relación con la velocidad en baudios del lado UART de un convertidor de USB a UART. Independientemente de la velocidad en baudios solicitada por la aplicación, los datos que envía la aplicación se empaquetarán en paquetes y se enviarán a través de la conexión USB a la velocidad a la que esté configurado el enlace USB (según las capacidades de velocidad del host y del dispositivo). Depende del dispositivo establecer la velocidad en baudios de su interfaz UART a la solicitada por la aplicación. La velocidad en baudios solicitada debe aparecer como uno de los mensajes SET de configuración enviados por el host.

Esta nota de aplicación es para una plataforma diferente, pero tiene información sobre cómo hacerlo: enlace

Tendrá que buscar en la documentación de su API para ver cómo (o si) se exponen estos datos de configuración. Si no está expuesto, es posible que tenga que cavar a través de las bibliotecas para encontrar un lugar donde pueda interceptar ese mensaje SET y actuar de forma adecuada.

    
respondido por el ajb

Lea otras preguntas en las etiquetas