STM32 CAN-Frage

Gast #2756025
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
#2756171
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!
Gast #2756502
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
#2756572
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ß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren