08. CAN? 그거 깡통아니에요?

owljun·2025년 8월 2일
post-thumbnail

CAN 통신이란,

Controller Area Network

  • Non-Host

CAN 통신을 이해해보면서 굳이 한 마디로 CAN을 정의해보자면 이렇게 정의할 수 있을것 같다.

  • " 신호등, 교통경찰 없는 도로.. 달릴 차만 있으면 진입가능한데 신기하게 통행이 잘됨 "

BOLD체로 표현된 말을 잘 기억해두자, 통행이 잘되는 이유를 알면 어디가서 CAN통신 안다고 할 수 있다.


배경

어떤 기술도 이유없이 나온 기술은 없다. CAN통신은 어떤 문제를 해결하기 위해 등장했을까?

  • 자동차 산업의 발전

    • 자동차 수요가 늘고, 도로가 잘 깔리고, 네비게이션 등이 고도화되며 많은 사람들이 차를 구매하며 시장이 커짐
    • 경쟁이 심화되고, 회사들은 더 편안하고, 편리한 기능을 추가하기 시작함 -> ECU가 많아진단 소리
    • 높은 안정성과 환경 오염 방지 기술을 만들어야했음
    • 위 모든것을 충족하면서 가격은 저렴하게 경쟁력을 만들어감
  • 우리가 주목할 것

    • 기능이 추가된다 == 어떠한 시스템이 추가된다
    • ECU가 많아진다 -> 각 ECU간 통신, 동작을 위해 전선이 많아진다.
    • 차 라는 공간은 협소한데, 배선이 많아짐으로 인해 공간차지가 심해지고 복잡해져 기능 추가 등의 수정작업이 힘들어짐.
    • 이를 해소하고자 CAN 통신이 만들어짐.

CAN이 제공한 솔루션

단 두개의 선으로 모든 통신을 가능하게 하다.

  • ISO11898-2 규격의 CAN 통신 예시 그림이다. (ISO11898의 종류는 조금 뒤 정리해보자)

글 처음부분에 나온 한 마디가 기억나는가?
여기서 CAN HIGH , LOW 케이블이 도로이고, CAN트랜시버,컨트롤러,MCU 이 3개가 합쳐진 한 덩어리(ECU)가 자동차로 비유된다.
즉, 여기서 하나의 노드(자동차)를 추가하려면 그냥 케이블에 붙히기만 하면 된다.

  • 기존의 얽히고 섥힌 배선들이 굉장히 깔끔하게 정리될 수 있음을 유추할 수 있다.

  • CAN이 왜 필요한지, 왜 사용해야하는지 깨달았다면 좀 더 깊이 들어가보자.


용어 정리

  • ISO 11898
    : CAN을 정의해놓은 표준규격 -> 통신을 한다 라는 것은 서로가 어떠한 '약속'을 지켜야만 가능하기 때문에, 항상 표준이 존재한다.
  • ECU
    : MCU , 센서 등 어떠한 기능을 위해 구성된 하나의 시스템
  • 논리 0 , 1
    : 논리0 == 우성 == dominant
    : 논리1 == 열성 == recessive
  • CAN FRAME
    : CAN 통신에 사용되는 일종의 데이터 프레임
  • CAN 컨트롤러
    : ISO 11898-1 규격에 맞게끔 ID Arbitration , 데이터 필드 구조, 에러 검출 , 프레임 종류 , 버퍼처리 및 인터럽트 조건 등을 설정하여 구현된 기기
  • CAN 트랜시버
    : ISO 11898-2 or 3 규격에 맞게끔 신호를 주고받는 방식을 정의, 구현되있는 기기

ISO11898

겁먹지 말라, 외계어가 아니다.
CAN 통신과 관련된 규정들을 표준화 시킨 것.

  • 종류
표준 번호설명특징 요약
ISO 11898-1데이터링크 & 객체 계층CAN의 프레임 구조, Arbitration, ID, CRC 등
ISO 11898-2High-speed 물리 계층 (최대 1Mbps)일반 차량용 CAN (TJA1050 등 사용)
ISO 11898-3Low-speed, fault-tolerant 물리 계층저속이지만 회로 단선/충돌에 강함
ISO 11898-4Time-Triggered CAN (TTCAN)시간 예약 기반의 deterministic 통신
ISO 11898-5High-speed 물리 계층 + wake-up 기능슬립모드 ECU 깨우기 가능
ISO 11898-6Selective wake-up 기능 (CAN Partial Networking)필요한 ECU만 깨움 (전력 절감)

복잡하다, 하지만 입문자라면 1~3번(+@4번) 위주로 먼저 학습을 하자, 계속하다보면 자연스럽게 궁금해지고 , 나머지도 체화시킬 수 있다.

  • ISO 11898-1

    • CAN 컨트롤러와 매칭된다.
  • ISO 11898-2

    • CAN 트랜시버와 매칭된다.
    • 고속 통신을 지원한다.
  • ISO 11898-3

    • CAN 트랜시버와 매칭된다.
    • 저속통신을 하지만, 견고한 통신(안정성과 속도 트레이드오프)을 지원한다.
  • ISO 11898-4

    • 통신 시간을 예약하고, 우선 실행된다.
    • 본인의 시간이 되면 전송권을 가지게 되며, 실시간성을 강하게 보장할 수 있다.
    • 항공/산업용 고정밀 기기 등에 사용된다.

트랜시버 -> 11898-2 ? 11898-3 ?

왜 굳이 2가지 모드로 나눴을까?
그리고 이게 표준으로 까지 남아있을만큼 서로 대체불가능한 역할이 존재하는걸까?

차량 내부에는 “속도가 중요한 회로”와 “안정성이 중요한 회로”가 공존한다.

  • 11898-2 → 속도 필수 구간
    • 실시간 제어: ABS, 엔진 제어, 미션
    • 수 ms 단위 지연도 치명적 → 빠른 통신 우선
  • 11898-3 → 끊기면 안 되는 구간
    • 도어락, 창문, 라이트, 에어컨
    • 느려도 되지만, 문이 안 열리면 치명적
  • 비교표
항목ISO 11898-2 (High-speed CAN)ISO 11898-3 (Low-speed, fault-tolerant CAN)
속도최대 1 Mbps최대 125 kbps
주요 용도파워트레인, ABS, ECU 간 실시간 제어윈도우, 도어락, 센서 등 바디 제어
물리적 구조버스형 + 종단저항 필수분기 허용 + 각 노드 종단저항 포함 가능
전압±2V 이상 차동 신호±0.5V ~ ±2V 저전압
내결함성노드 단선 시 전체 통신 마비1선 끊겨도 통신 유지 (fault-tolerant)
복구성회로 재시작 필요자동 복구 (Bus-off → Active 전환)
비용낮음 (간단 구조)높음 (복잡한 트랜시버)
소비전력상대적으로 낮음상대적으로 높음

11898-2 구성

  • 버스의 양 종단에 120옴의 저항이 필요하다.
    • 저항이 없으면? 버스의 끝에 도달한 전자에 충격파(반사파)발생 , 그 때 발생한 에너지가 원래 신호에 간섭을 일으킬 수 있다.
    • 이를 방지하기위해 , 저항으로 방향을 유도해주어 충격을 흡수해준다 라고 이해할 수 있다.
  • 구성이 간단,저렴하며 , 전력소모가 높지않다.
  • 하지만 두 선 (High, low) 중 하나라도 단선이 될 시 전체 시스템이 마비된다.
  • Bus-off시 회로 재시작이 필요

11898-3 구성

  • 각 트랜시버에 5k옴가량의 종단저항이 달리게 된다.
  • 트랜시버의 fault-tolerant 구조를 통해 하나의 선이 단선되어도 신호가 무엇인지 파악할 수 있어, 원활한 통신이 가능하다.
  • 복잡한 트랜시버로 인하여 , 구성난이도가 높으며, 비용,전력소모또한 상대적으로 높다.
  • Bus-off시 자동 복구가 가능

Logic 0 , Logic 1

Logic1 == recessive == 열성
Logic0 == dominant == 우성

  • 차동 전압을 통해 논리값을 구할 수 있다.
    Recessive = (CANHIGH) - (CANLOW) = 약 0V -> 논리 1
    Dominant = (CANHIGH) - (CANLOW) = 약 +2.0V -> 논리 0

이게 왜 필요한가?
충돌발생상황 , CAN 버스 내부 데이터 충돌시 bit 값이 Dominant 인 비트가 우선순위를 가지게 된다. (CSMA/CR)
즉, 충돌없이 원활한 통신이 가능한 핵심적인 이유가 여기에 있다.

  • 시나리오로 이해하기

Node1 , 2 , 3 이 동시에 데이터를 보내는상황
각 노드의 데이터는 다음과 같다.(간략화된 예시)
Node1 : 11111111
Node2 : 00110011
Node3 : 00000000

Node1 : 1 | Listen Mode
Node2 : 0 | 0 | 1 | Listen Mode
Node3 : 0 | 0 | 0 | 0 | 0 ....

즉 ID 값이 낮을수록 우선순위가 높다.


CAN 데이터프레임 자세히 들여다보기

이제 본격적으로, CAN 통신의 데이터가 어떤 구조로 흘러가는지를 뜯어보자.

자동차에선 수많은 ECU들이 각자의 메시지를 보내고, 동시에 버스에서 싸우고 양보하면서 돌아간다.
이 전쟁터에서, 데이터 한 줄을 보내기 위한 프레임은 생각보다 꽤 체계적이다.


출처 : 나무위키

필드명길이설명
SOF (Start of Frame)1bit프레임의 시작을 알리는 신호
Arbitration Field12bit (ID 11bit + RTR 1bit)ID 우선순위와 전송 타입 결정
Control Field6bitDLC (데이터 길이 코드) 포함
Data Field0~8byte전송할 실제 데이터
CRC Field15bit + 1bit에러 검출용 CRC + CRC delimiter
ACK Field2bit수신 확인
EOF (End of Frame)7bit프레임 종료 표시
IFS (Interframe Space)3bit다음 프레임까지 대기 시간

각 비트 하나하나가 모두 기능이 있고, 이 구조가 바로 CAN 통신의 뼈대다.


주요 필드 자세히 보기

  • SOF (Start of Frame)
    • 항상 dominant(0) 비트로 시작

모든 노드가 이 신호를 기준으로 동기화를 시작한다
즉, 하드 동기화 트리거 역할


  • Arbitration Field
    • 11bit ID + 1bit RTR

이 ID 값이 바로 우선순위의 핵심
ID가 낮을수록 우선순위가 높다 → CAN의 CSMA/CR 기반


  • RTR 비트:
    • 0: 데이터 프레임
    • 1: 원격 프레임 (데이터 요청용)

  • Control Field
    • 데이터 길이 코드(DLC: Data Length Code) 포함
    • 최대 8바이트까지 지정 가능
    • 나머지 비트는 예약(Reserved)

  • Data Field
    • 실제 센서값, 명령어, 상태정보 등을 담는 부분
    • 최대 8바이트 (64bit)

여기에 들어가는 데이터는 네트워크 상에서 그대로 노출된다 → 암호화는 별도 구현 필요


  • CRC Field
    • 송신자가 보낸 데이터로부터 계산한 CRC값
    • 수신자는 받은 데이터를 동일한 방식으로 CRC 계산
    • 일치하지 않으면 -> 에러 프레임 발생

  • ACK Field
    • 송신자는 dominant(0)을 내보낸다
    • 수신자가 제대로 받았으면 → recessive(1)를 dominant(0)으로 덮어씀
    • 덮어씌우지 않으면? → ACK 에러 발생

  • EOF / IFS
    • End of Frame: 모든 통신 종료 신호 (recessive 상태 7bit)
    • Interframe Space: 다음 프레임 전 대기 시간 확보

  • 표준형 vs 확장형
    • 표준형: 11bit ID (ISO 11898-1)
    • 확장형: 29bit ID (IDE=1인 경우)
    • 표준형 ID가 더 우선순위 높음

즉, 혼합 네트워크에서 확장형 노드가 많아도
표준형 ID가 작은 메시지는 우선권을 가진다


CAN 프레임 종류

종류설명
Data Frame일반적인 데이터 전송용
Remote Frame요청 메시지 (RTR=1)
Error Frame에러 상황 발생 시 전송됨
Overload Frame수신이 너무 빠르거나 처리 못할 경우 전송

동기화

CAN은 동기식 통신이 아니다.
하지만 비트 타이밍을 위해 강력한 동기화 메커니즘을 갖는다.

  • 하드 동기화

    • SOF가 떨어지는 순간 모든 노드가 기준 타이밍 리셋
  • 소프트 동기화

    • 열성 → 우성으로의 전이(falling edge)에서
    • 각 노드가 자기 클럭을 약간씩 조정 (Clock Drift 보정)

ID 중재

CAN이 충돌 없이 통신을 성공시키는 핵심 메커니즘 = ID Arbitration

  • CAN은 여러 노드가 동시에 전송을 시도해도, 우선순위가 높은 쪽만 살아남는 구조다.
  • ID가 낮을수록 우선순위가 높다

작동 방식 (CSMA/CR)

  • 여러 노드가 동시에 버스 감지 → 비어있으면 전송 시작
  • 비트 단위로 비교
    • 자신은 1(recessive)을 냈는데 버스에 0(dominant)이 감지되면? -> 패배
  • 우선순위(ID)가 가장 낮은 노드만 살아남아 계속 전송
  • 나머지는 중단하고, 다시 대기 → 재전송 준비

버스 충돌이 “물리적으로 일어났는데도”,
비트 우선권을 이용해 손실 없이 중재되는 게 CAN의 특징


에러의 종류

CAN은 단순한 에러검출 수준이 아니라,
스스로 에러를 감지하고 에러 상황을 전파하며, 자신을 격리할 수 있는 수준의 자가복구 구조를 가진다.

  • 에러는 총 5가지 유형으로 분류된다:
에러 종류설명
비트 에러(Bit Error)보낸 비트와 버스에서 읽힌 비트가 다름
스터핑 에러(Stuff Error)동일 비트 5개 이상 연속 발생 → 스터핑 룰 위반
CRC 에러수신자가 계산한 CRC값 ≠ 송신자 CRC
포맷 에러(Form Error)프레임 구성이 규칙에 어긋남 (예: EOF 이상 등)
ACK 에러수신자가 ACK 비트에 응답하지 않음 (아무도 받지 않았다는 뜻)

이 에러들은 수신자든 송신자든 누구나 감지하면
곧바로 에러 프레임을 전송해서 전체 노드에게 알린다.


STATE (에러 상태 관리)

CAN 노드는 에러 발생 빈도에 따라 스스로의 상태를 변화시킨다.

  • 상태 3단계
상태설명
능동(Active)정상 상태. 에러 발생 시 에러 프레임 전송 가능
수동(Passive)에러 누적 → 에러 프레임 전송 불가. 자기 에러만 카운트
Bus-Off심각한 에러 누적 시, 네트워크에서 완전 격리됨
  • 내부 동작

    • 각 노드는 Tx Error Counter / Rx Error Counter를 갖고 있음
  • 기준 이상으로 누적되면 -> 수동 -> 그 이상이면 -> Bus-Off

  • Bus-Off 상태란?

    • 해당 노드는 CAN 버스에 어떠한 신호도 내보낼 수 없음
    • 스스로 회복 불가
      • (MCU에서 명시적으로 Bus-on 복귀 로직 필요)

이 구조 덕분에, CAN은 고장난 노드가 전체 네트워크를 먹통으로 만들지 않도록 설계된다

CAN의 중재는 충돌이 아니라, "우선순위 경쟁"이다
에러는 단순히 확인하는 게 아니라, 네트워크 전체에 즉시 통보되고 자동 회복 로직이 존재한다
노드는 상황에 따라 스스로 활동을 줄이거나, 버스에서 퇴출되기까지 한다


CAN 통신의 발전

Classic Can에서 발전된 모델들을 가볍게 살펴보자.


CAN FD

고속 & 대용량이 필요한 ECU 간 통신을 위한 Classic CAN의 확장

기존 데이터 필드가 무려 64byte까지 커지게 된다.

그런데 , 보낼 데이터가 더 많아졌는데 어떻게 더 빨리 전송가능할까?

  • 비밀은 Data Field 에서의 클럭속도에 있다, 평상시에는 클래식 CAN처럼 데이터 송수신을 하다가, Data필드에서만 엄청나게 빠른 속도로 송수신을 하게 된다.

  • 핵심 차이

    • Data Field → 8 → 최대 64 byte
    • 비트 전송 속도 증가 → Arbitration은 기존 속도, Data Phase만 고속
  • 구조 변화

    • Stuff Bit Count CRC 도입
    • BRS (Bit Rate Switch) 비트 추가 → 데이터 영역만 빠르게

CAN XL (eXtra Large)

CAN FD보다 더 넓은 대역폭과 유연한 프레임 구조로 Ethernet-Lite 역할을 하는 차세대 CAN

  • 핵심 변화
    • 데이터 길이: 최대 2048 byte
    • 속도: 목표 20 Mbps 이상
    • 노드당 유연한 역할 정의 가능 (Role-Based)
  • 특징
    • Classic CAN → CAN FD → CAN XL으로 물 흐르듯 호환성 유지
    • Ethernet과 공존 가능 → 게이트웨이/브릿지 역할

LIN

저비용, 저속, 간단한 구조가 필요한 환경에서 Classic CAN을 대체

  • 구조적 특징

    • 1:1 Master-Slave
    • 20 kbps 저속
    • CRC/ACK 없음 → 마스터가 모든 흐름 제어
  • 장점

    • 단순한 회로 → 아날로그 센서 제어, 창문, 시트 조절 등
    • 비용 효율 + 전력 소모 적음
  • 단점

    • 오류 복구, 충돌 제어 기능 없음
    • 보안성/확장성 낮음

정리

환경사용
고속, 정밀 센서 다량CAN FD
게이트웨이, 대규모 ECU 통합CAN XL
단순 부품 제어, 저가 시스템LIN

마치며

CAN 통신의 AtoZ 를 모두 들여다본거 같았지만, 아니다.
하지만, 이 기초 지식을 통해 AtoZ를 모두 빠르고 정확하게 이해할 수 있는 기반을 다질 수 있었다.
2일간의 속성 CAN 공부, 이론은 여기까지 해두고 주문한 CAN 트랜시버가 도착하면 실습 후기로 찾아뵙겠습니다.

profile
Embedded S/W Developer :)

0개의 댓글