Forum: Mikrocontroller und Digitale Elektronik CAN-Controller in Verbindung mit OSC-Schwankungen - wie max. mögliche Datenrate ausrechnen?


von Andi Ü. (and0riz0r)


Lesenswert?

Hallo allerseits,

ich habe eine Frage zu den berühmten internen Oscillatoren, weil ich 
gerade überlege die interne OSC-Schaltung von meinem TI-LM3S5Y36 zu 
nutzen.
Bzw. ich würde den internen OSC sogar sehr gerne verwenden, weil sehr 
wenig Platz vorhanden ist.

Im Datenblatt/Manual steht zum internen OSC:
"[The internal OSC] provides a clock that is 16 MHz ±1% at room
temperature and ±3% across temperature."

Da geht es also auch irgendwie wieder um Stabilität. Über die 
Genauigkeit finde ich keine Aussage.

Naja, wie auch immer:
Worst case sind also 3 % Schwankungen.
Was der µC machen soll: Daten mit dem ADC aufnehmen, ein paar 
Konditionierungsrechnungen durchführen und dann die Daten über CAN 
wegschicken.

Ich würde annehmen, dass die OSC-Schwankungen für den ADC kaum eine 
Rolle spielen und für die Rechnungen absolut keine (bitte korrigiert 
mich, wenn ich hier falsch liege) - aber für den CAN-Bus wird das 
wahrscheinlich sehr wohl eine Rolle spielen (oben wurde ja bereits 
gesagt, dass die Kommunikation über assynchrone Schnittstellen unter 
solchen OSC-Schwankungen oft leidet).

Meine konkrete Frage wäre jetzt: Wie kann ich denn ausrechnen, bei 
welcher Geschwindigkeit mein CAN-Bus noch sicher läuft, wenn die 
Worstcase- Schwankung von 3 % eintritt?

Der OSC hätte hier eine Frequenz irgendwo zwischen 15,5 und 16,5 MHz.
Das ergibt eine "Clockperiodendauer" von 0,065 bis 0,061 µS.

Die Bitzeit bei High-Speed CAN mit 1 Mbit/s ist 1 µS.

Was passiert jetzt hier?

Bzw. muss die "Synchronität" nicht immer nur für den Zeitraums einen 
CAN-Frame gewährleistet sein? Die Frames sind bei CAN ja recht kurz 
(max. 128 Bit) und beim nächsten Transfer erfolgt eine Art 
Resynchronisation.

Ich kann mir vorstellen, dass das irgendwie durch eine Drosselung der 
Geschwindigkeit hinhaut, aber ich weiß wie gesagt nicht, wie ich das 
genau ausrechnen kann.

Meine Überlegung war, dass am Ende von so einem Frame das letzte Bit 
noch irgendwie zum Timing vom Empfänger passen müsste:

Also Bit Nr. 128 beginnt bei 1 MBit/s nach 128 µs:

Der Empfänger OSC läuft mit 15,5 MHz (minimale OSC-Frequenz) -> 2082 
Perioden
Der Sender OSC läuft mit 16,5 MHz (maximale OSC-Frequenz) -> 1953 
Perioden

Das wären 150 Perioden Abweichung am Ende vom Frame.
Das ginge ja niemals, denn ein Bit ist ja nur ca 16 Perioden lang. D.h. 
hier wäre schon sehr nach ein paar Bits die "synchronität weg". Ich 
glaub also des ich einen Fehler mache.
Denn wenn ich bei meinem Ansatz die Geschwindigkeit des CAN-Busses 
reduziere, wird das ja noch schlimmer - und das kann nicht sein, denn 
langsamer war ja immer sicherer. Dachte ich zumindest.... :-)

Hat da jemand einen Tipp wo mein Denkfehler ist, bzw. wie man sowas 
macht?

 Danke!!
Andi

von (prx) A. K. (prx)


Lesenswert?

Andi Ü. schrieb:

> Meine konkrete Frage wäre jetzt: Wie kann ich denn ausrechnen, bei
> welcher Geschwindigkeit mein CAN-Bus noch sicher läuft, wenn die
> Worstcase- Schwankung von 3 % eintritt?

Siehe AN1798.

Schlechte Karten. 3% geht wohl nicht einmal mit lowspeed CAN, oder nur 
bei eher kurzer Leitung.

> Das wären 150 Perioden Abweichung am Ende vom Frame.

Es sind eher 6, aufgrund des bit stuffing. CAN ist bitsynchron, jeder 
Wechsel synchronisiert neu. Bringt aber nix, weil der kritische Punkt 
zumindest bei längerer Leitung die Arbitrierungsphase ist, die an allen 
Punkte im Netz funktionieren muss.

von Andi Ü. (and0riz0r)


Lesenswert?

Und wenn die einzelnen Leitungen nur jeweils 1 m lang sind?
Bzw. wenn nicht der Worst case mit 3 % sondern "nur" 1 % eintritt?

Ich les mir ma die AN durch, danke für den Tipp.

von Dosmo (Gast)


Lesenswert?

In der Bosch-CAN-Spec steht die max. erlaubte Abweichung der Taktgeber 
drinn. Hab's nicht Kopf, mußt Du mal googlen.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Ja,
die AN754 von Microchip erläutert auch etwas zu den einzelnen 
Abschnitten eines einzelnen CAN-Bits und erklärt auch die ständige 
Re-Syncronisierung der Bits.

von Andi Ü (Gast)


Lesenswert?

@Dosmo:
habs gefunden, auf Seite 66.
1,58% Schwankung is für 125 kBit/s ok. Als Daumenregel :P - was da die 
Daumenregel is weiß ich aber nicht :]

Dort wird auch auf ein Buch verwiesen, das sich komplett mit dem Thema 
beschäftigt.
Argh, ich glaub ich versuch einfach irgendwie noch nen Quartz auf dem 
PCB unterzukriegen - das kostet wahrscheinlich deutlich weniger Zeit, 
als ein Buch zu wälzen bzw. bringt am Ende auch ein funktionierendes 
Ergebnis :)-  Aber ist natürlich auch weniger interessant...hehe.

zu den ANs kam ich noch nicht. Kommt aber noch.

von H.Joachim S. (crazyhorse)


Lesenswert?

Nimm nen Resonator. In 16MHz gibts den schon in ca. 2x1,5mm. 
Kondensatoren auch schon drin :-)

von Andi Ü (Gast)


Lesenswert?

Joachim, warum sagst du das nicht gleich?
Sowas hab ich bisher noch nicht gesehen bzw. in Erwägung gezogen.
Aber anscheinend kann man solche Dinger wirklich anstatt eines Quarzes 
mit Cs verwenden. Nice !
Mit 0,5 % Toleranz gehen damit die 125 kbit (vorausgesetzt die 
Daumenregel stimmt :]) locker.

Danke für den Hinweis!

Andi

von H.Joachim S. (crazyhorse)


Lesenswert?

Ich setze die Teile sehr oft ein.
Schwingen schneller an, sind kleiner und mech. stabiler. Und früher 
waren sie auch noch deutlich billiger als Quarze.
Der letzte Punkt hat sich leider gewandelt in letzter Zeit. In 1000er 
Stückzahl um die 20 Ct, Quarze bekommt man für die Hälfte.

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.