Welcher STM32 eignet sich am besten zum Aufzeichnen eines CAN-Netzwerks? [geschlossen]

Ich möchte ein Projekt basierend auf STM32 erstellen, das mit einem CAN-Netzwerk verbunden ist. Das CAN-Netzwerk hat eine Baudrate von 250 kbit/s.

In diesem Netzwerk muss ich:

  • Protokollnachrichten von 127 Knoten mit IDs zwischen 0x381 und 0x3FF (jeder Knoten überträgt eine Nachricht pro Sekunde).
  • Senden Sie Nachrichten an Knoten mit einer ID zwischen 0x581 und 0x5FF.
  • Erhalten Sie Antworten auf diese Nachrichten mit IDs zwischen 0x601 und 0x67F.

Ich dachte an die Verwendung eines STM32 mit zwei CAN-Kanälen. Meine Absicht ist es, zwei verschiedene Filter für IDs einzurichten und Unterbrechungen zu begrenzen. Ist das eine gute Wahl? Geht das mit nur einem CAN?

Ich habe Zweifel an der Art und der Geschwindigkeit des zu verwendenden Prozessors. Kann ein STM32F1 ausreichen? Oder brauche ich ein F4?

"Kann ein STM32F1 ausreichen? Oder brauche ich einen F4?" - Wenn Sie Daten nur mit maximal 250 kbps lesen und an einen Speicher oder ein anderes Gerät weiterleiten müssen, verfügt der F1 über ausreichend Leistung. Aber wir können das nicht sagen, wenn Sie nicht offenlegen, was die MCU gleichzeitig tun muss.
Sie können mehrere Filter für CAN-Nachrichten konfigurieren. Wenn sie nicht ausreichen, haben Sie immer noch die Möglichkeit, in der Software zu filtern.
Ich hatte mehrere Filter vergessen. Ich werde das Datenblatt noch einmal lesen :).
Welche spezielle Funktion suchen Sie in einem CAN-Logger, die vorhandene CAN-Logger (mit Analysesoftware) nicht bieten?
Ich habe die Frage vereinfacht, aber es ist nicht nur ein CAN-Netzwerkanalysator. Ich muss Daten sammeln und einige einfache Aktionen ausführen.

Antworten (1)

Der kürzeste CAN-Frame beträgt 55 Bitzeiten, sodass Sie im schlimmsten Fall bei einem vollständig gesättigten Bus, der aus einem Datenbyte-Frame besteht (was für einen CAN-Bus mit irgendeiner brauchbaren Leistung nicht wirklich realistisch ist), einen Frame erhalten alle 220 µS (55 / 250000). Der billigste ST-Mikrocontroller mit CAN-Controller ist der STM32F042 ($ 1) und dieser hat eine maximale CPU-Frequenz von 48 MHz. Mit diesem Gerät hätten Sie also im schlimmsten Fall ungefähr 10560 (48 * 220) Anweisungen pro Nachricht.

In Bezug auf den Umgang mit dem CAN-Controller und die Verarbeitung von CAN-Nachrichten ist dies eine beträchtliche Menge an Rechenleistung - genug, um die Nachrichten in einem EEPROM oder auf einer SD-Karte abzulegen, auf denen bei Bedarf viel Nachbearbeitung durchgeführt wird. Wenn das wirklich alles ist, was Ihr Gerät tut, würde ich mir darüber keine allzu großen Sorgen machen, und jedes der STM32-Geräte wird in Ordnung sein. Wenn überhaupt, wird RAM wahrscheinlich eher ein Problem sein, wenn Sie Nachrichten usw. puffern müssen.

In der Praxis bezweifle ich, dass der Bus annähernd voll ausgelastet ist (obwohl nur Sie das wissen), und wenn Sie die Hardwarefilter verwenden können, um einen Teil der Nachrichten zu ignorieren, gewinnen Sie einfach immer mehr Befehlszyklen pro Nachricht.

Sie gehen davon aus, dass jede Anweisung genau einen Zyklus dauert. Dies gilt nicht für Befehle, die den Speicher berühren (siehe beispielsweise das technische Referenzhandbuch zum Cortex-M3 , gilt auch für M0) oder Arithmetik wie Multiplizieren und Dividieren. Also würde ich konservativ sein und diese Zahl mindestens durch zwei oder vier teilen.