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...
> 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.
Ok, Biterror klingt mehr nach defektem Bus. Lass mal den anderen Knoten ganz weg, probier Loopback. Wann das sauber geht ist zumindest die Software ok.
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...
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
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?
Mit Loopback werde ich mich mal beschäftigen und Montag ausprobieren. Im Moment ist mir noch nicht ganz klar, was das ist...
Heisst und funktioniert bei jedem CAN Controller ein bischen anders, beim SJA1000 "self test mode" (MOD.2) und "self receiption request" (CMR.4).
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).
Das ist ne gute Idee. Werde mal ins Datenblatt des Transceivers gucken was der für Pegel erwartet und dann das ansprechen per I/O Port testen. Vielen Dank für die Hilfe...
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.
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.
PS: blaue Signal ist die Differenz zwischen den beiden anderen Signalen.
Blau? Ich sehe lila und türkis! Oder ist meine Farbwarnehmung im Arsch?
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.
Der Enable PIN liegt über 20 kOhm auf Masse. Damit müsste der Transceiver enable sein.
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.
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.
Apropos: Welche Bitrate? Musst ja nicht grad mit 1Mbps anfangen.
Habs schon mit 100kbps und 500kbps probiert. Das ändert nichts an dem Fehler...
Hast du den Transceiver mit Pinwackeln ausprobiert, wie ich oben anregte?
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!
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.