Bit Timing Calculator for CAN FD

This page tries to help you calculate the bus timing parameters needed in order to set up a reliable CAN system.

1. Device Characteristics

We need to know three device characteristics in order to do the system analysis; Clock Frequency of the device, the deviation of the device clock (measured in ppm, parts per million), and the device's total node delay - i.e. the sum of input and output delay of the device. Your CAN device supplier should be able to assist you with these values. Do not worry about the prescalers for now, if possible, they can be adjusted later in the Individual Bus Timing Parameter table at the bottom of the page.

FREQUENCY (kHz)TOLERANCE (ppm)NODE DELAY (ns)PRESCALER
NOMINAL
PRESCALER
DATA
40 0005 00020011
Base Frequency: 16 000 kHz
System Tolerance: 4000 ppm
System Device delay: 200 ns
  • (kHz)
  • (ppm)
  • (ns)

When specifying more than one device, you will notice that the Base Frequency is the lowest common divisor. We will use this Base Frequency to calculate a common sample point for all of the devices. The System Tolerance is the worst case tolerance which occurs when the two "worst" devices talk to each other, i.e. twice the highest tolerances specified. (We assume that your system actually has more than one of each device specified in the table). Likewise, the System Node Delay is twice the highest values in the Node delay columnn . Likewise, the System delay is the sum of the highest input and output delays.

2. Bitrates

Now we should specify the Nominal bitrate and Data bitrate we would like our system to use.

  • (Bit/s)
  • (Bit/s)

3. Calculate System Parameters

Hit the "Recalculate" button to force a recalcutaion

Warnings and Messages:

Review values above and click the previous "Recalculate" button.

The below two tables shows the calculated values, first for the nominal bitrate and then for the data bitrate. The tolerances df1 through df5 correspond to the CAN FD required tolerances. We here use the notation "2 * df" since the system tolerance calculated above is the actual tolerance needed. In the nomenclature, df actually stands for half the tolerance when assuming that the tolerance is symmetrically +/-df. Our system tolerance needs to be better (i.e. smaller) than "2 * df", hence the (min) in the table below.

3.1 Nominal bit calculations at base frequency

These values have been calculated based on the base frequency and nominal bitrate. Note the max cable length (as given by Tbus_time) below. The sample point may be adjusted using the +/- buttons. Moving the sample point results in a trade off between between cable length and tolerance margin.

Bit configuration for nominal bitrate Bit/s and frequency kHz:

T q (ns) Tprop_seg (ns) Tbus_time (ns) approx. cable length (m) Prescaler: Bit time: (Tq) Tsync_seg (Tq) Tprop_seg (Tq) Tphase_seg1 (Tq) Tphase_seg2 (Tq) sjw (Tq) sample point % 2*df 1 (min) (ppm) 2*df 2 (min) (ppm)
3.2 Data bit calculations at base frequency

These values have been calculated based on the base frequency and data bitrate. You can adjust the sample point by using the +/- buttons.

Bit configuration for data bitrate Bit/s and frequency kHz:

T q (ns) Prescaler: Bit time: (Tq) Tsync_seg (Tq) Tprop_seg (Tq) Tphase_seg1 (Tq) Tphase_seg2 (Tq) sjw (Tq) sample point: % 2*df 3 (min) (ppm) 2*df 4 (min) (ppm) 2*df 5 (min) (ppm)

4. Individual Bus Timing Parameters

If we did not get any errors when calculating the parameters at base frequency, we now transform the calculated system parameters into device specific parameters. Each row in the table below corresponds to a device frequency specified earlier. You can now change the prescaler if you want to. Notice that if any tolerance is inadequate, the corresponding cell will be colored red.

Nominal Data Tolerance (ppm)
FREQUENCY (kHz) Tseg1 Tseg2 SJW SP PRESCALER Tseg1 Tseg2 SJW SP PRESCALER SYSTEM df1 df2 df3 df4 df5

Note: The Data prescaler must be equal to 1 or 2, in order for the transmitter delay compensation mechanism to work according to the ISO CAN FD specification.

If the table is incomplete, please see error messages above.

My Last Timings

  • {{canfd.id | date:'dd-MM-yyyy' }}

    {{canfd.bitrate}} (Bit/s),{{canfd.data_bitrate}}(Bit/s), {{canfd.nominalBitConfiguration}}Tq, {{canfd.dataBitConfiguration}}Tq

    View
  • No data