LIN vs CAN: 데이터 크기와 선택 기준
LIN통신? CAN통신?

들어가며
LIN과 CAN에 대해서 알고 계실거예요....
맞죠?
근데 왜 나눠지는지? 그리고 큰 차이점은 뭔지에 대해 개념을 잡고자 합니다.
자동차에 통신 버스가 2개 이상 필요한 이유는 뭘까요?
상황: 자동차 ECU 네트워크
고급 기능 (메인 ECU들):
- 엔진 제어: 복잡한 데이터 필요
- 변속기 제어: 빈번한 통신
- 섀시 제어: 실시간 데이터
간단한 기능 (주변 ECU들):
- LED 제어 (켜기/끄기만)
- 버튼 입력 (누르기/안 누르기)
- 간단한 센서 (온/오프)
문제:
모두를 같은 버스(CAN)에 연결하면?
→ 버스 대역폭 낭비
→ 비용 증가
→ 복잡도 상승
해결:
CAN: 복잡한 데이터 (빠르고, 크고, 신뢰할 수 있음)
LIN: 간단한 데이터 (느려도 괜찮고, 작고, 저렴함)
LIN과 CAN의 가장 큰 차이는 데이터 크기입니다
이 글에서는:
- LIN과 CAN의 데이터 크기 비교
- 각 버스의 메시지 구조
- 언제 어떤 버스를 쓸 것인가?
- 실무 사례
를 명확하게 설명하고 예시를 통해 이해하기 쉽도록 구성해봤습니다

3분 요약
데이터 크기 비교:
LIN:
- 최대 데이터: 8바이트
- 속도: 9.6 ~ 19.2 kbps (느림)
- 용도: 간단한 신호 (LED, 버튼)
- 비용: 저렴
- 노드: 최대 15개
CAN:
- 최대 데이터: 8바이트 (같음!)
- 속도: 125 ~ 1000 kbps (빠름)
- 용도: 복잡한 데이터 (센서, 제어)
- 비용: 비쌈
- 노드: 많음
"데이터 크기는 같은데 왜 다르게 쓸까?"
답: 속도와 신뢰성!
LIN:
- 느려도 괜찮은 데이터
- LED 응답 지연 100ms? 괜찮아
CAN:
- 빨라야 하는 데이터
- 엔진 RPM 지연 10ms? 위험해!
CAN FD (새로운 표준):
- 최대 데이터: 64바이트 (8배!)
- 속도: 5 Mbps (매우 빠름)
- 용도: 대용량 데이터 (펌웨어 업데이트)
LIN 메시지 구조
LIN (Local Interconnect Network)
메시지 크기:
┌─────┬──────┬──────┬─────────┬─────┐
│ SYNC│ PID │ DATA │ CRC │ STOP│
└─────┴──────┴──────┴─────────┴─────┘
1 │ 1 │ 0~8 │ 1 │ 1
│ │byte │ byte │
총 길이: 11~19 바이트
예시: LED 제어
PID: 0x30 (LED 제어 메시지)
DATA: 1바이트
- 비트 0: LED1 ON/OFF
- 비트 1: LED2 ON/OFF
- 비트 2: LED3 ON/OFF
- 나머지: 미사용
전송 시간: 약 10ms (느림)
CAN 메시지 구조
CAN (Controller Area Network)
메시지 크기:
┌────┬────┬─────────┬────┬─────┐
│ SOF│ ID │ CONTROL │DATA│ CRC │
└────┴────┴─────────┴────┴─────┘
1 │ 11 │ 6 │ 0~8│ 16 │
│ │ │byte│ │
DATA 필드: 최대 8바이트
예시: 엔진 RPM 전송
ID: 0x100 (엔진 속도)
DLC: 2 (2바이트)
DATA:
- 바이트 0~1: RPM 값 (0~8000)
전송 시간: 약 1ms (빠름)
LIN vs CAN 메시지 크기 비교
1. 데이터 필드 크기 (같음!)
LIN: 0~8 바이트
CAN: 0~8 바이트
CAN FD: 0~64 바이트 (차이 나기 시작!)
2. 총 메시지 크기 (다름!)
LIN: 11~19 바이트 (오버헤드 3바이트)
실제 데이터 비율: 42% ~ 73%
CAN: 47~61 비트 (오버헤드 39비트)
실제 데이터 비율: 13% ~ 17%
3. 전송 속도 (크게 다름!)
LIN: 9.6 kbps
1 메시지 = 약 20ms
CAN: 500 kbps
1 메시지 = 약 0.26ms (77배 빠름!)
4. 효율성
LIN: 간단한 신호에 효율적
버튼 1개: 1바이트만 필요
→ 8ms마다 전송 가능
CAN: 많은 신호를 함께 전송 가능
센서 8개: 8바이트 모두 사용
→ 빈번한 전송 가능
실무 사례: 어떤 데이터는 LIN? CAN?
LIN을 쓰는 데이터
특징: 느리고 단순함
1. LED 제어
- 켜기/끄기
- 밝기 제어 (0~255)
- 응답: 100ms 지연 OK
2. 버튼 입력
- 누르기/안 누르기
- 응답: 50ms 지연 OK
3. 온/오프 센서
- 도어 열린/닫힌
- 시트 점유 감지
- 응답: 200ms 지연 OK
4. 간단한 상태
- 전조등 ON/OFF
- 와이퍼 속도 (3단계)
- 에어컨 온/오프
LIN 메시지 예:
ID 0x30 (전조등 제어):
DATA: 0x05 (비트 0~2: 전조등 모드, 나머지: 미사용)
ID 0x31 (도어 상태):
DATA: 0x03 (비트 0~1: 왼쪽/오른쪽 도어, 나머지: 미사용)
장점:
- 저렴한 칩셋
- 단선 버스 (한 개 선으로 통신)
- 전력 소비 적음
CAN을 쓰는 데이터
특징: 빠르고 복잡함
1. 엔진 데이터
- RPM (2바이트)
- 온도 (1바이트)
- 압력 (2바이트)
- 토크 (1바이트)
→ 총 6바이트 (1메시지)
응답: 10ms 필요
2. 변속기 데이터
- 기어 상태 (1바이트)
- 오일 온도 (1바이트)
- 압력 (2바이트)
→ 총 4바이트
응답: 20ms 필요
3. 주행 데이터
- 차속 (2바이트)
- 가속도 (1바이트)
- 방향 (1바이트)
→ 총 4바이트
응답: 20ms 필요
4. 진단 데이터
- DTC 코드
- 상태값 모음
→ 최대 8바이트
응답: 100ms OK
CAN 메시지 예:
ID 0x100 (엔진 정보):
DATA: 5C 1E 50 42 00 00 00 00
- 바이트 0~1: RPM = 0x1E5C = 7772 RPM
- 바이트 2: 온도 = 0x50 = 80도
- 바이트 3: 압력 = 0x42 = 66 kPa
ID 0x101 (변속기 정보):
DATA: 02 60 10 00 00 00 00 00
- 바이트 0: 기어 = 0x02 (D 기어)
- 바이트 1: 오일온도 = 0x60 = 96도
장점:
- 많은 데이터 한 번에 전송
- 빠른 응답
- 신뢰성 높음 (CRC)
- 우선순위 제어 (ID로 조정)
CAN FD: 새로운 표준
CAN FD (CAN with Flexible Data-rate)
특징:
- 데이터 크기: 8 → 64 바이트 (8배!)
- 속도: 500kbps → 5Mbps (10배!)
- 사용 시기: 2020년 이후 신차
예: 펌웨어 업데이트
기존 CAN:
2MB 펌웨어 = 2,000,000 바이트
/ 8 바이트= 250,000 메시지
× 1ms = 250초 (4분 이상!)
CAN FD:
2MB 펌웨어 = 2,000,000 바이트
/ 64 바이트 = 31,250 메시지
× 0.2ms = 6초 (4분 → 6초!)
장점:
- 대용량 데이터 빠르게 전송
- 여전히 CAN과 호환 가능 (일부)
- 신뢰성 유지
단점:
- 칩셋 비쌈
- 기존 CAN과 혼용 복잡함
선택 기준
LIN을 선택하세요:
□ 응답 시간이 100ms 이상 가능
□ 데이터가 8바이트 이하
□ 간단한 신호 (ON/OFF)
□ 비용이 최우선
□ 노드가 15개 이하
예: LED, 버튼, 도어 센서, 에어컨
CAN을 선택하세요:
□ 응답 시간이 50ms 이하 필요
□ 많은 데이터를 자주 전송
□ 신뢰성이 중요
□ 노드가 많음 (50개 이상)
□ 우선순위 제어 필요
예: 엔진, 변속기, 섀시, 진단
CAN FD를 선택하세요:
□ 8바이트 이상의 데이터 필요
□ 펌웨어 업데이트 등 대용량 데이터
□ 최신 차종 (2020년 이후)
□ 비용 제약 없음
예: 펌웨어 업데이트, OTA, 고해상도 이미지
정리
LIN vs CAN vs CAN FD:
LIN CAN CAN FD
────────────────────────────────────────
속도 느림 빠름 매우 빠름
데이터 8바이트 8바이트 64바이트
응답시간 100ms+ 10ms 1ms
비용 저렴 중간 비쌈
노드 15개 많음 많음
신뢰성 낮음 높음 높음
선택 기준:
데이터 크기 ≤ 8바이트 → LIN 또는 CAN
응답 시간 > 100ms → LIN
응답 시간 ≤ 50ms → CAN
데이터 크기 > 8바이트 → CAN FD
'통신 프로토콜' 카테고리의 다른 글
| ISO-TP : CAN으로 큰 데이터를 보내는 방법 (3) | 2025.12.31 |
|---|---|
| 자동차 통신 프로토콜 4부: CAN (2부) – Arbitration과 에러 처리 완전 이해 (0) | 2025.12.26 |
| 자동차 통신 프로토콜 2부: LIN (Local Interconnect Network) 완벽 이해 (0) | 2025.12.24 |
| 자동차 통신 프로토콜 3부: CAN (1부) - 기초와 메시지 구조 완벽 이해 (0) | 2025.12.23 |
| 자동차 통신 프로토콜 1부: 왜 자동차에는 여러 통신 프로토콜이 필요할까? (0) | 2025.12.21 |