Hallo,
Ich bin grad dabei eine CAN Schnittstelle zu implementieren auf meinem
STM32 und habe hier die vorgefertigten Funktionen von STM genommen.
Leider bekomme ich aber die Filterkonfiguration nicht vernünftig hin,
ich kann hier nur 1 Filter konfigurieren, der 2. funktioniert leider
nicht...
Vielleicht ist einem das Problem bekannt und er kann mir hier Ratschläge
geben...
Die Konfiguration sieht wie folgt aus:
1 | FDCAN_FilterTypeDef canconfigfilter;
|
2 |
|
3 | canconfigfilter.IdType = FDCAN_STANDARD_ID;
|
4 | canconfigfilter.FilterIndex = 0;
|
5 | canconfigfilter.FilterType = FDCAN_FILTER_DUAL;
|
6 | canconfigfilter.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
|
7 | canconfigfilter.FilterID1 = 0x4B6;
|
8 | canconfigfilter.FilterID2 = 0x1B1;
|
9 | if(HAL_FDCAN_ConfigFilter(&hfdcan1, &canconfigfilter) != HAL_OK)
|
10 | {
|
11 | Error_Handler();
|
12 | }
|
13 |
|
14 | canconfigfilter.IdType = FDCAN_STANDARD_ID;
|
15 | canconfigfilter.FilterIndex = 1;
|
16 | canconfigfilter.FilterType = FDCAN_FILTER_DUAL;
|
17 | canconfigfilter.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
|
18 | canconfigfilter.FilterID1 = 0x4B1;
|
19 | canconfigfilter.FilterID2 = 0x7FF;
|
20 | if(HAL_FDCAN_ConfigFilter(&hfdcan1, &canconfigfilter) != HAL_OK)
|
21 | {
|
22 | Error_Handler();
|
23 | }
|
24 |
|
25 | if(HAL_FDCAN_ConfigGlobalFilter(&hfdcan1, FDCAN_REJECT, FDCAN_REJECT, FDCAN_REJECT_REMOTE, FDCAN_REJECT_REMOTE) != HAL_OK)
|
26 | {
|
27 | Error_Handler();
|
28 | }
|
0x4B6 + 0x1B1 werden erkannt und geben einen Interrupt, 0x4B1 + 0x7FF
werden leider nicht erkannt. Die Funktion "HAL_FDCAN_ConfigFilter()"
gibt aber auch keinen Fehler.
Danke.
Grüße