Forum: Mikrocontroller und Digitale Elektronik Bit-Stuffing CAN


von Student (Gast)


Lesenswert?

Hallo!!

Ich sitz grad vor meinen Unterlagen und häng an nem kleinen
Problemchen. Da steht drin, dass das EOF Field aus 7 rezessiven Bits
besteht, und somit bewusst gegen die Bitstuffing-Regel verstoßen wird.
Warum wird bewusst dagegen verstoßen?

Fügt dann der Sender nach dem 5ten high ne 0 ein, oder wird das dann
beim EOF nicht gemacht?
Oder andersrum gefragt, prüft der Empfänger die komplette Nachricht
nach Bitstuffing-Fehlern oder wird nur ein bestimmter Bereich geprüft?

Wäre über jede Hilfe dankbar, übermorgen is Prüfung :-(

von Student (Gast)


Lesenswert?

weiß niemand was??

von Falk Willberg (Gast)


Lesenswert?

CAN kann icht nicht, bitstuffing ist mir aber von HDLC ein Begriff.

Da war die Definition so: Nach 5 Einsen kommt zwangsläufig eine Null,
die beim Empfänger ignoriert wird. Damit bei NRZ wird sichergestellt,
daß eine bestimmte "Mindestfrequenz" erreicht wird.

Die "Flags", die am Anfang und Ende eines Paketes gesendet wurden,
hatten 7 Einsen und waren damit eindeutig zu identifizieren.

Ich vermute, daß jeder Fehler im bitstuffing zu ungültigen Daten führen
dürfte, spätestens wenn der CRC-Check zuschlägt.

> übermorgen is Prüfung :-(
<Elternmodus>Und seit wann weißt Du das?</Elternmodus>

Viel Erfolg,
Falk

von Peter Dannegger (Gast)


Lesenswert?

"Da steht drin, dass das EOF Field aus 7 rezessiven Bits
besteht, und somit bewusst gegen die Bitstuffing-Regel verstoßen wird.
Warum wird bewusst dagegen verstoßen?"

Ganz einfach, um es von Daten unterscheiden zu können.


Peter

von flyingwolf (Gast)


Lesenswert?

...
wenn ich es recht verstanden habe, dann sammelt der Controller die
Stuffing Bits wieder raus, so dass am Ende wieder die gemeinen Daten
rauskommen.

von Indi2Go (Gast)


Lesenswert?

>Da steht drin, dass das EOF Field aus 7 rezessiven Bits
>besteht, und somit bewusst gegen die Bitstuffing-Regel verstoßen
wird.
>Warum wird bewusst dagegen verstoßen?

Beim CAN will man einen Übertragungsfehler noch vor Abschluss der
betroffenen Nachricht an alle Teilnehmer melden. Wenn ein Teilnehmer
den DLC falsch liest (z.B.: 8 statt 4 Datenbyte) -> kommt er beim EOF
(da ja das Bit-Stuffing verletzt ist) drauf das der Rahmen schon zu
Ende ist und wird einen Fehler signalisieren...

>Fügt dann der Sender nach dem 5ten high ne 0 ein, oder wird das dann
>beim EOF nicht gemacht?
>Oder andersrum gefragt, prüft der Empfänger die komplette Nachricht
>nach Bitstuffing-Fehlern oder wird nur ein bestimmter Bereich
>geprüft?
Beim EOF wird bewußt das Bitstuffing verletzt um obigen Fehler zu
erkennen!

von Thommy (Gast)


Lesenswert?

Danke euch schonmal.

Hmmm..naja gut ok. Aber wird dann bei der Übertragung das Stuff-Bit im
EOF rein gemacht oder nicht? Dass die Stuff-Bits beim Empfang wieder
raus gemacht werden is klar. Könnte man das auch so begründen, dass
somit gewährleistet ist, dass mindestens einmal pro Nachricht das
Stuff-Bit zur Synchronisation vorhanden ist?

von Thommy (Gast)


Lesenswert?

"
Beim CAN will man einen Übertragungsfehler noch vor Abschluss der
betroffenen Nachricht an alle Teilnehmer melden. Wenn ein Teilnehmer
den DLC falsch liest (z.B.: 8 statt 4 Datenbyte) -> kommt er beim EOF
(da ja das Bit-Stuffing verletzt ist) drauf das der Rahmen schon zu
Ende ist und wird einen Fehler signalisieren...
"

Aber das widerum würde bedeuten, dass im EOF kein Stuff-Bit eingefügt
würde. Also gilt die Bit-Stuffing-Regel nicht für die ganze Nachricht,
sondern nur für nen bestimmten Teil?
Ok, das macht Sinn, aber dann muss der Empfänger eben auch das EOF
erkennen weil er sonst nen Bitstuffing Fehler meldet wenn 7  gleiche
Bits am tück kommen.

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.