Forum: Mikrocontroller und Digitale Elektronik STM32 CAN-Frage


von Bernd (Gast)


Lesenswert?

Hallo!

Ich verwende den CAN Treiber aus der ST-Lib und möchte den CAN Filter 
konfigurieren, aber ich weiß nicht ganz wie das funktionieren soll.
Das Filter soll so konfiguriert werden, dass alle Standard-IDs gefiltert 
werden. Weiß jemand wie die Konfiguration aussehen muss?

Die Struktur sieht folgendermaßen aus:
1
CAN_FilterInitStructure.CAN_FilterNumber = 0;
2
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
3
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
4
CAN_FilterInitStructure.CAN_FilterIdHigh = ???;
5
CAN_FilterInitStructure.CAN_FilterIdLow = ??? ;
6
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = ??? ;
7
CAN_FilterInitStructure.CAN_FilterMaskIdLow = ??? ;
8
CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0;
9
CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
10
CAN_FilterInit(&CAN_FilterInitStructure);

Danke und lg,
Bernd

von Alex Z. (alexz)


Lesenswert?

Hallo,

willst du bewusst die extended ID's rausfiltern? Ansonsten kannst du ja 
die Filterung einfach abstellen.

MfG

von Bernd (Gast)


Lesenswert?

Hallo!

Ja, ich möchte bewusst die STANDARD-IDs filtern und die Extended sollten 
nicht gefiltert werden.

von Alex Z. (alexz)


Lesenswert?

Also ich glaube dann is die obige Struct der falsche Ansatz. Ich denke 
du musst die Filter auf Std ID umstellen und dort irgendwie mit dem 
mask-mode alles durchlassen.
Habe bisher immer nur einzelne IDs zur Filterung eingestellt, kenn mich 
damit leider auch nicht so gut aus!

von Alex Z. (alexz)


Lesenswert?

bzw. äh, was soll jetz empfangen werden? Standard oder Extended? Bin 
etwas verwirrt grade

von Bernd (Gast)


Lesenswert?

Es sollen nur die Extended IDs empfangen werden, d.h. die Standard IDs 
sollen gefiltert werden.

Einzelne IDs zu filtern ist kein Problem, aber wie ich den gesamten 
Standard ID Bereich filtern kann fällt mir einfach nicht ein.

lg,
Bernd

von Alex Z. (alexz)


Lesenswert?

Was hast du denn schon ausprobiert? Die Mask schonmal mit lauter '1' 
gefüllt?
Wenn ich das richtig verstanden habe, heißt das, dass kein Bit 
übereinstimmen muss um durchzukommen.


So etwa stell ich mir das vor:

Filterbank:   ID     11100000000
              Mask   00011111111


Messages:     ID     11111111111 <- kommt durch
              ID     11101010101 <- kommt durch
              ID     10100000000 <- kommt nicht durch

Der '1er' ist hier das "don't care".

Gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.