ComputerScience & Embedded/NUCLEO & CAN Tranceiver
CAN (Controller Area Network) Fundamentals
leecrossun
2025. 3. 1. 20:03
Introduction to CAN
- 1980년대 독일 회사 Robert Bosch에 의해 도입
- 자동차의 제어 장치 간 보다 견고한 통신을 위해 고안
- dynamic and noisy → WiFi, Bluetooth, zigbee 는 좋은 품질의 통신 불가능, 패킷 손실 가능성
- CAN : ISO specification에 의해 관리되는 multi-master serial 통신
- 고속(최대 1Mbit), 높은 노이즈 내성, 오류 감지 기능
장점 및 특징
- 저비용
- 노이즈에 강함 (differential signaling : 차등 신호)
- 높은 전송 속도 (1Mbit/s)
- 오류 처리 및 재전송
- Auto bus off : 결함이 있는 노드를 자동으로 분리
- Functional addressing : 메시지에 주소를 포함하지 않고 우선순위 식별자를 사용 (broadcast)
- 어떤 노드든지 central control node가 될 수 있으며, 네트워킹 중에서도 언제든지 추가/제거 될 수 있음 (hot-plugging)
Nodes of CAN protocol
마이크로컨트롤러(MCU)
- MCU에는 CAN 컨트롤러(CAN Peripheral)가 내장
- CAN 컨트롤러는 디지털 신호(PWM, Single-ended 신호)를 생성
- 두 개의 단자 제공
- CAN_TX (전송)
- CAN_RX (수신)
CAN 트랜시버(CAN Transceiver)
- CAN 컨트롤러에서 출력되는 디지털 신호(단일 신호, Single-ended)는 CAN 네트워크에서 직접 사용할 수 없음.
- CAN 네트워크는 차동 신호(Differential Signal)를 사용해야 하므로 CAN 트랜시버가 필요
- 트랜시버는 CAN_TX 및 CAN_RX 신호를 차동 신호로 변환
- 변환된 신호
- CANH (CAN High)
- CANL (CAN Low)
근데.. 왜 차동 신호(Differential Signal)를 사용할까?
- CAN은 자동차 및 산업 환경에서 장거리 데이터 전송(1m ~ 40m 이상)이 필요
- 디지털 신호(단일 신호)는 단거리 전송에 적합하지만, 장거리에서는 노이즈에 취약
- 차동 신호는 노이즈 면역성이 뛰어나므로 장거리에서도 안정적인 데이터 전송
CAN 버스 구조
CAN 버스는 두 개의 라인으로 구성되고, 이 두 신호 라인은 종단 저항(Termination Resistor, RL)으로 마감
- CANH (CAN High)
- CANL (CAN Low)
노드를 CAN 버스에 연결하려면
- CAN 트랜시버의 CANH를 버스의 CANH 라인에 연결
- CAN 트랜시버의 CANL을 버스의 CANL 라인에 연결
Differential Signal vs. Single-ended Signal
✅ 단일 종단 신호 (Single-ended Signal)
- 하나의 신호선과 **GND(접지)**를 사용하여 데이터를 전송
- 예: 논리 1 → +5V, 논리 0 → 0V
- 단점: 노이즈(잡음)에 취약하여 신호 왜곡이 발생할 가능성이 높음
✅ 차동 신호 (Differential Signal)
- 두 개의 보완적인 신호선을 사용하여 데이터를 전송 (CANH, CANL)
- 장점:
- 수신기가 두 신호의 전압 차이를 계산하여 데이터를 복원 → 노이즈 제거 효과
- 장거리 데이터 전송에 유리
- 높은 신뢰성 제공
차동 신호의 원리
- 논리 1을 전송할 때:
- 신호 1 (CANH) = +5V
- 신호 2 (CANL) = -5V
- 전압 차이 = 10V → 논리 1로 인식
- 논리 0을 전송할 때:
- 신호 1 (CANH) = -5V
- 신호 2 (CANL) = +5V
- 전압 차이 = -10V → 논리 0으로 인식
🚨 중요:
외부 노이즈가 발생해도 두 신호선에 같은 크기의 잡음이 추가되므로, 수신기가 두 신호 간의 전압 차이만 측정하면 원래의 신호를 정확하게 복원
차동 신호의 노이즈 제거 원리에 대해 조금 더 알아봄
- 외부 노이즈가 발생하면, CANH와 CANL 라인에 동일한 크기로 유입됨
- 하지만 차동 신호는 두 신호 간의 전압 차이를 이용하여 데이터를 구별하기 때문에, 공통된 노이즈는 자동으로 제거됨 (Common-mode noise rejection)
- 즉, 신호 간 전압 차이만 유지되므로 노이즈 영향을 받지 않음!
CAN 버스에서 차동 신호의 사용
- CANH (CAN High)와 CANL (CAN Low) 두 개의 신호선을 사용
- 신호 간의 전압 차이(ΔV)를 이용하여 데이터를 전송
- 노이즈 저항성이 뛰어나고, 산업 및 자동차 환경에서 신뢰성이 높음
✅ 논리 1 → CANH = 3.5V, CANL = 1.5V (ΔV = +2V)
✅ 논리 0 → CANH = 1.5V, CANL = 3.5V (ΔV = -2V)
이 방식 덕분에 CAN 통신은 자동차 및 산업용 네트워크에서 안정적인 데이터 통신을 보장
+) USB (Universal Serial Bus), RS-485 (산업용 시리얼 통신), RS-232 (컴퓨터 시리얼 포트 통신), Ethernet (이더넷 네트워크 통신) 에서도 전기적 간섭(EMI)을 줄이고 신호 품질을 유지
CAN Dominant and Recessive Signal States
논리적 신호 전송 방식
- 논리 1 (Recessive State)
- CANH = 2.5V (정격 전압, 트랜시버에 따라 2V 또는 2.3V 등으로 다를 수 있음)
- CANL = 2.5V
- 전압 차이 = 0V → 논리 1로 해석
- 이를 Recessive State(수동 상태)라고 한다.
- 논리 0 (Dominant State)
- CANH = 3.5V (트랜시버의 VCC 전압)
- CANL = 1.5V (VCC의 약 70%)
- 전압 차이 ≈ 2V → 논리 0으로 해석
- 이를 Dominant State(우세 상태)라고 한다.
트랜시버 데이터시트 분석 (TI SN65xx 기준)
- D : Driver Input / R : Receiver Output
- D = 1 → CANH와 CANL이 Recessive State(논리 1)
- D = 0 → CANH와 CANL이 Dominant State(논리 0)
State | D input | CANH Voltage | CANL Voltage | Voltage Difference |
Recessive (논리 1) | 1 | 2.3V | 2.3V | 0V |
Dominant (논리 0) | 0 | 3.3V | 1.25V | 2V |
Since Dominant state of the bus means voltage difference of 2V, logic 0(dominant) always overrides logic 1(recessive) during data transfer
Dominant and Recessive Signal states
버스 serialization 원리
- 노드가 데이터를 보낼 때, 동시에 버스에서 자신이 보낸 데이터가 일치하는지 확인
- 만약 일치하지 않으면, 다른 노드가 버스를 점유하고 있음을 감지하고 대기(Backoff)
- 일정 시간 연속된 Recessive 상태(예: 6~7개)를 감지하면 버스가 유휴 상태임을 판단하고 다시 접근
- 이해를 돕기 위한 데이터 전송 예)
- 시간 T1
- Node A: Dominant 비트 전송
- Node B: Dominant 비트 전송
- 결과: 버스 상태는 Dominant
- 시간 T2
- Node A: Recessive 비트 전송
- Node B: Dominant 비트 전송
- 결과: 버스 상태는 Dominant
- 이유: Dominant 비트가 항상 우선됨 → Node A는 자신의 비트가 변경됨을 감지
- 결론: Node A는 버스 사용을 포기(Backoff) 후 대기
- 버스 대기(Idle) 상태 감지
- Node A는 연속된 6~7개의 Recessive 상태를 감지하면 버스가 Idle(유휴 상태) 임을 인식
- 이후 다시 버스 접근을 시도
- 시간 T3
- Node A: Dominant 비트 전송
- Node B: Recessive 비트 전송
- 결과: 버스 상태는 Dominant
- 이유: Node A가 Dominant 비트를 보냈기 때문
- Node B는 Backoff 후 대기
- 시간 T4
- Node A: Recessive 비트 전송
- Node B: Recessive 비트 전송
- 결과: 버스 상태는 Recessive
- 시간 T1
- 두 개의 노드(Node A, Node B)가 존재한다고 가정
우선순위 개념
- 특정 메시지가 다른 메시지보다 우선적으로 전송될 수 있음
- CAN 프로토콜에서는 메시지 ID 를 통해 우선순위를 결정
Summary of CAN concepts
- CAN 신호는 차동(Differential) 방식 사용
- 차동 신호 방식 덕분에 강력한 노이즈 면역성 및 내결함성(Fault Tolerance) 확보
- 균형 잡힌 차동 신호(Balanced Differential Signaling) → 노이즈 결합 감소, 꼬인 쌍(Twisted-Pair) 케이블을 통한 고속 신호 전송 가능
- 균형(Balanced)의 의미
- 두 개의 신호선에서 흐르는 전류가 크기는 같지만 방향이 반대
- 이로 인해 전기장 상쇄(Field Cancelling Effect) 발생 → 낮은 노이즈 방출 가능
- 차동 수신기와 꼬인 쌍 케이블의 역할
- 공통 모드(Common-Mode) 신호 제거 능력 향상
- CAN 버스의 높은 노이즈 면역성(Noise Immunity) 보장
- 케이블 사양: 차폐(Shielded) 또는 비차폐(Unshielded) 꼬인 쌍 사용
- 특성 임피던스: 120Ω (Z₀ 또는 RL)
- 120Ω 종단 저항(Termination Resistor)의 중요성
- CAN 버스는 양쪽 끝에 120Ω 저항을 반드시 연결해야 정상 작동
- 그렇지 않으면 네트워크가 올바르게 동작하지 않을 수 있음 (신호 반사 문제 발생)
- 시장에서 판매되는 CAN 트랜시버 모듈에는 대부분 내장된 120Ω 저항이 포함됨
- 하지만 구매한 트랜시버 모듈의 회로도를 확인하여 120Ω 저항이 포함되어 있는지 반드시 체크해야 함
- 만약 포함되지 않았다면 외부적으로 120Ω 저항을 추가 연결해야 함
반응형