Tengo una interfaz RS422 configurada entre un Arduino y un dispositivo personalizado. El dispositivo está configurado para transmitir un encabezado de 16 bits, seguido de 66 bytes de datos, a una velocidad en baudios de 460.800 y a 200Hz. Esto no se puede cambiar.
He leído en línea que la serie Arduino puede manejar 460.800 bps sin ningún problema. De hecho, me he comunicado con éxito entre MatLab y Arduino a esa velocidad sin problemas. También he confirmado que el dispositivo funciona, ya que cuando está conectado directamente a la computadora, se lee bien.
Cuando trato de leer los datos con Arduino, no obtengo lo que se espera. El encabezado que se supone que debo obtener es 0x55AA. Sin embargo, estoy obteniendo 0xD56A la mayor parte del tiempo, pero a veces obtengo valores como 0xB5CA. Parece que la segunda mitad de cada byte es correcta, pero no la primera, y tengo algunos bits subiendo y otros bajando cuando no deberían. Debido a esto, cuestiono la validez de los datos que se transmiten.
¿Puede alguien explicarme por qué ocurre esto y qué soluciones puedo intentar remediar, por favor?
Gracias
ACTUALIZACIÓN: He mirado a través de un osciloscopio y puedo ver la forma de onda que sale como 0x55AA, como debería ser. He aumentado el búfer serial de Arduino y he cambiado los tableros, pero el problema persiste.
Logré que funcionara a una velocidad inferior (115.200), pero necesito que esté en 460.800. A esta tasa de baudios más baja, obtendría 0x55AA, pero tan pronto como lo incrementé a 460,800, pierdo estos datos y se convertirá en como se mencionó anteriormente.