Forum: Mikrocontroller und Digitale Elektronik STM32: Implementierung CAN-Filter


von Dominic (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich möchte einen Filter für zwei CAN-IDs implementieren und bin mir aber 
um deren Funktion nicht ganz sicher. Im Anhang habe ich die hoffentlich 
dafür notwendigen Dokumente angefügt.

Kurz zur Planung:
Filtermodus: Liste
Filterskalierung: 16 Bit
Filterbank: 0
Filternummer: 0 und 1 (aber wie weise ich beide Nummern zu?)

Ist meine Implementation so korrekt? Und sind die IDs left align?
1
  CAN_FilterConfig.BankNumber = 0; 
2
  CAN_FilterConfig.FilterNumber = 0; // aber was ist mit 1?!?!?
3
  CAN_FilterConfig.FilterMode = CAN_FILTERMODE_IDLIST;
4
  CAN_FilterConfig.FilterScale = CAN_FILTERSCALE_16BIT;
5
6
  /* CAN_FxR1 Konfiguration */
7
  CAN_FilterConfig.FilterIdHigh = (0x701<<5);
8
  CAN_FilterConfig.FilterIdLow = (0x581<<5);;
9
  
10
  CAN_FilterConfig.FilterFIFOAssignment = CAN_FILTER_FIFO0;
11
  CAN_FilterConfig.FilterActivation = ENABLE;
12
13
  if (HAL_CAN_ConfigFilter(&hcan, &CAN_FilterConfig) != HAL_OK){
14
    Error_Handler();
15
  }

Vielen Dank :)

von Dominic (Gast)


Angehängte Dateien:

Lesenswert?

(zusätzlicher Anhang wegen Fehler)

von Christopher J. (christopher_j23)


Lesenswert?

Das beste und tollste was man sich als Embedded-Programmierer vorstellen 
kann ist die Vermählung von STs HAL mit "Magic Numbers". Na herzlichen 
Glückwusch.

von Dr. Sommer (Gast)


Lesenswert?

Das HAL-API für die Filter ist ziemlich dämlich. Man muss erst reverse 
engineeren wie es intern funktioniert um dann die Eingaben entsprechend 
anzupassen. Insbesondere die ID-Angabe wird dank HAL komplizierter als 
direkter Register-Zugriff!

Daher die Empfehlung: Konfiguriere die Filter direkt per Register. Die 
sind wenigstens komplett dokumentiert.

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.