Forum: Mikrocontroller und Digitale Elektronik Synchronisation Bit-Timing CAN


von Johannes (Gast)


Lesenswert?

Hallo,
ich habe mal eine frage zum Bit-Timing.
Dabei wird ja ein Bit in vier teile unterteil (Synchronisationssegment, 
Laufzeitsegment, Phasensegment 1 und Phasensegment 2). Desweiteren wird 
das Bit ja in einer anzahl gleichlanger Zeitabschnitte unterteilt.
Der Abtastzeitpunkt ist ja immer am ende vom ersten Phansensegment.. 
Diesen kann ich durch verlängern des ersten Phasensegments, bzw. kürzen 
des zweiten Phasensegments verschieben.

Es wird ja danach gegangen, wo dei Flanke eintrifft. Aber welche Flanke 
genau?
Die vom jeden Bit? Das würde ja bedeuten, dass der Controller sich für 
jedes Bit neu synchronisiert. Aber was wäre wenn ich zwei nullen oder 
zwei einsen hintereinander schicken möchte? Dann habe ich ja keine 
Flanke mehr.
Oder wird nur von der Flanke des Startbits einer kompletten Nachricht 
ausgegangen? Ist das dann für jede Nachricht neu? Also wird jede 
Nachricht neu syncrhonisiert? Oder muss man sich im prinzip mit der 
ersten Nachricht die über dem Bus läuft synchronisieren und bleibt dann 
immer so?

Johannes

von (prx) A. K. (prx)


Lesenswert?

Johannes schrieb:
> Die vom jeden Bit?

Ja.

> Das würde ja bedeuten, dass der Controller sich für
> jedes Bit neu synchronisiert. Aber was wäre wenn ich zwei nullen oder
> zwei einsen hintereinander schicken möchte? Dann habe ich ja keine
> Flanke mehr.

Genau deshalb wird nach 5 gleichen Bits ein Füllbit eingefügt.

https://de.wikipedia.org/wiki/Bitstopfen

von Steffen R. (steffen_rose)


Lesenswert?

Prinzipiell kann man sich nur an Pegelwechsel orientieren. Andere 
Informationen hat man nicht zwischen den Teilnehmern.

Der CAN Controller kann dies aber nicht beliebig verschieben. Dies geht 
nur im Rahmen der kleinsten Zeiteinheit - dem Timequantum (tq).

Am Anfang des Frames beim Wechsel von Rezessive zu Dominant findet eine 
'Hard Synchronization' statt. Damit beginnt für alle das Signal zur 
selben Zeit.

Danach findet bei jedem Rezessive zu Dominant Wechsel eine 
Resynchronisation statt. Bei dieser kann der CAN Controller um max. Sync 
Jump With seinen TZakt anpassen.

von Johannes (Gast)


Lesenswert?

Ah, super. Das mit dem Bitstuffing habe ich auch schon einmal gelesen, 
wusste jetzt aber nicht, dass es für die Synchronisation gemacht wird 
(Der grund war mti auch ncoh nciht ganz klar).

Ich danke euch

von Johannes (Gast)


Lesenswert?

Eine Nachfrage ist mir doch noch gekommen.
Es wird ja immer am ende des ersten phasen-segmentes der Wert des Bits 
ermittelt. Der wert der dort gemessen wird ist der Wert des Bits. Woher 
weiss dieser denn jetzt, wann die Flanke eingetroffen ist?
Also ob jetzt ein TQ im Laufzeitsegment oder drei TQ im Laufzeitsegment 
vergangen sind?
Dann müsste das Bit ja eigentlich öfters den Wert abfragen.

von Steffen R. (steffen_rose)


Lesenswert?

Die Flanke ermittelt der CAN Controller unabhängig von der 
Bittimingeinstellung.

Bei der Hard Synchronization geht's mit dem ersten tq des Sync Segments 
los.
Bei der Resynchronization vergleicht er die Position der Flanke (also 
das Sync Segment des Senders) mit der eigenen Position des Sync 
Segments.

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.