Forum: Mikrocontroller und Digitale Elektronik CAN-Bus funktioniert nur ohne Terminierung


von Duzezan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo liebe Community,

ich kommuniziere zwischen 2 AVRs mittels CAN-Bus.
Dieser funktioniert auch insofern, da ich fehlerlos Nachrichten 
verschicken kann.
Die Kabellänge dafür liegt bei ~10cm. Das ganze funktioniert allerdings 
nur, solange die Jumper nicht gesetzt sind.

Übersehe ich irgendwo etwas grundlegendes, oder wo liegt mein Fehler?

von Falk B. (falk)


Lesenswert?

Masseleitung vergessen? Die braucht man bei CAN, auch wenn es 
differentiell ist.

von Duzezan (Gast)


Lesenswert?

Mit was müsste ich diese Masseleitung verbinden?

von Buna-Pelzer (Gast)


Lesenswert?

>Mit was müsste ich diese Masseleitung verbinden?

Da wird immer wieder gern der Anschluß GND benutzt.

gez. Buna-Pelzer

von Duzezan (Gast)


Lesenswert?

Jeder der AVRs besitzt eine eigene Stromversorgung.
Also sollte ich die GND-Anschlüsse dieser Stromversorgungen verbinden?

von ich (Gast)


Lesenswert?

Ja, dadurch bleibst du im common mode Bereich der CAN-Transceiver. Führe 
die GND-Leitung mit (z.B. als Schirm des twisted-pair-Kabels).
Du kannst auch die Terminierung symmetrisch machen, bringt auch 
Vorteile. Das heißt, von CANH einmal 60 Ohm gegen GND und von CANL 
genauso. Gibt insgesamt auch 120 Ohm. Und die beiden Adern sind dann 
symmetrisch gegen GND.

Eine andere Möglichkeit ist, den CAN-Bus galvanisch zu trennen. Ist 
etwas mehr Aufwand, aber lohnt sich, wenn starke Störungen in der Nähe 
sind. Und das geht dann auch ohne GND, also nur 2-adrig. Habe ich schon 
paar hundert mal gemacht mit Leitungslängen bis knapp 200m. Datenrate 
dann 125kB/s. Völlig problemlos.

von ich (Gast)


Lesenswert?

Nachtrag: Zur Bustrennung schau dir mal den ADM3053 an. Der hat alles 
drin, was du brauchst. Einschließlich der Erzeugung der 
Sekundär-Betriebsspannung.

von Duzezan (Gast)


Lesenswert?

vielen Dank für die ausführliche Antwort!
Habe soeben die GND-Anschlüsse miteinander verbunden, jedoch 
funktioniert die Kommunikation wieder nur, wenn die Jumper nicht gesetzt 
sind.
Hat jemand eine andere Idee?

von ich (Gast)


Lesenswert?

Dann sind es vielleicht keine 120Ohm-Widerstände? Wenn sie zu klein 
sind, hast du einen Kurzschluß. Prüf nochmal alles durch, auch die 
Verdrahtung.
Du hast auf jeden Fall einen anderen Fehler...

von Martin H. (disjunction)


Lesenswert?

Wenn der Jumper nicht gesetzt ist, kann sich doch gar kein rezessiver 
Pegel ausbilden. Was misst du zwischen CANL und CANH mit und ohne 
Jumper?
Da mit Jumper sollten 60 Ohm sein.

Stimmt vieleicht im Layout ewas nicht? Seid wann sind Nets in Eagle 
Blau?

von Frank (Gast)


Lesenswert?

Ist der zweite Kondensator wirklich mit dem Quarz verbunden?

von Frank (Gast)


Lesenswert?

Sorry, meinte natürlich mit GND...

von ich (Gast)


Lesenswert?

> Seid wann sind Nets in Eagle Blau?
Das ist kein Net, sondern ein Bus. Das stimmt schon. Das heißt, wenn die 
Anbindung am Bus stimmt, also die Nets, die aus dem Bus herausgezogen 
sind. Das kann man aber ohne Beschriftung nicht sehen.

@Duzezan: Kontrolliere das mal, indem du "show" anklickst und dann CANH. 
Dann muß CANH hell dargestellt werden und auch einer der 
Jumper-Anschlüsse. Aber nur einer. Und dann das gleiche mit CANL, dann 
muß der rechte Anschluß des Widerstandes hell gezeichnet werden.

von Falk B. (falk)


Lesenswert?

@Martin H. (disjunction)

>Stimmt vieleicht im Layout ewas nicht? Seid wann sind Nets in Eagle
>Blau?

Das ist ein Bus. Möglicherweise hat sich der OP damit einen Defekt in 
die Schaltung geholt und der Jumper macht einen Kurzschluss.

von Otto (Gast)


Lesenswert?

Falk Brunner schrieb:
> Das ist ein Bus. Möglicherweise hat sich der OP damit einen Defekt in
> die Schaltung geholt und der Jumper macht einen Kurzschluss.

Man könnte ja mal den Widerstand mit und ohne Jumper zwischen CANH+CANL 
messen.....

von ich (Gast)


Lesenswert?

Otto schrieb:
> Falk Brunner schrieb:
>> Das ist ein Bus. Möglicherweise hat sich der OP damit einen Defekt in
>> die Schaltung geholt und der Jumper macht einen Kurzschluss.
>
> Man könnte ja mal den Widerstand mit und ohne Jumper zwischen CANH+CANL
> messen.....

Der Vorschlag kam ja weiter oben schon von Martin. Einfach mal den CAN 
messen. Beide Jumper offen (von beiden Platinen), dann muß er relativ 
hochohmig sein. Ein Jumper geschlossen -> 120 Ohm zwischen CANH und 
CANL, beide geschlossen -> 60 Ohm zwischen CANH und CANL.

Hast du das mal gemacht, Duzezan?

von Duzezan (Gast)


Lesenswert?

Die Platine wird selbst gelötet. Falls also so kein Fehler im Layout 
vorliegt, sollte dieses schon stimmen.
Gerade gemessen, die Meßwerte stimmen mit den Vermutungen von @ich 
überein.
Beide Jumper offen:     ~35k Ohm
1 Jumper offen:          118 Ohm
beide Jumper geschlossen: 58 Ohm

Und bei den Widerständen handelt es sich wirklich um 120 Ohm.

von ich (Gast)


Lesenswert?

Schließ mal beide Jumper und dann miß bitte den CAN gegen GND und VCC, 
ob da irgendwo ein Schluß ist. Kann auch sein, daß einer der 2551 einen 
Ausgangsfehler hat.

Also:

Schaltungen stromlos machen, dann
CANH gegen +5V
CANH gegen GND
CANL gegen +5V
CANL gegen GND

Da darf nichts niederohmiges zu messen sein.

von Martin H. (disjunction)


Lesenswert?

Danke @ich das du mitgelesen hast ;)
Mein Vorschlag noch vieleich bricht Vcc zusammen unter der Last von 
120Ohm ;)
Vieleicht wird eine Schaltung nur duch CANH durch die Schutzdioden des 
MCP2551 versorgt. Oder nur de mcp as würde für rezessive Pegel sorgen

von Duzezan (Gast)


Lesenswert?

also bei beiden Platinen liegen die gemessenen Werte alle über 20M Ohm, 
sollte also eigentlich auch passen.
Wenn du sagst, ich soll gegen +5V messen, dann dort, wo unter Strom VCC 
ist?
@Martin: - wie kann ich überprüfen, ob VCC zusammenbricht?
         - Wie meinst du das mit der Schutzdiode des MCP 2551 bzw. mit
           dem rezessiven Pegel?

von ich (Gast)


Lesenswert?

Duzezan schrieb:
> Wenn du sagst, ich soll gegen +5V messen, dann dort, wo unter Strom VCC
> ist?

Ja, mit +5V meine ich VCC.
Wenn auch nur eine Ausgangsstufe der 2551 eine Schluß hat (gegen VCC 
oder gegen GND), dann geht gar nichts mehr.

Was du auch messen kannst: Im eingeschalteten Zustand beide 
CAN-Leitungen jeweils gegen VCC und gegen GND messen. So merkst du ja 
auch, wenn eine der beiden Bus-Leitungen auf VCC oder GND liegt.

von Martin H. (disjunction)


Lesenswert?

Duzezan schrieb:
> @Martin: - wie kann ich überprüfen, ob VCC zusammenbricht?
Mir Fehlt U$2G$2 (VCC und GND) in der Schaltung vieleicht wird der MCP 
in einer Schaltung nicht versorgt.
>          - Wie meinst du das mit der Schutzdiode des MCP 2551 bzw. mit
>            dem rezessiven Pegel?
die meisten ICs besitzen Schutzdioden zwischen Eingängen und VCC um 
einen gewissen ESD Schutz zu erreichen. Damit kann man den IC parasitär 
mit Strom versorgen.
Rezessiver Pegel ist wenn CANH nicht gegen VCC und CANL nicht gegen GND 
Treibt. In diesem Fall sollen die 60Ohm CANL gegen 2,5 und CANH gegen 
2,5 treiben. Ohne die Widerstände bleiben die Pegel wie bei den 
dominanten Pegel siehe oben. Ziehst Du aus CANH den Strom ab bekommst du 
den rezessiven Pegel...theoretisch.

Der CAN Bus ist multimasterfähig in den rezessiven Pegel darf jeder 
reinquatschen in den Dominanten macht das keinen Sinn.

von Duzezan (Gast)


Lesenswert?

Der Schaltplan ist nur ein Auszug. Die MCPs sind natürlich an 
Stromversorgung angeschlossen (zur Kontrolle eine Widerstandsmessung 
durchgeführt).
Habe eben die Spannung zwischen VCC, GND, CANH und CANL gemessen.
die Bus-Leitungen liegen nicht auf GND oder VCC, da sie bei ~2,5V 
liegen.
Und die Widerstände sind auch im Bereich von mehreren Megaohm.

von Martin H. (disjunction)


Lesenswert?

2,5V sind auch erst mal gut so. Die Signale werden erst während des 
Frames für eine logische 0 oder während eines Stopfbits Dominant.

von Duzezan (Gast)


Lesenswert?

Schön zu hören, dass die Schaltung anscheinend alles richtig macht, nur 
trotzdem nicht funktioniert :D

von ich (Gast)


Lesenswert?

Wenigstens hast du noch Humor :-)
Ich denke grad nach, was es noch sein könnte...

von Otto (Gast)


Lesenswert?

Duzezan schrieb:
> ich kommuniziere zwischen 2 AVRs mittels CAN-Bus.

Und sonst ist wirklich nichts an CANH und CANL angeschlossen?

von Amateur (Gast)


Lesenswert?

Verwendest Du eigentlich einen Zufallsgenerator zum Setzen der 
Verbindungen, oder orientierst Du Dich am Luftdruck?

Keine Ahnung was Eagle mit Deiner Reset-Schaltung und deinem 16 MHz 
Zappler macht.

Ich habe die komische Angewohnheit, bei Leitungen, die verbunden werden 
sollen, einen Verbindungspunkt zu setzen. Dumme Angewohnheit - ich weiß.

von ich (Gast)


Lesenswert?

Ich glaube nicht, daß es daran liegt. Wenn er die Jumper öffnet, 
funktioniert es ja komischerweise. Also arbeitet der Prozessor auch 
richtig, wie er soll...

Das mit den Punkten kommt manchmal vor. Das bedeutet nicht zwangsläufig, 
daß dort keine Verbindung besteht. Aber du hast Recht, normalerweise 
setzt man in so einem Fall die Junction dann manuell.

von Otto (Gast)


Lesenswert?

Ich würde es aber auf jeden Fall mal nachmessen.
Der RESET funktioniert auch ohne Beschaltung und ein paar pF bringen 
auch die Leiterbahnen.....

von Martin H. (disjunction)


Lesenswert?

Also mein letzter Versuch....
Evtl. ist einer der MCP2551 Defekt oder RS ist nicht auf GND und die 
Treiberfähigkeit ist dadurch nicht ausreichend.

von ich (Gast)


Lesenswert?

Stimmt. Wenn einer der beiden RS keine Masse hat, geht der 2551 in den 
Standby.
Aber warum geht's, wenn die Abschlußwiderstände ausgeschaltet sind?
Irgendwie mysteriös das ganze...

von Martin H. (disjunction)


Lesenswert?

ich schrieb:
> Aber warum geht's, wenn die Abschlußwiderstände ausgeschaltet sind?
Frag mich nicht, ich hab die Schaltung nicht vor mir ;)

von ich (Gast)


Lesenswert?

Nee, ich frag mich selbst :-)

von Martin H. (disjunction)


Lesenswert?

ich schrieb:
> Nee, ich frag mich selbst :-)
Also ich habe ja schon viele von CAN Komponenten geroutet aber so ein 
Fehler ist mir noch nicht untergekommen. Ich hatte schon Haarrisse an 
Pins, Verpolte Tantalkondensatoren die alle 2 Stunden den Transceiver 
für 10s  abgeschaltet haben und Vertauschte CANH und CANL aber 
sowas.....

von ich (Gast)


Lesenswert?

Ich hab auch schon eine Menge gesehen. Seit ein paar Jahren setze ich 
den CAN allerdings nur noch galvanisch getrennt ein. Damit umgehe ich 
auch alle Probleme, die mit einem falschen Potential zusammenhängen. 
Früher (noch ohne Trennung) kam es vor, daß irgend ein Held die 
Busleitungen auf eine Spannung gelegt hat (z.B. 48V) und dann sämtliche 
Busteilnehmer in Rauch aufgegangen sind. Ich konnte dann sämtliche 
Platinen wechseln. Da kam Freude auf...
Aber bei galvanischer Trennung kann es maximal passieren, daß die 
Übertragung nicht funktioniert, wenn ein falsches Potential anliegt. 
Aber es geht nichts mehr kaputt.
Aber das nur am Rande. Hier in dem Fall bin ich schon auf die Lösung 
gespannt. Es ist bestimmt nur eine Kleinigkeit, aber aus der Ferne ist 
es eben schwierig.
Heute abend wird es wohl eh nichts mehr. Ich mach mich dann erstmal raus 
hier.

Man sieht sich!

@duzezan: Halt durch, du schaffst das! :-)

von Nils P. (ert)


Lesenswert?

Bei mir hat einmal ein RS485 Bus erst mit Leitungen >50cm funktioniert, 
weiß der Himmel warum? --> verlänger mal deine Leitung ;-)

von Philipp X. (caradhras)


Lesenswert?

guckst du zum thema can mal hier:
http://www.nxp.com/documents/application_note/AN00020.pdf

ziemlich gute appnote!

von Daniel (Gast)


Lesenswert?

Hallo,
würde sagen die Impedanz deiner Leitung ist zu klein, mach die mal >1m 
und versuch es dann nochmal mit den Widerständen.

Gruß Daniel

von ich (Gast)


Lesenswert?

In diesem Stadium muß man alles versuchen, das stimmt.
Allerdings glaube ich nicht, daß das die Ursache ist. Ich habe mehrere 
CAN-Teilnehmer auf benachbarten Platinen und die sind nur paar cm 
auseinander. Die gleiche Konstellation läuft auch mit ca. 200m ohne 
Änderung. Aber eine bessere Idee hab ich auch nicht mehr. Wir haben 
gestern ja schon alles mögliche versucht...

von Falk B. (falk)


Lesenswert?

Man nehme Dr. Öttker, ähh ich meine ein Oszilloskop. Damit sieht man, 
was los ist.

von René B. (reneb)


Lesenswert?

An deinem CAN fehlen die PullUp und PullDown für die rezessiven Pegel 
der Leitungen.
Verpass dem wenigsten mal 560Ohm an CANH und CANL.

von ich (Gast)


Lesenswert?

René B. schrieb:
> An deinem CAN fehlen die PullUp und PullDown für die rezessiven
> Pegel
> der Leitungen.
> Verpass dem wenigsten mal 560Ohm an CANH und CANL.

Seit wann gibt es beim CAN Pullup und Pulldown?
Zwischen CANH und CANL wird der Bus mit 120Ohm terminiert. Und das 
jeweils an beiden Enden des Busses. Die Teilnehmer zwischendrin haben 
keinen Anschlußwiderstand (wenn es mehr als zwei Teilnehmer sind).
Auf keinen Fall gehört ein Pullup oder Pulldown da hin!

von Falk B. (falk)


Lesenswert?

@ René B. (reneb)

>An deinem CAN fehlen die PullUp und PullDown für die rezessiven Pegel
>der Leitungen.
>Verpass dem wenigsten mal 560Ohm an CANH und CANL.

Nö. Wir sind hier nicht bei I2C oder RS485. Der differentielle 
Widerstand reicht.

von Martin H. (Gast)


Lesenswert?

Zumal das einen permanenten dominaten Pegel erzeugen würde

von Duzezan (Gast)


Lesenswert?

@Philipp: Ich verwende doch einen MCP 2551, also was sollte mir diese 
AppNote nutzen?
Das Layout in Eagle habe ich übrigens ausgebessert ;-)
Leitungslänge war während der Messungen ein ~15m Telefonkabel, da dieses 
auch am Ende verwendet werden sollte.
Oszilloskop befindet sich leider nicht in meinem Besitz..
Was mir noch eingefallen ist:
Könnte es daran liegen, dass die Busterminierung auf physikalischer 
Ebene zwischen den MCPs liegt?

von ich (Gast)


Lesenswert?

Duzezan schrieb:
> Könnte es daran liegen, dass die Busterminierung auf physikalischer
> Ebene zwischen den MCPs liegt?

Wie meinst du das?
Wenn du zwei Teilnehmer hast, dann hat jeder von den beiden einen 2551. 
CANH des einen wird mit CANH des anderen verbunden und CANL genauso.
Dann kommt an alle beide jeweils ein Widerstand von 120 Ohm zwischen 
CANH und CANL. Falls du mehrere Teilnehmer hast, bekommen die zwischen 
drin sind, keine Terminierung. Nur jeweils am Bus-Anfang und -Ende.
Aber ich dachte, das habe ich auf deinem Schaltplan so gesehen. Da war 
es doch richtig...

von Duzezan (Gast)


Angehängte Dateien:

Lesenswert?

ich meinte, dass es auf der Platine vielmehr so aussieht, wie auf dem 
angehängten Schaltplan

von Falk B. (falk)


Lesenswert?

Der Punkt an RS sitzt falsch bzw. ist vollkomen fehl am Platz. Dort gibt 
es keinen Leitungsknoten.

von René B. (reneb)


Angehängte Dateien:

Lesenswert?

Hier nochmal kurz zur Argumentation über das Innenleben deines 
verwendeten Transcievers. CANH hat rezessiv LO und wird gegen VDD 
gezogen (Push only).
CANL hat rezessiv HI und wird gegen GND gezogen (Pull only).

Das kleine Kerlchen in der Mitte realisiert den (rezessiven) Ruhepegel 
auf VDD/2. Ebendieses Konstrukt könnte aber defekt oder unzureichend 
sein. Dann wären die Flanken bei 2x120Ohm über CANH/CANL evtl. nicht 
steil genung und die Kommunikation will nicht.

Da kann man auch testweise externe Widerstände an CANH und CANL hängen. 
An CANH den externen PullDown und CANL einen externen PullUp.

von René B. (reneb)


Angehängte Dateien:

Lesenswert?

Wenn das mit den PullUp/PullDown tatsächlich was bringt, kannst du beide 
Leitungen extern mit einem Bias-Netzwerk auf Ruhepegel stützen. Siehe 
Bild aus einer NXP Appnote.

Und jetzt noch die Appnote AN00020 von NXP dazu:
(..)
In principle, a circuit like the one in Figure 11
provides symmetrical biasing of the common
mode voltage with respect to the bus voltage levels in dominant state. 
In recessive state the bus voltages are biased to the symmetry voltage 
of
VCC/2
(..)
If there is a large number of unpowered nodes, it is recommended to 
additionally stabilize the nominal common mode voltage of VCC
/2 with an external biasing circuit in order to achieve an optimum EMC 
performance. (..)

von (prx) A. K. (prx)


Lesenswert?

René B. schrieb:
> Das kleine Kerlchen in der Mitte realisiert den (rezessiven) Ruhepegel
> auf VDD/2. Ebendieses Konstrukt könnte aber defekt oder unzureichend
> sein. Dann wären die Flanken bei 2x120Ohm über CANH/CANL evtl. nicht
> steil genung und die Kommunikation will nicht.

Dieses (hochohmige) Kerlchen eignet sich allenfalls dazu, den Pegel 
einer inaktive Leitung im zulässigen Rahmen zu halten. Bei einem korrekt 
betriebenen CAN Bus ist ausschliesslich der (niederohmige) 
Leitungsabschluss für die Flanke von dominant zu rezessiv zuständig. Die 
Innenschaltung der Transceiver ist dafür nicht zuständig. Ohne 
Abschluss kann das allenfalls in einem kleinen Laboraufbau bei niedriger 
Bitrate funktionieren.

Eine etwas genauere Darstellung einer möglichen Innenschaltung von 
CANH/L Anschlüssen bietet beispielsweise das Datasheet des SN65HVD233.

Wenn man in einem simplen 10cm langen Laboraufbau einen CAN Bus nicht zu 
laufen bringt, dann sind irgendwelche Bias-Widerstände der falsche 
Ansatz. Dann liegt das Hauptproblem garantiert woanders.

von EFA (Gast)


Lesenswert?

Ist RS evtl. nicht angeschlossen? Das kñnnte den Fehler erklären. Auf 
dem Schaltplan sieht das komisch aus.

von ich (Gast)


Lesenswert?

Sorry, hatten wir weiter oben schon... Das isses auch nicht.

von Duzezan (Gast)


Lesenswert?

Einen richtigen CAN-Bus zu verwenden, wie im Layout meines 
Eingangspostings hat leider auch keine Verbesserung gebracht.
Sieht wohl leider so aus, als ob mir nichts anderes übrig bleibt, die 
MCPs auszutauschen und zu hoffen, dass es dann funktioniert...

Aber vielen Dank an alle, die versucht haben, mir zu helfen!

von Harald (Gast)


Lesenswert?

A. K. schrieb:

> Wenn man in einem simplen 10cm langen Laboraufbau einen CAN Bus nicht zu
> laufen bringt, dann sind irgendwelche Bias-Widerstände der falsche
> Ansatz. Dann liegt das Hauptproblem garantiert woanders.

Da muss ich dem Kollegen beipflichten, es gibt in dieser Situation eine 
effektive Fehlersuche:

Per Scope die Pegel anschauen, ob die vernünftig aussehen und ob die 
Bitzeit eingehalten wird. Weiterhin gaaanz wichtig: beim 
Sendevorgang(!!!) die Versorgung 5V lder meinetwegen auch VCC 
oszilloskopieren, ich denke da liegt der Hund begraben.

von (prx) A. K. (prx)


Lesenswert?

Harald schrieb:
> Sendevorgang(!!!) die Versorgung 5V lder meinetwegen auch VCC
> oszilloskopieren, ich denke da liegt der Hund begraben.

Und zwar weil die Transceiver mit Abschluss bei dominantem Signal 
ordentlich Strom ziehen. Ohne Abschluss tut sich da wenig.

von Duzezan (Gast)


Angehängte Dateien:

Lesenswert?

Verwende wie im Schaltplan einen Schaltregler mit Tiefpassfilter zur 
Stromversorgung. Werde aber mangels Oszi probeweise einen 7805 für die 
Stromversorgung des MCPs nutzen.

von Otto (Gast)


Lesenswert?

Und woher kommen die 12V?

von Thomas (Gast)


Lesenswert?

Ich glaube eher da muss mal jemand außenstehendes drüber schauen...
Oder einfach mal zwei Tage liegen lassen.

von Duzezan (Gast)


Lesenswert?

Von einem 12V Netzteil, 1A Ausgang.
Leider gibt es bei mir niemanden, der sich mit dem ganzen wohl auskennt.

von Peter (Gast)


Lesenswert?

Canh und canl vertauscht ???
Längeres Kabel nehmen
Pullup/Pulldown Widerstände wenn Faulttolerant CAN
Neues Transceiverbaustein
Hängt evtl der sendende uC nach dem stecken der Jumper?
Störungen auf der Logikseite ausgeschlossen?)-> uC, CAN Controller
Oszibild machen und Posten

von Duzezan (Gast)


Lesenswert?

Vertauschen von CANH und CANL ist ausgeschlossen.
Kommunikation ist erfolgreich, solange kein Jumper gesetzt ist.
Wird dann ein oder beide Jumper gesetzt, erhalte ich keine Nachricht 
mehr.
Werden die Jumper dann wieder gezogen, wird die letzte Nachricht 
übertragen, und Kommunikation ist wieder erfolgreich möglich.
Heute wird die Stromversorgung überprüft, falls dass nichts hilft und 
ich kein Oszi in die Finger bekomme, werde ich neue MCPs ordern müssen.
Dachte bei CAN gibt es keine Pullup/-down-Widerstände?

von Peter (Gast)


Lesenswert?

Natürlich hat CAN Pullup und Pulldown. Sonst könnte kein Kurzschluss 
nach Masse / Vcc erkannt werden. Faulttolerant Receiver brauchen immer 
Pullup/down, Highspeed Transceiverbausteine haben das integriert 
ausreichend. Den MCP kenne ich nicht, im Automotive ist SAE bzw. TI 
vertreten.

von Harald (Gast)


Lesenswert?

Peter schrieb:

>Natürlich hat CAN Pullup und Pulldown.

Klar,auf Chipebene bestimmt.

> Sonst könnte kein Kurzschluss nach Masse / Vcc erkannt werden.

Beim "Standard"-CAN nicht relevant. Welche Erkennung meinst Du in Bezug 
auf den eingesetzten Tranceiver?

> Den MCP kenne ich nicht

Der MCP2551 ist eine gaaanz normale Alternative (Pin- und 
funktionskompatibel) zu AT6660, PCA82C25x, TJA1040, usw. usw.

Da braucht es definitiv keine externen(!) Pull-Up oder Pull-Down. 
Verwirre den armen Kerl doch nicht. Wenn es in dem Aufbau im Labor nicht 
läuft hat er ein viel trivialeres Problem.

>Faulttolerant Receiver...

Andere Baustelle.

>im Automotive ist SAE bzw. TI > vertreten.

Wen meinst Du mit SAE? Was mit TI? Spannst Du einen Vergleich in etwa 
zwischen "ADAC" und "Volkswagen" auf?

von ich (Gast)


Lesenswert?

Peter schrieb:
> Natürlich hat CAN Pullup und Pulldown. Sonst könnte kein
> Kurzschluss
> nach Masse / Vcc erkannt werden. Faulttolerant Receiver brauchen immer
> Pullup/down, Highspeed Transceiverbausteine haben das integriert
> ausreichend. Den MCP kenne ich nicht, im Automotive ist SAE bzw. TI
> vertreten.

Definitiv FALSCH!
CAN hat keine Pullup und Pulldown, sondern nur die Bus-Terminierung 
von jeweils 120 Ohm am Anfang und Ende des Busses. Hatte ich aber schon 
paarmal geschrieben. Und das ist nicht meine persönliche Meinung, weil 
ich mich mit jemand streiten will. Das liegt mir fern. Das ist in jeder 
CAN-Dokumentation nachzulesen.

von ich (Gast)


Lesenswert?

@Duzezan:
Wenn du einen Oszi auftreiben kannst und das ist ein Zweikanaler, dann 
noch einen Tipp:
Du kannst einmal die einzelnen Busleitungen (CANH und CANL) getrennt 
anschauen, was die mit dem Pegel machen. Als Kontrolle kannst du auch 
die beiden Oszi-Kanäle nehmen, einen von beiden invertieren (geht mit 
den meisten Zweikanalern) und dann die beiden addieren (auch eine 
Funktion des Oszis). Dann bekommst du eine Kurve, die dem eigentlichen 
Signal entspricht. Du machst also mit dem Oszi aus dem differenziellen 
Signal wieder ein "Single"-Signal.

von nico26plus1 (Gast)


Lesenswert?

Da fehlt trotzdem ein Widerstand, wenn auch an anderer Stelle. Versuchs 
mal mit nen 10k Widerstand zwischen RS und GND...

von Falk B. (falk)


Lesenswert?

1.4.1 HIGH-SPEED
High-Speed mode is selected by connecting the RS pin
to VSS. In this mode, the transmitter output drivers have
fast output rise and fall times to support high-speed
CAN bus rates.

von Dietrich L. (dietrichl)


Lesenswert?

Falk Brunner schrieb:
> 1.4.1 HIGH-SPEED
> High-Speed mode is selected by connecting the RS pin
> to VSS. In this mode, the transmitter output drivers have
> fast output rise and fall times to support high-speed
> CAN bus rates.

Aber dann wäre es zumindest einen Versuch wert, mit einem Widerstand das 
System etwas langsamer zu machen.

[Spekulation]

1. Wer weiß, was da bei dem/der umbekannten Layout/Verdrahtung eventuell 
schwingt. Ein Abschlußwiderstand sollte das zwar eigentlich verbessern, 
aber tut es eventuell nicht; aber mit Abschluss sind die Pegel kleiner 
und das Einschwingen könnte dann die Schaltschwelle des Empfängers 
erreichen, sodass er "prellt".

2. Wegen schlechtem Layout (GND, Stützkondensatoren, ...) kommt der 
Ärger über GND und/oder +5V. Bei High-Speed und Abschlusswiderstand 
(höherer Strom) wir das System instabil.

[/Spekulation]

Gruß Dietrich

von Canfreak (Gast)


Lesenswert?

1. Mit welcher Geschwindigkeit arbeitest du auf deinem Telefonkabel?
2. Hast du mal ein anderes, kürzeres Kabel versucht?
3. Hast du die Geschwindigkeit schon verändert?

von ich (Gast)


Lesenswert?

Canfreak schrieb:
> 2. Hast du mal ein anderes, kürzeres Kabel versucht?
Kürzer als die vorhandenen 10cm?
Duzezan schrieb:
> Die Kabellänge dafür liegt bei ~10cm.

von Christopher (Gast)


Lesenswert?

ich schrieb:
> Du kannst einmal die einzelnen Busleitungen (CANH und CANL) getrennt
> anschauen, was die mit dem Pegel machen. Als Kontrolle kannst du auch
> die beiden Oszi-Kanäle nehmen, einen von beiden invertieren (geht mit
> den meisten Zweikanalern) und dann die beiden addieren (auch eine
> Funktion des Oszis). Dann bekommst du eine Kurve, die dem eigentlichen
> Signal entspricht. Du machst also mit dem Oszi aus dem differenziellen
> Signal wieder ein "Single"-Signal.


Ich kann doch einfach CAN-high gegen CAN-low messen. Also den Tastkopf 
an CAN-high und die Masseleitung an CAN-low und dann sehe ich doch die 
Bits aufm Bus. Oder sehe ich das falsch?

von Falk B. (falk)


Lesenswert?

Du siehst das falsch. Denn deine Masse vom Oszi schließt dir im 
zweifelsfall CANL kurz gegen GND vom Netzteil. Nur wenn die die 
Schaltung KOMPLETT massefrei ist, kann es gehen, ist aber dennoch 
ungünstig.

von René B. (reneb)


Lesenswert?

> Ich kann doch einfach CAN-high gegen CAN-low messen. Also den Tastkopf
> an CAN-high und die Masseleitung an CAN-low und dann sehe ich doch die
> Bits aufm Bus. Oder sehe ich das falsch?

Nur wenn dein Versuchsaufbau, sprich dessen Netzteil und GND 
potentialfrei sind ODER du ein batteriebetriebenes Oszi hast ODER einen 
Differenztastkopf hast ODER ...

Besser:
- Tastköpfe auf 10er Teilung stellen
- Nimm beide Oszi Kanäle und häng die Krokoklemmen jeweils
  auf GND deines Aufbaus.
- CH1 auf CANH
- CH2 auf CANL
- Wenn dein Oszi dann noch eine Subtraktion der Kanäle beherrscht, lass 
dir das Differenzsignal auch noch ausgeben.

Und bitte vorher - falls noch nicht geschehen - mal die Tastköpfe in der 
10er-Teilung auch abgleichen :) (google "Tastkopf abgleichen")

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.