CAN / CAN-FD Bus-Timing & Bit-Rate Prescaler

Der Sample Point entscheidet, ob der Bus läuft

Warum „500 kbit/s einstellen“ keine Konfiguration ist, wie Prescaler und Zeitsegmente zusammenhängen und weshalb ein interner RC-Oszillator an CAN grundsätzlich scheitert.

Eine Bitrate ist noch keine Konfiguration

CAN kennt keine Baudratenregister im Sinne einer UART. Ein CAN-Controller bekommt drei Zahlen: einen Vorteiler und zwei Zeitsegmente. Aus ihnen ergibt sich die Bitrate – und, viel wichtiger, der Zeitpunkt innerhalb des Bits, an dem der Controller den Pegel abtastet.

Dieser Zeitpunkt ist der Sample Point. Er entscheidet, ob ein Knoten am anderen Ende einer 40 Meter langen Leitung noch verstanden wird, ob die Arbitrierung funktioniert und wie viel Taktabweichung das Netz verträgt. Zwei Knoten mit identischer Bitrate, aber unterschiedlichem Sample Point kommunizieren im Labor problemlos und fallen im Fahrzeug sporadisch aus.

Die verbreitete Empfehlung stammt von CAN in Automation: 87,5 % für Bitraten bis 800 kbit/s, 75 % bei 1 Mbit/s. In der Fahrzeugtechnik trifft man häufig auch 80 %. Entscheidend ist weniger der genaue Wert als die Tatsache, dass alle Knoten denselben verwenden.


Wie ein CAN-Bit aufgebaut ist

Jedes Bit wird in Zeitquanten zerlegt – ganzzahlige Vielfache des vorgeteilten Controllertakts. Diese Quanten verteilen sich auf vier Segmente:

SegmentLängeAufgabe
SYNC_SEGimmer 1 TQFlankenerkennung, Synchronisation
PROP_SEG1 – 8 TQgleicht die Signallaufzeit auf dem Bus aus
PHASE_SEG11 – 8 TQwird bei Nachsynchronisation verlängert
PHASE_SEG21 – 8 TQwird bei Nachsynchronisation verkürzt

Abgetastet wird am Ende von PHASE_SEG1. Die meisten Controller – bxCAN in STM32, SJA1000, MCP2515 – fassen PROP_SEG und PHASE_SEG1 in einem Register zusammen und nennen es TSEG1; PHASE_SEG2 heißt dann TSEG2. Damit vereinfacht sich alles auf drei Größen:

NTQ = 1 + TSEG1 + TSEG2
Bitrate = fCAN / (BRP · NTQ)
Sample Point = (1 + TSEG1) / NTQBRP = Vorteiler · fCAN = Takt der CAN-Peripherie, nicht zwingend der CPU-Takt

Achtung bei den Registerwerten. Viele Controller speichern die Segmente um eins vermindert – ein TSEG1 von 13 wird als 12 eingetragen. Ob das Datenblatt die logische oder die Registergröße meint, muss man jedes Mal nachlesen; hier stehen durchgängig die logischen Werte.


Ein Beispiel, das aufgeht

40 MHz CAN-Takt, 500 kbit/s, Sample Point 87,5 %. Gesucht sind BRP und NTQ mit

BRP · NTQ = fCAN / Bitrate = 40 MHz / 500 kbit/s = 80

Von den Teilern kommen nur die in Frage, bei denen 87,5 % auf eine ganze Zahl von Quanten führen. Bei NTQ = 20 wären das 17,5 TQ – nicht darstellbar. Bei NTQ = 16 dagegen:

1 + TSEG1 = 0,875 · 16 = 14 → TSEG1 = 13
TSEG2 = 16 − 1 − 13 = 2
BRP = 80 / 16 = 5
SJW = min(4, TSEG2) = 2Ergebnis: exakt 500,0 kbit/s bei exakt 87,5 % Sample Point

Ein Zeitquantum dauert hier 125 ns, ein Bit 2000 ns. Dass die Rechnung glatt aufgeht, ist kein Zufall: 40 MHz, 20 MHz, 16 MHz und 8 MHz sind bei CAN so verbreitet, weil sie ganzzahlige Teiler für die üblichen Bitraten ergeben. Ein 25-MHz-Quarz sieht auf dem Papier ähnlich aus und führt bei 500 kbit/s in die Sackgasse.


Rechner: Bit-Timing und Sample Point

Takt, Bitrate und Ziel-Sample-Point wählen – der Rechner sucht über alle zulässigen Kombinationen und liefert Registerwerte, tatsächlichen Sample Point, Laufzeitreserve und die zulässige Taktabweichung.

Registerwerte BRP 5 TSEG1 13 · TSEG2 2 · SJW 2
Sample Point 87,5 % 16 TQ à 125 ns
Erreichte Bitrate 500,0 kbit/s Abweichung 0,00 %
Laufzeitbedarf PROP 910 ns verfügbar 1625 ns
Zulässige Taktabweichung ±0,49 % pro Knoten
Bitzeit 2000 ns 1 / Bitrate

Gesucht wird über alle Kombinationen aus Prescaler und Quantenzahl (8 bis 25 TQ, TSEG1 ≤ 16, TSEG2 ≤ 8, SJW ≤ 4) diejenige mit exakter Bitrate, geringster Abweichung vom Ziel-Sample-Point und – bei Gleichstand – der größeren Quantenzahl. Mehr Quanten bedeuten feinere Auflösung und größeres SJW, also mehr Reserve bei der Nachsynchronisation. CAN-FD-Controller erlauben deutlich größere Segmentwerte.


Wie lang darf der Bus sein?

PROP_SEG existiert, damit ein Signal vom entferntesten Knoten zurück sein kann, bevor abgetastet wird. Bei der Arbitrierung senden mehrere Teilnehmer gleichzeitig und müssen den Pegel der anderen innerhalb desselben Bits lesen – die Laufzeit muss also zweimal hineinpassen:

tPROP ≥ 2 · ( L · 5 ns/m + tLoop )L = Leitungslänge · tLoop = Schleifenlaufzeit des Transceivers (TXD nach RXD)
5 ns/m entspricht etwa zwei Dritteln der Lichtgeschwindigkeit im Kabel

Für 40 m Leitung und einen Transceiver mit 255 ns Schleifenlaufzeit ergibt das 910 ns – bei einer Bitzeit von 2000 ns fast die Hälfte. Genau daraus folgen die bekannten Reichweiten:

BitrateBitzeitübliche Leitungslänge
1 Mbit/s1 µsbis 40 m
500 kbit/s2 µsbis 100 m
250 kbit/s4 µsbis 250 m
125 kbit/s8 µsbis 500 m
50 kbit/s20 µsbis 1000 m

Diese Werte gelten für Kupferleitung mit korrektem Abschluss an beiden Enden. Stichleitungen zählen mit – und zwar ungegünstig, weil sie zusätzlich reflektieren. Als Faustwert gilt: einzelne Stichleitungen unter 30 cm bei 500 kbit/s, in Summe nicht mehr als etwa 10 % der Gesamtlänge. Die Reichweiten setzen zudem einen schnellen Transceiver voraus: Bei 1 Mbit/s und 40 m bleiben nur rund 700 ns für die Laufzeit – ein Baustein mit 255 ns Schleifenlaufzeit sprengt das bereits, einer mit 120 ns passt. Der Rechner oben zeigt das unmittelbar.


Warum ein interner RC-Oszillator an CAN scheitert

CAN synchronisiert sich nur an fallenden Flanken nach. Zwischen zwei Flanken kann ein Rahmen bis zu zehn Bit ohne Pegelwechsel enthalten – das Bit-Stuffing begrenzt es auf fünf gleiche Bits plus Stopfbit. Über diese Strecke müssen zwei Knoten synchron bleiben, allein aus ihren Oszillatoren heraus. Daraus folgen zwei Bedingungen, von denen die strengere gilt:

df ≤ SJW / (20 · NTQ)
df ≤ PHASE_SEG2 / ( 2 · (13 · NTQ − PHASE_SEG2) )df = zulässige relative Taktabweichung je Knoten

Für das Beispiel oben – 16 TQ, TSEG2 = 2, SJW = 2 – ergibt die erste Bedingung 0,63 %, die zweite 0,49 %. Es gilt der kleinere Wert: ±0,49 % pro Knoten, und dieser Wert muss über den gesamten Temperaturbereich und über die Lebensdauer eingehalten werden.

Ein Quarz liegt bei ±30 bis ±100 ppm, also ±0,003 bis ±0,01 % – unproblematisch. Ein Keramikresonator liegt bei ±0,3 bis ±0,5 % und wird damit grenzwertig. Ein interner RC-Oszillator liegt bei ±1 bis ±2 % und ist um ein Vielfaches zu ungenau. Dass ein solcher Aufbau auf dem Schreibtisch mit zwei Knoten trotzdem läuft, ist kein Gegenbeweis: Beide Controller stammen aus derselben Charge und haben denselben Fehler. Im Feld, mit fremden Steuergeräten und über Temperatur, fällt das auseinander.


CAN FD: zwei Timings statt einem

Bei CAN FD wechselt der Bus innerhalb eines Rahmens die Geschwindigkeit. Die Arbitrierungsphase läuft weiter mit der Nennbitrate, der Datenteil mit der höheren. Es gibt daher zwei vollständige Timing-Sätze mit eigenem Prescaler und eigenen Segmenten.

Da während der Datenphase nur ein Knoten sendet, entfällt dort die Arbitrierung – PROP_SEG kann kürzer ausfallen, und Sample Points um 70 bis 80 % sind üblich.

Oberhalb von etwa 1 Mbit/s Datenrate wird ein weiterer Mechanismus zwingend: die Transceiver Delay Compensation. Der sendende Knoten liest seine eigenen Bits zurück, um Fehler zu erkennen – bei 5 Mbit/s ist die Bitzeit aber mit 200 ns kürzer als die Schleifenlaufzeit des Transceivers. Der Controller würde ein Bit lesen, das er zwei Bits früher gesendet hat. Der Secondary Sample Point verschiebt den Rücklesezeitpunkt um die gemessene Laufzeit. Ohne ihn arbeitet CAN FD oberhalb 1 Mbit/s nicht zuverlässig.


Checkliste vor der Inbetriebnahme

1. Alle Knoten auf denselben Sample Point. Nicht nur dieselbe Bitrate. Unterschiedliche Sample Points sind die häufigste Ursache für Busse, die „meistens“ laufen.

2. Quarz statt Resonator oder RC. Und die Toleranz über Temperatur prüfen, nicht nur den Nennwert bei 25 °C.

3. Abschlusswiderstände zählen. Genau zwei mal 120 Ω, an den beiden physikalischen Enden – nicht an jedem Knoten, nicht in der Mitte. Ein Ohmmeter über CAN_H und CAN_L bei stromloser Anlage muss rund 60 Ω zeigen.

4. Stichleitungen kurz halten. Sie erscheinen in keiner Timing-Rechnung und ruinieren trotzdem die Signalform.

5. Fehlerzähler auslesen, nicht nur den Datenstrom. Ein Bus, der läuft, aber mit steigendem Error-Counter, ist ein Bus vor dem Ausfall. Die meisten Controller stellen TEC und REC in einem Register bereit – im Feldtest mitprotokollieren.


Gehäuse und Bauteile aus dem 3D-Druck

Zu jeder Baugruppe gehört ein Gehäuse. Wir konstruieren es parametrisch und drucken es im eigenen Labor – FDM für stabile Funktionsteile, SLA für feine Details. Vom ersten Prototyp bis zur Kleinserie, inklusive Nachbearbeitung und Gewindeeinsätzen. Das Erstgespräch ist unverbindlich.

Telefon: +49 (0) 176 820 42391


Weiterlesen

Hardware-Entwicklung – unsere OBD-2-Module, die genau diese Technik im Fahrzeug einsetzen.
Alle Engineering Guides

Grundlage sind ISO 11898-1 und die Empfehlungen von CAN in Automation. Die Segmentgrenzen im Rechner (TSEG1 ≤ 16, TSEG2 ≤ 8, SJW ≤ 4) entsprechen verbreiteten Controllern wie bxCAN, SJA1000 und MCP2515; CAN-FD-Controller nach M_CAN erlauben größere Werte. Verbindlich sind die Angaben im Datenblatt des eingesetzten Controllers.

Nach oben scrollen