Hey! Ich versuche gerade, den CAN Bus auf einem STM8S Board zum Laufen zu bekommen, scheitere aber aus irgendeinem Grund an der Filterung. Ich verwende die ST Standard Library und mein Ziel ist, nur Nachrichten mit der ID 0xAED zu empfangen. Mein Protokoll nutzt das Extended ID Format. Mein Code-Schnipsel aus der CAN-Initalisierung sieht folgendermaßen aus: /* CAN filter init */ CAN_FilterNumber = CAN_FilterNumber_0; CAN_FilterActivation = ENABLE; CAN_FilterMode = CAN_FilterMode_IdMask; CAN_FilterScale = CAN_FilterScale_32Bit; CAN_FilterID1=0x00AED100; CAN_FilterID2=0; CAN_FilterID3=0; CAN_FilterID4=0; CAN_FilterIDMask1=0x00FFF000; CAN_FilterIDMask2=0; CAN_FilterIDMask3=0; CAN_FilterIDMask4=0; CAN_FilterInit(CAN_FilterNumber, CAN_FilterActivation, CAN_FilterMode, CAN_FilterScale,CAN_FilterID1, CAN_FilterID2, CAN_FilterID3, CAN_FilterID4,CAN_FilterIDMask1, CAN_FilterIDMask2, CAN_FilterIDMask3, CAN_FilterIDMask4); Wahrscheinlich ist es nur ein trivialer Fehler, aber ich bin recht neu auf dem Gebiet und habe leider noch wenig Erfahrung. Danke! Mike
Bin jetzt soweit, dass ich die ersten 16 bit filtern kann. Mein Fehler war, dass ich die IDE und RTR nicht in die Adresse miteingerechnet habe. Mein Code sieht jetzt wie folgt aus: /* CAN filter init */ CAN_FilterNumber = CAN_FilterNumber_2; CAN_FilterActivation = ENABLE; CAN_FilterMode = CAN_FilterMode_IdMask; CAN_FilterScale = CAN_FilterScale_32Bit; CAN_FilterID1=0xc7; CAN_FilterID2=0xed; CAN_FilterID3=0x02; CAN_FilterID4=0x02; CAN_FilterIDMask1=0xFF; CAN_FilterIDMask2=0xE7; CAN_FilterIDMask3=0xE0; CAN_FilterIDMask4=0x00; CAN_FilterInit(CAN_FilterNumber, CAN_FilterActivation, CAN_FilterMode, CAN_FilterScale,CAN_FilterID1, CAN_FilterID2, CAN_FilterID3, CAN_FilterID4,CAN_FilterIDMask1, CAN_FilterIDMask2, CAN_FilterIDMask3, CAN_FilterIDMask4); Für die Adresse 0x18FEC101 kann ich nun die 0x18FE, also die vorderen 16bit filtern. Aus irgendeinem Grund schaffe ich es jedoch nicht, auch den hinteren Teil zu filtern. Gibt es vielleicht hierzu irgendwelche Ideen oder Erfahrungen?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.