Praktisches Problem mit CAN-Bus

Gast #539401
Lesenswert?

Hallo

Ich habe eine praktisches CAN Problem. Leider finde ich seit Tagen keine 
Lösung dazu.

Ich habe einen AT90CAN128 mit dem Transceiver PCA82C251. Als Busleitung 
benutze ich 2 dünne Kabel die an beiden Enden über 120 Ohm miteinander 
verbunden sind.

Da ich nicht genau sagen kann, ob der andere am Bus angeschlossene 
Knoten funktioniert, sage ich einfach mal der PCA82C251 ist der einzige 
Knoten am Bus.

Wenn ich jetzt eine Nachricht senden möchte, bemerkt der AT90CAN sofort 
einen Biterror und einen Stufferror und schaltet auf Busoff.

Ich habe auch schon einen 60 Ohm Widerstand parallel zu einem 100pF 
direkt zwischen CANL und CANH probiert, so wie es zu Testzwecken im 
Datenblatt steht. Auch hier passiert genau dasselbe, Biterror, 
Stufferror, Busoff.

Wie kommunizieren denn Transceiver und Controller miteinander?
Den Error muß ja der Controller erkennen, oder? Was würde denn bei einem 
defekten Transceiver passieren? Evtl. genau das was bei mir passiert?

Wäre super wenn jemand eine Idee hätte...
Gast #539540
Lesenswert?

> Wenn ich jetzt eine Nachricht senden möchte, bemerkt der
> AT90CAN sofort einen Biterror und einen Stufferror und
> schaltet auf Busoff.

Und verhält sich damit genau nach Spezifikation. Ein einzelnes Device 
fühlt sich auf dem CAN-Bus zu einsam und schmollt.

Grund: ACK Bit wird von niemandem gesetzt. Führt zu Retry bis zum Limit 
und dann Bus-Off State.

Probier's mal im Loopback-Mode.
Gast #539545
Lesenswert?

Das ist doch schonmal ein heißer Tip.
Also kann das durchaus richtig sein und ich sollte mich mal genauer mit 
dem anderen Knoten beschäftigen...
Der andere Knoten ist ein Peak CAN Dongle an einem Laptop mit PCAN 
Explorer, aber irgendwie bekomme ich da auch kein wirkliches 
Lebenszeichen raus. Der Trace zeigt ja alle von PCAN Explorer gesendete 
Nachrichten an, egal ob sie wirklich auf dem Bus liegen oder nicht...
Gast #539619
Lesenswert?

Hallo Marco!

Der PCA82C251 ist ein High-Speed-CAN-Transceiver. Ich besitze auch einen 
CAN-Dongle von Peak und auf diesem ist ein LOW-Speed-Transceiver 
integriert - ich glaube vom Typ TJA1054. Die Software, der CANView 
erlaubt aber Einstellungen bis 1MBit. Vielleicht ist dies das Problem.
Wichtig ist aber auch die Einstellung im CANView.
Bei mir: LPT1 mit Adresse 0x378 und Interupt entweder 5 oder 7 und EPP 
ausgewählt.

Gruß
Mike
Gast #539744
Lesenswert?

Hallo.

Daran liegts bei mir leider nicht. Mein PCAN Dongle ist mit einem 
SJA1000 und einem PCA82C251 aufgebaut, also ein Highspeed Dongle.
Ich habe aber GND von meiner Platine und GND vom Dongle nicht verbunden. 
Kanns daran liegen?
Gast #539823
Lesenswert?

Hoppla - der Atmel scheint sowas garnicht zu haben. Na da ist ja nicht 
gerade freundlich.

Aber wo ich grad in dem Datasheet drin war: Dein bit error lässt einen 
falsch angeschlossenen oder defekten Transceiver, oder eine verkorkste 
CAN Verkabelung vermuten. Spiel mal bei abgeschaltetem CAN-Controller 
per Port-I/O mit dem CAN-Tx Pin und schau was auf dem CAN-Bus und auf 
CAN-Rx rauskommt (ohne Dongle, d.h. allein auf dem Bus, sonst mischt der 
auch noch mit).
Gast #540382
Lesenswert?

Hallo Kollegen,
der CAN ist zwar ein differentieller 2 Leitungs-Bus, aber er benötigt
die gemeinsame Ground Verbindung als Bezug. Je höher die 
Übertragungsrate
gewählt wird, desto wichtíger ist die gute Leitungsanpassung.
Es ist bisher nie falsch gewesen, dem Bus eine Spannungsvorprägung zu 
verpassen. Mit den Abschlußwiderständen  von 120 Ohm an den Enden der 
Busleitung werden verdrillte Adern ( Klingeldraht ) sauber 
abgeschlossen.
Ein Buskurzschluß kann damit erkannt werden.

Je nach Geschwindigkeit und Buslänge ist noch der Abtastzeitpunkt 
BTR0,BTR1
der Controller wichtig.Die Signale benötigen einen gewisse 
Beruhigungszeit bis zur Abtastung.


Gast #540388
Lesenswert?

Was freilich nicht heisst, dass GND ein Bestandteil der Verbindung sein 
muss. Sondern nur, dass bei irgendwie miteinander verbundener Masse die 
Pegel auf CANH/CANL sich in dem Rahmen bewegen müssen, den die 
Transceiver verdauen. Komplett massefrei soll auch gehen, habe ich aber 
selber nicht ausprobiert.

Anbei mal ein Beispiel für 125Kbps über zig Meter einfaches rein 
2-adriges Telefonkabel im Bündel zusammen mit Telefonverkabelung, 
beiderseits 120 Ohm, am entgegengesetzten Ende gemessen. Ohne Abschluss 
amgemessenen Ende war etwas Klingeln zu sehen, allerdings nicht wirklich 
kritisch, mit Abschluss war das Signal so sauber wie man es sich nur 
wünschen kann.
Angehängte Dateien:
Gast #540797
Lesenswert?

Anmerkung:
----------

Wenn sich nur ein Gerät am Bus befindet, darf es nur ein NACK-Fehler 
geben.
Damit läuft dann der Fehlerzähler im Controller hoch, da dieser solange 
sendet, bis die Software das einstellt oder ein ACK empfangen wurde.

Aber der Controller darf dabei NUR ind den Error-Passive Mode wechseln!
Nicht in den Bus-Off! Der Bus-Off darf nur bei Bitfehlern und 
Stufffehlern
eintreten.

Hab das ganze schonmal mit nem AT90CANxxx getestet. Der geht ohne 
zweiten
Teilnehmer nur in den Error-Passive-Modus.

Ist dein Tranceiver auch aktiv? Die Teile haben da so eine Art 
Enable-Pin.
Wenn der nicht auf dem richtigen Pegel liegt, dann geht auch nix.
Gast #542553
Lesenswert?

Nimm den Niderstand mal raus und schiess den pin direkt auf masse an.

Ich meine mich da dunkel an etwas zu erinnern, was die Funktion mit dem 
Widerstand betrifft. Ausserdem habe die Designs, die ich bisher so 
gesehen hab, das Teil imm direkt an Masse gehabt.
Gast #542630
Lesenswert?

Der Widerstand steuert die Flankensteilheit. Bei 1Mbps sollte der Pin 
auf Masse, bei 125Kbps ist es für den Test egal ob 20K oder 0. Da 
reduziert er nur die Störabstrahlung bei nicht geschirmten Leitungen.
Gast #542698
Lesenswert?

Mit dem "Pinwackeln" habe ich auch nichts vernünftiges rausbekommen.

Habe jetzt auch mit 2 anderen idetischen Platinen getestet. Lief sofort.

Also ist wohl schlichtweg der Transceiver im Eimer.

Vielen Dank an alle für die Mühe!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren