CAN Bus Timing Calculator

Calculate CAN bus bit timing parameters (prescaler, TSEG1, TSEG2, SJW) for a target baud rate and sampling point.

CAN CAN bus bit timing baud rate sampling point prescaler SJW CANopen DeviceNet

Input values

Enter values and click Calculate to see results here.

Formula

Bit time = 1 / baud_rate TQ_count = F_osc / (baud_rate × prescaler) TSEG1 + TSEG2 = TQ_count - 1 (sync segment = 1 TQ)

Worked Example

Given: 8 MHz oscillator, 500 kbps baud rate, 80% sampling point.

Step 1: Bit time = 1/500,000 = 2 µs

Step 2: TQ = 8,000,000 / 500,000 = 16 TQ per bit

Step 3: Sync = 1 TQ, TSEG1 = 12 TQ (75%), TSEG2 = 3 TQ (18.75%), SJW = 1 TQ

Result: Prescaler=1, TSEG1=12, TSEG2=3, SJW=1, Sample=81.25%

Verify with your CAN controller register format — some use TSEG1 as propagation + phase1.

Engineering Notes

  • Sampling point: Typical values: CANopen = 87.5%, DeviceNet = 80%, high-speed CAN = 75-80%. Check your protocol specification.
  • SJW (Sync Jump Width): Controls resynchronization. Use 1-2 TQ. Larger SJW allows more clock tolerance but reduces noise immunity.
  • Propagation segment: Accounts for signal propagation delay. For cables > 100 m, increase TSEG1 to accommodate the delay.
  • Oscillator tolerance: Standard CAN requires ±1.5% oscillator accuracy. Use a crystal, not an RC oscillator.
  • CAN FD: CAN FD uses separate timing for arbitration and data phases. This calculator covers classic CAN only.

References

  • ISO 11898-1 — CAN data link layer
  • CAN in Automation (CiA) — Bit timing recommendations