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:
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?
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.
JimmyB
JimmyB
Katte
Jeroen3
Katte