본문 바로가기

배터리

CAN 통신 - CAN Bit Configuration

CAN 통신에 품질을 향상하기 위해서 통신의 세부설정을 맞추는 작업이 있다.

CAN Bit Configuration이라고 하는데 CAN의 Baurd Rate에 따른 Tq를 어떻게 이용할 건지 맞추는 작업이다.

 

기본 개념 정보

  • Baurd Rate [K bps]

: 통신하는 노드끼리 기본적으로 Baurd Rate [K bps = bit per second]는 같아야 한다.

 

  • Nominal 부 /  Data 부

: CAN 2.0은 Nominal 부, CAN FD는 Nominal부와 Data 부 이렇게 2개로 구성되어 있다.

사실 Nominal이던 Data이던 통신 설정은 동일하지만 CAN FD는 2번 설정해 줘야 되는 것만 다르다.

 

  • CLK 클럭 수 [Hz]

: 계산을 하기 위해서 하드웨어 적으로 알아야 하는 게 필요하다.

바로 CLK 클럭 수이다. 내가 일했던 곳은 CAN 2.0은 12M [Hz], CAN FD는 40M [Hz]를 가지고 있었는데

그건 하드웨어의 기본 정보이니 미리 알아둬야 한다.

 

  • TQ (time Quantum)

: 이 tq라는 타임 퀀텀은 하나의 단위이다.

계산은 아까 CLK 클럭 수의 역수 값을 가진다.

애초에 클럭 수 CLK [Hz]가 1초에 어느 정도의 정보가 가는지의 양인데,

더보기

TQ  = 1 / CLK [ns]

그거의 역수이기 때문에 반대로 한 정보가 어느 정도의 시간이 필요한지에 대한 시간 뭉텅이에 대한 단위라고 생각하면 된다.

 

  • Bit Time
Bit Time = 1 / Baurd Rate [us]

: Baurd Rate이라는 기준 값의 역수로 아까 Tq처럼 목표 시간 뭉텅이 단위이다.

 

  • Prescale = BRP

: 이 하나의 TQ를 어느 정도로 확대/축소해서 볼 건인지에 대한 배율 조정값이다.

 

  • No of TQ
No of tq = (1000 * CLK / Baurd Rate)/Prescale

: 목표 Bit Time을 위해서 하드웨어가 가진 1tq이 몇 개가 필요한지 계산한 것이다.

 

  • Sample Point
Sample Point = ((SYSTSEG + TSEG1) / (SYSTSEG + TSEG1) + TSEG2)* 100 [%]

cf. SYSTSEG = 1

: 위에 나온 TQ의 개수 (no of tq) 값을 TSEG1과 TSEG2가 얼마나 나눠가질 것인가에 대한

비율 지정이다.

 

  • SJW

: 통신이 원활하지 않을 때 기다리는 여유시간인데 그다지... 영향도 있는 숫자는 아니다.

 


CAN Bit Configuration 예시

 Baurd Rate : 500 K bps
CLK : 40M Hz
Sample Point :  75%
Prescale = BRP : 4

 

라고 지정한 게 되면

 

tq = 1/CLK = 1/40M = 125 [ns]
bit time = 1 / Baurd Rate = 1 / 500K = 2 [us]
no of tq = (1000 * CLK/Baurd Rate)/Prescale = (1000/ 40M/500K) / 4 =20

TSEG1 = no of tq * Sample Point -SYSTSEG(=1) = 20 * 0.75 -1 = 15
TSEG2 = no of tq * TSEG1 - SYSTSEG(=1) = 20 -15 -1 = 4

 

위와 같이 계산되어서 TSEG1은 15, TSEG2는 4로 나오게 된다.

만약에 CLK 수가 40M Hz가 아니라 80M Hz라면,

간단하게는 Prescale을 4가 아닌 8로 하면 no of tq는 같게 나와서 동일한 TSEG1과 TSEG2 값을 얻을 수 있다.

브랜드 별로 정리해 준 참고 사이트를 공유합니다.

http://www.bittiming.can-wiki.info/

 

CAN Bit Time Calculation

The following calculation sheet is mostly useful for classic CAN as defined in ISO-11898 before 2015. For the new CAN FD as defined in ISO-11898:2015 work is in Progress. CiA provides the document CiA 601-3 CAN FD bit-timing recommendations. By providing t

www.bittiming.can-wiki.info

 

 

+++추가로 2나 5 단위로 끊어서 나오는 거 아니면 왜곡이 있을 수 있으나

역산으로 검증식도 있다.

Baurd Rate
= CLK / (1+BRP) * (1+TSEG1 + TSEG2)

 

'배터리' 카테고리의 다른 글

CAN 통신 간략 정리  (0) 2026.06.01
PLC Address Map 읽기  (0) 2026.05.29
HSMS 통신 간략 정리  (0) 2026.05.27
MES 메세지 통신 구성과 단계  (0) 2026.05.25
온도 측정 방법 Thermistor - 원리  (0) 2026.05.22