¿Cómo usar una base de datos CAN .dbc con STM32F usando Keil Uvision?

Soy un principiante en el desarrollo de software / firmware, acabo de salir de Arduino y en STM32F105. Estoy usando Keil Uvision para desarrollar mi código.

He construido una puerta de enlace CAN Bus simple usando 2 transceptores CAN. Escribí un firmware que pasa ciertas identificaciones de un canal a otro y viceversa y ciertos datos se cambian y transmiten al otro canal. Todo funciona bien.

Pero ahora estoy trabajando en un proyecto más complejo que involucra al menos 30 ID en cada canal, cada uno con datos complejos con multiplicadores complejos y campos de bits, etc.

Creé una base de datos CAN Bus en el archivo Vector .dbc estándar de la industria para ambas redes.

Pero estoy luchando sobre cómo conectar el archivo .dbc con mi código, no puedo encontrar ninguna biblioteca ni información sobre cómo hacerlo.

Consideraría otro IDE, pero mi única experiencia es con Keil, por lo que me gustaría que no fuera una curva de aprendizaje demasiado grande.

Mi pregunta es, ¿hay alguna biblioteca para Keil que me permita importar un archivo .dbc o alguna documentación sobre cómo hacerlo? ¿O qué otros IDE tienen esa capacidad para trabajar con un archivo .dbc?

Respuestas (1)

El uso de CAN dbc es que podemos diferenciar señales en nombres legibles por humanos. Si el mensaje consiste en velocidad, la interfaz de usuario analiza el mensaje de la lata y muestra los datos además de mostrarlos como 0x3C o algún ID hexadecimal. Para enviar mensajes, debe convertir el dbc en estructuras con identificación hexadecimal para que pueda usarlo en el firmware. No veo ninguna aplicación para dbc en el nivel de firmware, es solo para facilitar la lectura y el trazado, etc. en una interfaz gráfica.

Una cosa que puede hacer es escribir un script de python o shell para convertir un archivo dbc en CAN_Msgs.c y CAN_Msgs.h, que será más fácil de incorporar en el firmware y se puede actualizar.

Alguien por favor corrijame si me equivoco

Veo lo que dices y tienes razón, sin embargo, necesito actualizar mi pregunta. La razón por la que quiero usar un .dbc es porque algunos de los nodos son de código cerrado, por lo que no puedo cambiar las ID de los mensajes que se envían. Si tuviera una cantidad de archivos .dbc que creé, podría escribir un programa y decir convertir los mensajes a, b y c dentro de 1.dbc a mensajes xyz en 2.dbc. La razón por la que estoy usando .dbc es porque tengo que aplicar ingeniería inversa a muchos de los mensajes que se envían desde ciertos nodos, por lo que una base de datos CAN facilita la entrada de valores.
Que yo sepa, no hay una biblioteca disponible para importar vector dbc al firmware. Habrá opciones disponibles en LABView. Si está utilizando hardware LABView, el software LABView puede hacer el truco.