Enviando datos del protocolo CAN (1Mbps) a través del puerto serie

1

Me gustaría crear una herramienta para ver los datos del protocolo CAN en mi computadora. Los datos del protocolo CAN se capturan utilizando un microcontrolador (placa de descubrimiento STM32F4) y se envían a una PC a través de un puerto serie. Mi requisito es enviar solo ID CAN, DLC, DATOS y marca de tiempo (es decir, a qué hora se recibió una ID CAN en particular).

Tengo algunas preguntas para las que no pude encontrar buenos resultados después de buscar en Internet:

  1. ¿Es posible enviar datos CAN a través del puerto serie utilizando algunas técnicas de compresión para los paquetes de datos ya que el protocolo CAN funciona a 1 Mbps y estoy planeando ejecutar el puerto serie a una velocidad de 115200 baudios? En caso afirmativo, ¿podría proporcionar información o enlaces?

  2. ¿Ha visto algún proyecto similar que envíe datos CAN de 1Mbps a través del puerto serie? En caso afirmativo, ¿podría proporcionar información o enlaces?

pregunta robomon

2 respuestas

2

Supongo que sus dispositivos CAN no enviarán datos todo el tiempo. Implemente un búfer (por ejemplo, un búfer circular) y llénelo mientras recibe datos, luego envíe los datos a través de su puerto serie. Una vez que el búfer se desborda, asegúrate de indicarlo también al host.

La compresión solo tiene sentido cuando conoces tus datos. Si los datos son aleatorios, podría utilizar, por ejemplo, RLE, que es un tipo de codificación bastante simple y no requiere mucho poder de cálculo.

Pero como dije antes, no creo que necesites eso.

    
respondido por el Tom L.
1

Yo sugeriría aumentar la velocidad en serie a 1Mbps, solo compruebe si su reloj se divide de manera uniforme para que no haya errores.

Será difícil comprimir los datos, ya que en algunos paquetes no será posible y en otros lo será (0,0,0,0,0,0,0,0 como datos, por ejemplo).

Si no puede aumentar el Baud, entonces podría confiar en un búfer grande. La CAN no transmitirá todo el tiempo, tendrá tiempos de inactividad, por lo que puede almacenar todo lo que reciba en un FIFO y tener una función que siga enviando el FIFO hasta que esté vacío. añadirlo a la FIFO. Debería ponerse al día si la CAN no está tan ocupada.

    
respondido por el scrafy

Lea otras preguntas en las etiquetas