PortDock

CAN 비트 타이밍 계산기

CAN 클럭·비트 속도·목표 샘플 포인트로 프리스케일러, TQ 수, PROP_SEG·PHASE_SEG1·PHASE_SEG2·SJW 조합을 찾고 조합마다 클럭 허용 오차를 계산합니다(고전 CAN).

PROP_SEG 최소값 (선택) — 왕복 지연으로

BRPTQTQ 수PROPPS1PS2SJWTSEG1 · TSEG2샘플 포인트속도 오차클럭 허용 오차

기본값(8 MHz, 125 kbit/s, 87.5 %)은 예시입니다. 샘플 포인트는 상위 규격(CANopen 등)이나 네트워크 설계 문서가 정한 값을 넣고, 같은 버스의 노드는 같은 비트 시간으로 맞춥니다.

값을 바꾸면 바로 다시 계산합니다. 계산은 이 브라우저 안에서만 하고, 입력한 값은 어디에도 보내지 않습니다.

비트 하나의 구조

CAN 비트 하나를 16 TQ 로 나눈 그림: SYNC 1, PROP_SEG 5, PHASE_SEG1 8, PHASE_SEG2 2 TQ, 샘플 포인트는 PHASE_SEG1 끝으로 87.5 %
8 MHz ÷ 프리스케일러 4 = TQ 500 ns, 16 TQ = 8 µs = 125 kbit/s. 샘플 포인트는 PHASE_SEG1 의 끝입니다.
  • TQ = 프리스케일러(BRP) ÷ CAN 클럭
  • 비트 시간 = (1 + PROP_SEG + PHASE_SEG1 + PHASE_SEG2) × TQ, 비트 속도 = 1 ÷ 비트 시간
  • 샘플 포인트 = (1 + PROP_SEG + PHASE_SEG1) ÷ 전체 TQ 수
  • 클럭 허용 오차 Δf < SJW ÷ (20 × 전체 TQ) 그리고 Δf < min(PS1, PS2) ÷ (2 × (13 × 전체 TQ − PS2))

구간 규칙

  • SYNC_SEG 는 1 TQ 로 고정, PROP_SEG 1~8 TQ, PHASE_SEG1 1~8 TQ, 한 비트는 8~25 TQ (AN1798 표 1).
  • PHASE_SEG2 는 정보 처리 시간(IPT, 2 TQ) 이상. Microchip 문서는 PHASE_SEG1 이하로, AN1798 표 1 은 MAX(IPT, PHASE_SEG1) 로 적습니다 — 이 계산기는 «IPT ≤ PHASE_SEG2 ≤ MAX(IPT, PHASE_SEG1)» 로 검사합니다.
  • SJW(재동기 점프 폭)는 1 이상, 4 와 PHASE_SEG1 이하. 이 계산기는 AN1798 4단계대로 min(4, PHASE_SEG1) 을 씁니다.
  • 레지스터에는 보통 TSEG1(= PROP_SEG + PHASE_SEG1)·TSEG2(= PHASE_SEG2)·BRP·SJW 를 넣는데, «값 − 1» 로 넣는지는 칩마다 다릅니다. 칩 매뉴얼의 비트 타이밍 레지스터 설명을 따르세요.

클럭 허용 오차란

  • 노드마다 클럭이 조금씩 다르므로, 재동기 사이에 쌓이는 위상 오차를 SJW 와 위상 구간이 흡수해야 합니다. AN1798 식 (10)은 비트 채우기로 보장되는 10비트, 식 (11)은 오류 플래그 뒤 13비트 동안의 조건입니다.
  • 두 식 중 작은 값이 그 조합에서 허용되는 클럭 오차(±)입니다. AN1798 예제 2(8 MHz, 125 kbit/s)는 16 TQ(PS1·PS2 6)일 때 1.25 %, 8 TQ(PS1·PS2 3)일 때 1.485 % 로, TQ 수가 적은 쪽이 오히려 여유가 큽니다.
  • 샘플 포인트를 뒤로 미루면(PHASE_SEG2 를 줄이면) 긴 버스의 전파 지연에는 유리하지만 식 (11)의 허용 오차는 줄어듭니다.

PROP_SEG 와 버스 길이

PROP_SEG 는 버스 양 끝 노드 사이 왕복 지연을 덮어야 합니다: t = 2 × (선로 지연 + 송신기 지연 + 수신기 지연), PROP_SEG ≥ 올림(t ÷ TQ). AN1798 예제는 선로 5 ns/m, 트랜시버 150 ns 를 씁니다 — 실제 값은 케이블·트랜시버 데이터시트에서 가져옵니다. 칸을 비워 두면 PROP_SEG 는 1 TQ 이상이면 됩니다.

자주 묻는 것

샘플 포인트 87.5 % 는 어떻게 나오나요?

16 TQ 에서 PHASE_SEG2 를 2 TQ 로 두면 (16 − 2) ÷ 16 = 87.5 % 입니다. 8 TQ 라면 PHASE_SEG2 가 1 TQ 여야 해서 IPT(2 TQ) 규칙 때문에 87.5 % 를 만들 수 없고 최대 75 % 입니다.

조합이 하나도 안 나오면?

클럭이 비트 속도의 정수배(프리스케일러 × TQ 수)로 나누어떨어지지 않는 경우입니다. 허용 속도 오차를 조금 주거나, CAN 클럭을 바꾸거나, 프리스케일러 최대를 칩에 맞게 늘립니다.

TQ 수는 많을수록 좋은가요?

샘플 포인트를 잘게 고를 수 있지만 클럭 허용 오차가 늘 커지지는 않습니다. 결과 표의 «클럭 허용 오차» 열과 실제 발진기 정밀도(수정 발진기·내부 RC 등)를 비교합니다.

CAN FD 의 데이터 구간도 되나요?

이 계산기는 고전 CAN(CAN 2.0) 규칙으로 계산합니다. CAN FD 데이터 구간은 다른 범위와 송신기 지연 보상이 있어 칩 매뉴얼을 따릅니다.

출처