Hallo, ich nutze vom STM32 den CAN-Bus, was soweit auch gut funktioniert. Ich habe die Schnittstelle mit einem Filter eingerichtet, so das ich nur Nachrichten mit der ID 0x581 empfange. Ist es möglich, zwei Filter einzurichten, so das ich nur Nachrichten mit der ID 0x701 und 0x581 empfange? Ich möchte die Nachrichten zwischen 0x581 und 0x701 nicht empfangen. Vielen Dank und ein schönes Wochenende
Ja.
und wie?
Guten Morgen, da A. K. sein Wissen ja nicht mit uns teilen will oder kann, habe ich in einem anderen Forum den gewünschten Tipp bekommen. Ich möchte aber trotzdem für die Nachwelt kurz dokumentieren wie man zwei oder mehr Filter beim CAN einrichtet. Ob meine Lösung jetzt die Beste ist, kann ich nicht sagen, sie funktioniert aber soweit. Letztendlich war die Lösung recht leicht, nur manchmal sieht man halt den Wald vor lauter Bäumen nicht. Wie man Filter einrichtet ist im folgenden Beitrag gut beschrieben: Beitrag "STM32 - CAN-Filter - ST Library v3.40" Die Lösung sieht demnach wie folgt aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
Laut Dokumentation kann man so bis zu 14 verschiedene Filter einstellen. Frank
Gast
#2519263
Also wenn dich die zwei Nachrichten mit den IDs 0x781 und 0x501 im Empfangsbuffer stören, hätte man das ganze auch mit nur einem Filter geschafft. Gruß, TManiac
Hallo TManiac, vielen Dank für deine Antwort. Es verhält sich genau umgekehrt. Ich möchte nur die Nachrichten mit den genannten IDs empfangen. Alles andere möchte ich ausblenden. Wenn du noch eine bessere Lösung hast, würde ich mich freuen wenn du diese kurz erklärt. Gruß Frank
Hallo Frank, wenn du ausschließlich Nachrichten mit den StandardIds 0x701 und 0x581 empfangen möchtest, dann kannst du das auch mit einem Filter realisieren, indem du den IdList-Modus verwendest:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
Somit kannst du explizit zwei IDs angeben, die der Filter akzeptieren soll. Alle anderen IDs werden abgewiesen. Gruß, Matthias
Hallo Matthias, ich bin erst jetzt dazu gekommen deine Lösung auszuprobieren. Vorweg noch einmal vielen Dank dafür. Der von mir oben beschriebene Ansatz funktionierte doch nicht richtig. Deine Lösung funktioniert wie gewünscht, es kommen nur die genannten Nachrichten durch. Vielen Dank. Gruß Frank
Gast
#6481101
Hallo, ich würde gern den Thread nochmal hochholen auch wenn er schon älter ist. Ich möchte ebenfalls nur zwei IDs empfangen. Ich habe den Code von Matthias an die "neue" HAL Lib angepasst:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
Jedoch empfange ich keine der beiden ID's... Hat jemand ne Idee?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.