Forum: Mikrocontroller und Digitale Elektronik SJA1000 und Bus-off


von Rolf Magnus (Gast)


Lesenswert?

Hallo zusammen,

ich habe hier ein Problem mit dem SJA1000. Meistens funktioniert alles 
einwandfrei, aber ab und zu läßt sich der Controller nicht zum Senden 
überreden. Beim ersten Sendeversuch geht er gleich auf "bus off". Das 
ist auch unabhänging davon, ob andere Busteilnehmer angeschlossen sind. 
Nach einer Neuinitialisierung passiert beim nächsten Sendeversuch wieder 
dasselbe. Nur von der Stromversorgung ab- und wieder anklemmen bringt 
was. Danach tut er dann meistens, als sei nichts gewesen. Wenn er einmal 
funktioniert, arbeitet er auch tagelang ohne einen Fehler.
Woran kann das liegen?

von Gast (Gast)


Lesenswert?

Schwer zu sagen. Eventuell fehlende Terminierung. Wie sieht denn Deine 
Schaltung so aus?

von Blob! (Gast)


Lesenswert?

wenn er in bus-off schält, liegt es meist an einem topologischen Fehler 
des busses, kontrolliere mal Deine Terminierungswiderstände und schaue 
(mit dem Oszi), wie das Signal auf dem Bus liegt.

Könnte sein dass Deine Busauslastung zu groß ist, mit einer hohen COB-ID 
kann sich der controller (bei hoher Busauslastung) nicht durchsetzten 
und der Sendeversuch geht schief - der daraus resultierende bus-off 
lässt sich dann i.d.R. nur mit einer Neuinitialisierung beheben!

Oder aber Du hast ein Hardwarefehler, Stecker und Kabel kontrollieren.

Ein Softwareproblem (falsch initialisierte Baudrate, Tseg1, Tseg2, 
Synchronization Jumpwidth...) würde ich ausschließen da Du ja sagst, 
dass das device z.T. auch tagelang ohne Fehler am bus läuft!

von Rolf Magnus (Gast)


Lesenswert?

Danke erstmal für die Antworten.

> Schwer zu sagen.

Jo, das ist mein Problem.

> Eventuell fehlende Terminierung.

Nein, die ist in Ordnung.

> Wie sieht denn Deine Schaltung so aus?

Der Controller steckt in einem Komplettgerät, das von einem Zulieferer 
kommt. Außer Kabel, Terminierung und einem Peak-Adapter zum mithören 
hängt nix dran. Ich habe auch verschiedene Kabel ausprobiert. Immer 
dasselbe Ergebnis. Das Problem ist auch schon bei mehreren Geräten, die 
komplett unterschiedlich verkabelt sind, aufgetreten. Ein defektes Gerät 
oder falsche Verkabelung kann also ausgeschlossen werden.

> Ein Softwareproblem (falsch initialisierte Baudrate, Tseg1, Tseg2,
> Synchronization Jumpwidth...) würde ich ausschließen da Du ja sagst,
> dass das device z.T. auch tagelang ohne Fehler am bus läuft!

Ja. Es läuft aber, nachdem der Fehler aufgetreten ist, auch nach dem 
Aus- und Einschalten der Versorgung problemlos, ohne daß ich den Bus 
dabei auch nur berührt hätte. Keine Fehler - nichts. Das Verhalten ist 
übrigens auch bei komplett getrenntem Bus (keine Terminierung, kein 
anderer Busteilnehmer) gegeben. Meistens geht er - wie ich es erwarten 
würde - auf "error passive" und läuft dann nach Anschließen des Busses 
problemlos an, manchmal geht er aber auch hier auf "bus off" und ist 
dann generell nicht mehr zur Mitarbeit zu überreden.

von eProfi (Gast)


Lesenswert?

Vielleicht liegt es auch am Bus-Treiber-IC: der hat ein "ChipSelect", 
ist das in Ordnung?

Kannst Du den SJA noch ansprechen, wenn der Fehler da ist?


Latch-Up?
Wie sind die Kabel angeschlossen? CAN-Gnd verbunden?
Masseschleife (Querströme) über den PEAK?

von Rolf Magnus (Gast)


Lesenswert?

> Vielleicht liegt es auch am Bus-Treiber-IC: der hat ein "ChipSelect",
> ist das in Ordnung?

Sieht eigentlich alles ok aus.

> Kannst Du den SJA noch ansprechen, wenn der Fehler da ist?

Ja, ansprechen geht noch. Es zeigt sich, daß er im Reset-Modus ist. Ich 
kann ihn auch wie im Datenblatt beschrieben wieder zurück in den 
normalen Modus schalten, aber sobald ich eine Botschaft senden will, ist 
er gleich wieder im Reset-Mode.

> Latch-Up?

Erst beim ersten Sendeversuch? Oder könnte schon vorher was passiert 
sein, das sich erst beim Senden auswirkt? Aber dann immer mit dem 
gleichen Ergebnis?

> Wie sind die Kabel angeschlossen? CAN-Gnd verbunden?

Nein. Es sind aber noch Ethernet und ein serieller Port angeschlossen, 
aber keins direkt mit dem PC. Ich hab jetzt mal versucht, was passiert, 
wenn ich vom Gerät alles außer CAN und Stromversorgung abtrenne und vom 
PC alles außer CAN (ist ein Laptop). Das Ergebnis ist dasselbe.
Ich werde wohl mal mit einem Oszi messen müssen, was auf dem CAN 
passiert. Vielleicht passiert ja schon beim Transceiver was.

Wann genau kommt es eigentlich normalerweise zum bus off? Bei fehlender 
Gegenstation oder Terminierung ja nicht. Beim Kurzschluß auf dem CAN 
aber schon.

von Markus (Gast)


Lesenswert?

> Beim Kurzschluß auf dem CAN aber schon.
CAN-H und CAN-L bei einem Teilnehmer vertauscht angeschlossen?

von Rolf Magnus (Gast)


Lesenswert?

Hmm, ich habe gerade festgestellt, daß der Controller korrekt sendet, 
wenn ich ihm eine Botschaft sende. Er funktioniert also dann richtig, 
wenn er wenigstens eine Botschaft empfangen hat, bevor er das erste mal 
sendet.

von Canalyser (Gast)


Lesenswert?

Hey,

hatte mit einem anderen  Transceiver dasselbe Problem.

Bei mir war der Transmit-Pin am Controller beim Starten so gesetzt, dass 
die CAN-TxD kurz "gezappelt" hat. Dieses Zappeln hat dazu geführt, das 
der Transceiver eine ungültige Message erkannt hat (eigentlich auch 
korrekt). Als ich dann die Ports richtig gesetzt hatte war das Problem 
weg.

Vielleicht ist es bei dir ähnlich. Einfach mal mit dem Oszi beim 
Einschalten (oder Reset) den TxD des CAN-Controllers anschauen - da darf 
sich nur was tun wenn auch gesendet werden soll.

Hoffe es hilft!!!

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.