Hallo zusammen, mein CAN-Bus-Setup bringt mich zur Verzweiflung. Ich versuche aktuell, in einen bereits funktionierenden Bus mit drei Teilnehmern einen kleinen Linuxrechner einzubinden. Den Linuxrechner habe ich über mini-PCIe mit einer CAN-Karte mit der Bezeichnung VDB-120 erweitert. Solange ich den Rechner im ausgeschalteten Zustand an den CAN-Bus anstecke, läuft der Bus wie erhofft. Ich gehe daher davon aus, dass kein Problem mit den Abschlusswiderständen vorliegt. Sobald ich den Rechner hochfahre, treten nach wenigen Sekunden Probleme auf, obwohl gemessen an der CAN-Karte ohne weitere Teilnehmer, lediglich der Spannungspegel am CAN-L- und CAN-H-Pin von 0 V auf 2.2 V wechselt, also auf ein rezessives Spannungslevel. Auch mit fertig durchgeführtem Bootvorgang und vermeintlich korrekt konfigurierter Karte habe ich es nicht geschafft, Daten physikalisch zu senden, obwohl die Daten in der Konsole mit ifconfig als erfolgreich versendet angezeigt werden. Überprüft habe ich das sowohl über ein CANCaseXL von Vector als auch über ein Oszilloskop, wobei bei beiden keinerlei Veränderung zum nicht sendenden Zustand festgestellt wird. Den auftretenden Fehler, der scheinbar von den schon vorhandenen Teilnehmern im Bus ausgegeben wird, habe ich über ein Vector CANCaseXL geloggt und lautet ECC 11110011, Code: Other Type of Error, Segment: Tolerate Dominant Bits. Meine Recherche zu diesem Fehlercode hat keine hilfreichen Ergebnisse geliefert. Scheinbar handelt es sich dabei um parallel auftretende Fehler. Hat jemand hier eine Idee, wo mein Fehler stecken könnte oder was ich noch versuchen kann? Oder ist möglicherweise einfach die CAN-Karte beschädigt? Vielen Dank schon mal für die Hilfe! Martin
Eventuell erlaubt der aktive Rechner deiner Karte eine Antwort zu Pakete zu senden. Die labern dir dann auf den Bus und deine Teilnehmer werden sich fragen wer er ist. Wir hahen zwar nicht die VDB-120 (scheint mir eine M2 zu sein) aber unsere Karte hat sowas wie ein "ACK" gesendet, was für uns am CAN gar kein Sinn machte. Wir haben dann die Karte auf Passivmodus geschaltet damit dieser nur noch als Sniffer funktioniert. Kartentyp muss ich in der Entwicklung nachfragen.
Tatsächlich habe ich es inzwischen geschafft, die Karte mit einem alten Treiber, der noch auf der Seite der Firma innodisk für die scheinbar baugleiche Karte EMUC-B201 verfügbar ist, als SocketCAN-Schnittstelle zum empfangen und senden zu benutzen. Leider zerstört die Karte während des Bootens immer noch den Datenverkehr auf dem Bus, ohne dass ich eine wirkliche Möglichkeit habe, vorher die Einstellungen zu verändern. Ich schaue noch einmal nach, vielleicht lässt sich über die Kernel-Module für die PCI-Schnittstellen noch etwas einstellen. Danke für die Tipps, solche Denkanstöße sind immer hilfreich! Martin
Was sagt denn da der CANalyzer? Es sollte möglich sein, den Zeitpunkt zu ermitteln, wann wer den Bus stört. Ob man es der SW allerdings abgewöhnen kann, ist eine andere Frage.
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.