Wie verwende ich eine CAN-Datenbank .dbc mit STM32F unter Verwendung von Keil Uvision?

Ich bin ein Anfänger in der Software- / Firmware-Entwicklung und bin gerade erst von Arduino auf den STM32F105 gekommen. Ich verwende Keil Uvision, um meinen Code zu entwickeln.

Ich habe ein einfaches CAN-Bus-Gateway mit 2 CAN-Transceivern gebaut. Ich habe eine Firmware geschrieben, die bestimmte IDs von einem Kanal zum anderen und umgekehrt weitergibt und bestimmte Daten ändert und auf den anderen Kanal überträgt. Alles funktioniert gut.

Aber ich arbeite jetzt an einem komplexeren Projekt mit mindestens 30 IDs auf jedem Kanal, die jeweils komplexe Daten mit komplexen Multiplikatoren und Bitfeldern usw. haben.

Ich habe eine CAN-Bus-Datenbank in der branchenüblichen Vector .dbc-Datei für beide Netzwerke erstellt.

Aber ich habe Probleme damit, die .dbc-Datei mit meinem Code zu verbinden, ich kann keine Bibliotheken oder sogar Informationen darüber finden, wie das geht.

Ich würde eine andere IDE in Betracht ziehen, aber meine einzige Erfahrung ist mit Keil, daher möchte ich, dass es keine zu große Lernkurve ist.

Meine Frage ist, gibt es Bibliotheken für Keil, mit denen ich eine .dbc-Datei oder eine Dokumentation dazu importieren kann. Oder welche anderen IDEs haben diese Fähigkeit, mit einer .dbc-Datei zu arbeiten?

Antworten (1)

Die Verwendung von CAN dbc besteht darin, dass wir Signale in lesbaren Namen unterscheiden können. Wenn die Nachricht aus Geschwindigkeit besteht, analysiert die Benutzerschnittstelle die Can-Nachricht und zeigt die Daten anders als 0x3C oder eine Hex-ID an. Um Nachrichten zu senden, müssen Sie die DBC in Strukturen mit Hex-ID konvertieren, damit Sie diese in der Firmware verwenden können. Ich sehe keine Anwendung für dbc auf Firmware-Ebene, es dient nur zum einfachen Lesen und Plotten usw. in einem grafischen Frontend.

Eine Sache, die Sie tun können, ist, ein Python- oder Shell-Skript zu schreiben, um eine dbc-Datei in CAN_Msgs.c und CAN_Msgs.h zu konvertieren, die sich einfacher in die Firmware integrieren lassen und aktualisiert werden können.

Bitte korrigiert mich jemand, wenn ich falsch liege

Ich verstehe, was Sie sagen, und Sie haben Recht, aber ich muss meine Frage aktualisieren. Warum ich eine .dbc verwenden möchte, liegt daran, dass einige der Knoten geschlossene Quellen sind, sodass ich die gesendeten Nachrichten-IDs nicht ändern kann. Wenn ich eine Reihe von .dbc-Dateien hätte, die ich erstellt habe, könnte ich ein Programm schreiben und sagen, dass die Nachrichten a, b und c innerhalb von 1.dbc in Nachrichten xyz in 2.dbc konvertiert werden. Der Grund, warum ich .dbc verwende, ist, dass ich viele der Nachrichten, die von bestimmten Knoten gesendet werden, zurückentwickeln muss, damit eine CAN-Datenbank die Eingabe von Werten erleichtert.
Meines Wissens ist keine Bibliothek verfügbar, um Vektor-DBC in Firmware zu importieren. Es werden Optionen in LABView verfügbar sein. Wenn Sie LABView-Hardware verwenden, kann die LABView-Software den Zweck erfüllen.