Formular zur Berechnung der CAN Timingregister
Füllen Sie bitte die beiden Eingabefelder aus. Sie spezifizieren damit Ihre benutzte Taktfrequenz am CAN Controller und die von Ihnen geforderte Lage des "Sample-Point" in Prozent. CANopen legt den Abtastpunkt typischerweise auf 87.5 Prozent. Die folgende Tabelle gibt einen Überblick zu den empfohlenen Werten für die Berechnung der Bit-Timing Register:
Übersicht der empfohlenen Werte für die Berechnung der Bit-Timing Register entsprechend Standard CiA-301 V4.2
Bit Rate | Nominal bit time tb | Valid range for location of sample point | Recommended location of sample point |
1 Mbit/s | 1 µs | 75% to 90% | 87,5% |
800 kbit/s | 1,25µs | 75% to 90% | 87,5% |
500 kbit/s | 2µs | 85% to 90% | 87,5% |
250 kbit/s | 2µs | 85% to 90% | 87,5% |
125 kbit/s | 2µs | 85% to 90% | 87,5% |
50 kbit/s | 2µs | 85% to 90% | 87,5% |
20 kbit/s | 2µs | 85% to 90% | 87,5% |
10 kbit/s | 2µs | 85% to 90% | 87,5% |
Anschließend betätigen Sie den Knopf zum Absenden Ihrer Daten. Zurück kommt hoffentlich eine Tabelle mit brauchbaren Werten für Sie. Die Tabelle für den SJA1000-Mode (Like Philips or Intel) können Sie auch für CAN Controller:
- Philips 82C200, SJA1000
- Intel 82527
- Infineon (Siemens) C167CR, C515C, XC161C, XC164C, TwinCAN SAK82C900
- SPANSION (berichtet von Ralf Ebeling) und bestätigt durch eigene Erfahrung mit MB9054x Controllern
- Dallas 80c390 Dual CAN
- Toshiba TCAN
- Freescale msCAN (HCS12)
- Renesas RL78F (RSCAN)
nutzen, oder Sie wählen die Berechnung für:
- das Freescale TouCAN Modul,
- den Texas Instruments TMS320 (TMS320F2407,TMS320F28xx),
- den NEC aFCAN (V78K0,V850),
- das ATMEL CANary Modul (AT90CAN128, 89C51),
- das ATMEL AT91SAM9263 Modul (auch für AT91SAM7A3, AT91SAMX),
- the BOSCH C_CAN Modul (C8051xxx, MB96xxx, STR7xx, STR9xx...),
- den Microchip CAN/ECAN Controller (PIC18F, dsPic30, dsPic33),
- den Renesas M16C/29,
- den Renesas M32C/87 CAN controller
- den Renesas RCAN (H8SX).
- den RENESAS RSCAN
Oft wird gefragt: Was ist überhaupt der sample point?
Das folgende Bild zeigt die Aufteilung eines Bits der CAN
Nachricht, so wie es die ISO-11898 definiert.
Sync_Seg: | 1 tq |
Prop_Seg + Phase_Seg1: | 1 .. 16 tq |
Phase_Seg2: | 1 .. 8 tq |
(Die Berechnung der obigen Tabelle benutzt Prop_Seg = 0) |
Eine detallierte Betrachtung zur Einstellung des CAN Bit-Timing
können Sie einem Beitrag zur Internationalen CAN Konferenz
von Florian Hartwich und Armin Bassemir von Robert Bosch
entnehmen:
The Configuration of the CAN Bit Timing.
Prinzipiell wird die Dauer eines Bits im CAN Telegramm
in vier Segmente unterteilt. Jedes Segment besteht aus einer
bestimmten Anzahl von Time-Quanta - tq- kleinsten Zeiteinheiten.
- SYNC_SEG ist 1 Time Quantum lang.
Es wird zur Synchronisation der verschiedenen Bus-Knoten verwendet. - PROP_SEG ist programmierbar im Bereich von 1, 2,... 8 Time Quanta Längen. Es wird zur Kompensation der Signalverzögerung im CAN Netzwerk benutzt.
- PHASE_SEG1 ist programmierbar im Bereich von 1,2, ... 8 Time Quanta Längen. Dieses Segment wird zur Kompensation von Flankenfehlern benutzt und kann sich während einer Resynchronisation verlängern.
- PHASE_SEG2 ist normalerweise so lang wie PHASE_SEG1 plus Zeit für die Informationsverarbeitung. Auch dieses Segment wird zur Kompensation von Phasenfehlern durch die Anstiegsflanken benutzt. Es kann sich während einer Resynchronisation verkürzen. Daher muß PHASE_SEG2 mindestens so lang sein, wie der Wert für SJW.
- Zeit für die Informationsverarbeitung ist kleiner oder gleich 2 Time Quanta.
- Die maximale Anzahl der Time Quanta eines Bit beträgt zwischen 8 und 25.
Die Programmierung des Sample Point erlaubt die Optimierung des Bit Zeitverhaltens: Ein Sample Point in der Nähe des Bit-Endes erlaubt eine große Busausdehnung, lange Kabel. Ein früher Sample Point erlaubt flache Anstiegsflanken.
TouCAN
Das TouCAN Modul benutzt drei Register zur Programmierung
des geforderten Bit-Timings. Control Register 1 und 2
(CANCTRL1, CANCTRL2) enthalten die Werte für
PROPSEG = PROP_SEG( Bit 0-3 in CANCTRL1),
PSEG1 = PHASE_SEG1 (Bit 3-5), PSEG2 = PHASE_SEG2 (Bit 0-2)
und RJW (Bit 6-7 in CANCTRL2).
Das Prescaler Divide Register (PRESDIV) erlaubt die Auswahl
eines geeigneten Teilerverhältnisses für die Eingangsfrequenz
des Timinggenerators aus dem Systemtakt.
Für die Lage des Sample Point ist das Verhältnis aus
(SYNC_SEG + PROP_SEG + PHASE_SEG1) / (PHASE_SEG2)
ausschlaggebend. Die genaue Ableitung des Wertes für
PROPSEG = PROP_SEG hat eher akademische Bedeutung
und wird vom Programm nicht vorgenommen.
Es erfolgt die Ausgabe der Werte für PRESDIV, PROPSEG, PSEG1
und PSEG2.
SJA1000
Der SJA 1000 benutzt nur 2 Register zur Programmierung des
geforderten Bit-Timings. Ein Register für den Vorteiler BTR0
und ein Register für die Werte von PHASE_SEG1 und PHASE_SEG2.
PHASE_SEG1 wird hierbei für die Festlegung von
(PROP_SEG + PHASE_SEG1) nach CAN Spezifikation verwendet.
Für 125 kbit/s und 16 tq bei 16 (8)Mhz - sja100
BTR0 = 3, BTR1 = 1C.
Für 125 kbit/s und 16 tq bei 20 (10)Mhz - C515C
BTR0 = 4, BTR1 = 1C
CANary
Auch das CANary Modul, welches ATMEL z.B. im T89C51 und
CAN-AVR verwendet, benutzt zwei Register zur Programmierung
des geforderten Bit-Timings und ein Register für den Vorteiler,
ähnlich wie das TouCAN Modul von Freescale - CANBT1, CANBT2
und CANBT3. CANBT1 enthält BRP, den Bit-Timing Vorteiler in den
Bits 1-6, Wertebereich 0-63, CANBT2 das Programming Time Segment
PRS = PROP_SEG (Bit 1-3) und CANBT3 die Werte für
PHS1 = PHASE_SEG1 (Bit 1-3) und PHS2 = PHASE_SEG2
(Bit 4-6 in CANBT3).
Es erfolgt die Ausgabe der Werte für BRP, PRS, PHS1 und PHS2.
Für 125 kbit/s und 16 tq bei 16 (8)Mhz
BRP = 3, PRS = 4, PHS1 = 7, PHS2 = 1
AT91SAM9263
Diese Informationen gelten in gleicher Weise auch für den
AT91SAM7A3 und den AT91SAM7X.
Der CAN Controller, der in diesen Atmel Deviraten implementiert
wurde, hat eine Informationsverarbeitungszeit von 2tq (IPT=2tq).
Daher das das Phase2 Segment nicht kleiner als 2 sein.
Register: CAN_BR
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
- | - | - | - | - | - | - | SMP=0 |
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
- | BRP | ||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
- | - | SJW=0 | - | PROPAG | |||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | PHASE1 | - | PHASE2 |
TMS320
Texas Instruments benutzt bei den zwei Familien die 24xx
und 28xx die Bit Timing Register leicht unterschiedlich.
Die 240xA Fmilie benutzt zwei 16-bit Register.
Im BCR2 sind die unteren 8-bit für die Programmierung
des Vorteilers. BCR1 enthält die Werte von TSEG1 (4-bit) und
TSEG2 (3-bit) in den unteren Bits 0-6.
Die Familien 281x und 280x benutzen das 32-bit Register BTC
für jede Timing Konfiguration.
Der Wert für BTC ist zusammengesetzt aus BCR1 und BCR2 :
(BCR2
Beachten Sie biite, dass der CPU-Takt im direkten Zusammenhang
zu dem CAN Modul steht (max. 150 MHz für 281x).
Es gibt eine Besonderheit bei der Generierung von niedrigen
CAN Bitraten zu berücksichtigen für High-Speed Controller.
There is currently an issue for the high speed controllers
in generating low CAN bit rates.
Für einen Takt SYSCLKOUT von 150 MHz, ist die kleinst-mögliche
Bitrate 23,4 kbps.
Microchip PIC18F
Microchip benutzt im PIC18F drei 8bit Register. BRGCON1 enthält den Prescaler, BRGCON2 die Propagation und Phase Segment 1 Bits und BRGCON3 die Phase Segment 2 bits. Letztere werden allerdings nur genutzt, wenn SEG2PHTS (BRGCON2, bit7) gesetzt ist.
Microchip MCP2510
Anwender des MicroChip MCP2510 finden auf der Intrepics Web Site ein freies Tool zur Bit-Timing Berechnung.
Bosch C_CAN
Der C_CAN CAN Controller von Bosch ist in verschiedenen CPUs
integriert.
Daher werden BTR0 und BTR1 getrennt ausgewiesen.
Häufig werden diese jedoch als 16bit Wert konfiguriert.
Bittiming Register = (BTR1
Bittiming Register
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
BTR1 | - | TSeg2 | TSeg1 | |||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
BTR0 | SJW=0 | BRP |