Forum: Mikrocontroller und Digitale Elektronik CAN: Initialisierung und Synchronization Jump Width (SJW)


von Frank (Gast)


Lesenswert?

Hi und guten morgen!

ich möchte hier gerade zwei Controller über can miteinander verbinden 
was soweit auch ganz gut funktioniert.

Nun weiß ic haber nicht so richtig für was die Synchronization Jump 
Width (SJW) gut ist?

Soweit ich das verstanden habe, gibt dieser Wert an, um wieviele quantas 
die synchronisation springen darf, bezogen auf die baudrate bzw, die 
nominelle Bitzeit.

wenn die beiden controller nun irgendwann asynchron laufen (wg. 
ungenauem Quartz, ect.) dann können sich die Controller um diesen 
SJW-wert wieder einsynchronisieren, richtig?

Warum kann ich den Wert aber dann im Register einstellen? dann ist es 
doch besser ich mach diesen Wert so gross wie möglich, oder?

Mein Problem ist, dass ich nicht weiß was ich da einstellen/definieren 
soll? mach ich lieber einen grossen wert um evt. auftretenden 
verschiebungen auszugleichen oder eher klein weil das auch "irgendeinen" 
Vorteil hat?

Es handelt sich hierbei um einen SJA1000 und einen 82527 welcher ich mit 
250kbaud verbinden möchte

von eProfi (Gast)


Lesenswert?

Die ganzen Timing-Werte sind m.M.n. für einfache Verbindungen nahezu 
irrelevant. Nur bei großen Netzen mit vielen Teilnehmern, Störungen, 
Reflexionen und Verschleifungen wirken sie sich aus.

"wenn die beiden controller nun irgendwann asynchron laufen (wg.
ungenauem Quartz, ect.) dann können sich die Controller um diesen
SJW-wert wieder einsynchronisieren, richtig?"

Da die Übertragung ja generell asynchron läuft, synchronisiert sie sich 
ja bei jedem Frame neu.
Und dass die Quarze so ungenau sind, dass das Timing innerhalb eines 
Frames davonläuft ...

Nimm die Std-Werte (spicke bei anderen Programmierern), das passt fürs 
Erste.

von Frank (Gast)


Lesenswert?

>Nimm die Std-Werte (spicke bei anderen Programmierern), das passt fürs
>Erste.

Hi und Danke!
mein Problem ist, dass das so ziemlich mein erstes Programm ist, 
deswegen habe ich nichts zum "spicken" :(

Ich habe aber auch schon bemerkt, dass der Wert keinen Einfluß auf meine 
kommunikation hat. Nicht einmal hier auf dem Basteltisch wo ich die 
beiden Platinen mit "Eisenbahndraht" miteinander verbunden habe und 
alles über ein völlig überfordertes Steckernetzteil gespeist wird :o)

von Alex (Gast)


Lesenswert?

"Da die Übertragung ja generell asynchron läuft, synchronisiert sie sich
ja bei jedem Frame neu.

Sinn und Zweck der SJW ist eine möglichst bitweise Resynchronisation, 
sofern die entsprechenden Flanken im Eingangsdatenstrom existieren. 
Nicht zuletzt deshalb gibt es Stuffbits.

Wähle die SJW einfach als <=TSEG2 und du solltest keine Probleme 
bekommen. Eine größere SJW gibt dem Controller mehr Luft bei 
Baudratenabweichungen zwischen den einzelnen Nodes.

Weiterführende Infos:

http://www.port.de/engl/canprod/sv_req_form.html
http://can-cia.org

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.