CAN 동기화(Synchronization)CAN 수신자가 송신자와 같은 시간 기준으로 비트를 샘플링하도록 유지하는 메커니즘. 초기 동기화로 프레임 시작 시점을 맞추고, 프레임 전송 중에는 신호 에지를 이용해 수신자 타이밍을 지속적으로 재조정한다.

왜 필요한가

  • CAN 프레임을 올바르게 수신하려면 수신자가 프레임 시작 시점비트 duration을 알아야 한다.
  • Baud rate가 네트워크 내 모든 노드에서 동일하게 설정되므로 비트 duration은 이론적으로 공유되지만, 각 노드의 크리스탈에는 부정확성이 있어 실제 속도가 상이.
  • 최대 5 비트 시간까지 동일 값이 연속될 수 있어 (스터핑 5+1 규칙의 상한), 수신자는 이 구간 동안 자체 타이밍 검증 수단이 없다.
  • 보정이 없으면 Tx/Rx 노드 간 드리프트가 누적되어 비트 에러로 이어짐.

비동기 전송과 클럭 드리프트

  • CAN은 공통 클럭 선이 없는 비동기 전송(직렬 통신과 병렬 통신) → 송·수신자가 각자의 로컬 클럭을 사용.
  • Clock Drift: 크리스탈 오차로 인해 장시간 반복 시 파형이 점진적으로 어긋나는 현상.
    • 예: 동일 주기 신호를 42 초 후 측정하면 초기 대비 파형이 어긋남.
    • 해결: CAN은 프레임 내 falling edge마다 재동기화를 수행해 드리프트를 상시 보정.

Clock Synchronization 분류

유형목적
Offset Correction클럭의 시작 시점 일치
Rate Correction클럭 주파수 일치

CAN의 Hard Synchronization은 Offset Correction에 해당 (SOF 에지로 Bit time 재시작), Bit Re-synchronization은 Rate Correction에 해당 (SJW로 TSEG 길이 조정).

동기화의 두 유형

유형시점기준 에지분류
Initial / Hard Synchronization프레임 시작bus idle의 recessive → SOF의 dominant (1 → 0 falling edge)Offset Correction
Bit Re-synchronization프레임 진행 중프레임 내 모든 falling edge (stuff bit도 포함)Rate Correction
  • Hard Sync: SOF 수신 시 내부 Bit time을 SYNC_SEG 시점에 강제로 재시작. 모든 노드가 동일한 기준점으로 cyclic bit-duration timer 가동.
  • Bit Re-sync: 프레임 내 변화 에지에서 SJW(Synchronization Jump Width) 설정만큼 SEG1 / SEG2의 길이를 조정 → 수신자 비트 시간을 송신자 비트 시간에 맞춰 단축(shortening) 또는 연장(prolongation) 재보정.
    • 가능한 한 자주 동기화를 확인. 비트 스터핑이 프레임 비트 스트림 내에 추가 falling edge를 보장.

위상 에러 () 판별

수신 노드는 버스 에지를 자신의 내부 Bit Time과 비교해 위상 에러 를 계산.

의미
비트 길이 일치 (동기 유지)
수신자 Bit Time이 짧음 (수신 클럭 빠름)
수신자 Bit Time이 (수신 클럭 느림)

위상 에러만큼 PHASE_SEG 길이를 조정해 보정 (최대 SJW 범위 내).

Nominal Bit Time 구조

Nominal Bit Time: 설계자가 네트워크의 비트 타임에 명목상 할당하기 원하는 값. 1 비트 전송을 위한 Bit Time은 4개 Segment로 구성.

세그먼트길이역할
SYNC_SEG1 (고정)버스 노드 동기화. 수신자가 송신자와 동기 상태면 이 구간 안에 에지가 관찰됨
PROP_SEG가변신호 전파 지연(배선 + 트랜시버) 보정
PHASE_SEG1가변Edge phase error 보정 (연장 가능, 수신 클럭이 빠를 때)
PHASE_SEG2≥ 2 후속 비트 레벨 계산용 (단축 가능, 수신 클럭이 느릴 때)
  • Sampling Point: PHASE_SEG1과 PHASE_SEG2의 경계 — 이 시점에 비트 값(0/1)을 결정.
  • (Time Quantum): Bit time을 구성하는 최소 시간 단위.

Note

구현에 따라 PROP_SEG와 PHASE_SEG1을 합쳐 TSEG_1, PHASE_SEG2를 TSEG_2로 표기하기도 한다 (TC275 등). 논리적 구조는 동일.

동기 판정

  • 에지가 SYNC_SEG 안에 수신되면 동기 상태.
  • 에지가 너무 일찍 도착하면 → 수신자 클럭이 느림 → TSEG_1 연장 또는 다음 비트의 TSEG_2 조정으로 보정.
  • 에지가 너무 늦게 도착하면 → 수신자 클럭이 빠름 → TSEG_1 혹은 현재 비트의 TSEG_2 단축.

Propagation Delay

가장 멀리 있는 두 노드 간 신호가 왕복하는 데 걸리는 시간. CAN 중재와 ACK 구간에서 왕복이 1 비트 시간 내에 끝나야 한다.

— 전송 매체 지연

  • 꼬임쌍선 UTP: = 5 ns/m.
  • 1 µs 동안 200 m, 0.5 µs 동안 100 m 이동.

— 전자 부품 지연 (약 100 ns)

  • , : CAN Controller Bit 송수신 처리 시간.
  • , : CAN Transceiver의 데이터 변환 시간.
  • : 실제 신호 인식 시간 (히스테리시스, 인덕턴스·커패시턴스 의존).

대표 트랜시버 타이밍

항목MINTYPMAX단위
TXD → Bus active2555110ns
TXD → Bus inactive256095ns
Bus active → RXD2050110ns
Bus inactive → RXD4595155ns
TXD dominant time-out250450750µs
propagation (TXD→RXD)250ns

PROP_SEG 최소 시간

송신→수신 왕복을 1 비트 시간 내에 수용하려면:

100 m 구리선 예시: .

Data Rate vs Bus Length

중재·ACK 구간의 왕복 지연을 수용해야 하므로 버스 길이가 길수록 Baud rate 상한이 낮아진다.

Bit rate최대 버스 길이
1 Mbit/s (HS)40 m
500 kbit/s130 m
250 kbit/s270 m
125 kbit/s530 m
100 kbit/s620 m
50 kbit/s1.3 km
10 kbit/s6.7 km
5 kbit/s10 km
  • 반대로 주어진 Baud rate에서 허용 가능한 최대 길이도 결정됨.
  • 이 제약은 CAN FD에서 페이로드 구간만 Baud rate를 올리는 BRS(Bit Rate Switch) 도입의 직접적 근거.

버스 길이 제약 조건

하나의 Bit Time 내에 두 노드가 서로의 비트를 인식할 수 있어야 한다:

  • Arbitration Phase — 모든 노드가 서로의 전송 비트 값을 비교 가능해야 함.
  • Acknowledge Phase — 송신자는 수신자의 ACK 신호를 1 비트 시간 내에 수신해야 함.

버스 길이가 과도하면 Propagation delay가 커져 Sampling Point가 어긋나고 Error 또는 Arbitration 실패 발생.

TC275 CAN 통신 속도 설정 예시

Infineon TC275 MCU의 CAN_NBTRx 레지스터는 비트 타이밍을 필드로 구성.

필드역할
BRPBaud Rate Prescaler (5:0)
DIV8Prescaler 8배수 선택 (0: / 1: )
TSEG1Sample 전 세그먼트 길이 (= PROP_SEG + PHASE_SEG1)
TSEG2Sample 후 세그먼트 길이 (= PHASE_SEG2)
SJWRe-sync Jump Width (조정 가능한 최대 수)

예시: , DIV8=0, TSEG1=14, TSEG2=3, BRP=9

  • .
  • .
  • .
  • .
  • Bit time = 500 kbps.
  • Sampling Point = .

Multiple Transmissions during Bit Time

송신 비트가 수신자에 도달하기까지 전파·전자적 지연이 누적된다.

  • 단일 송신자만 있는 구간(일반 페이로드 전송)에서는 지연이 문제되지 않는다.
  • 그러나 중재(Identifier + RTR)와 ACK 비트는 여러 송신자가 동시에 비트를 버스에 구동한다.

ACK 비트의 왕복 예시

  • 노드 A가 recessive ACK 비트 송신.
  • 노드 B·C가 이를 수신 후 dominant ACK을 버스에 구동 → A에게 다시 돌아옴.
  • A가 관찰하는 ACK 비트의 총 지연 = 2 × 전자 지연 + 2 × 버스 전파 지연.
  • 따라서 노드들은 비트 시간 내 다소 늦은 시점에서 비트 값을 샘플링 → 긴 버스·느린 전자 회로일수록 샘플 포인트가 뒤로 밀림.

같이 보기