CAN frame formats & Bus Arbitration

hyeony·2025년 5월 17일

임베디드

목록 보기
4/10
post-thumbnail

1. CAN message types

가. Introduction

CAN message types으로는 다음과 같이 네 가지가 있다.

- Data frame
- Remote frame
- Error frame
- Overload frame

Data frameRemote frame은 애플리케이션에서 더 자주 사용된다. 하지만 Error frameOverload frame은 controller에 의해 자동으로 사용된다.

우리가 프로그래밍할 때는 기본적으로 Data frameRemote frame보다 더 자주 사용하게 된다.

나. Data frame

1) Usage

Data frame은 CAN 노드가 메시지를 브로드캐스트할 때 사용하는 표준 프레임 형식이다.

2) Data frame format


Data Frame은 다음과 같은 fields로 구성된다.

① Start Of Frame(SOF)

  • 단일 dominant bit로 frame의 시작을 알림

② Arbitration Field

  • 메시지 우선순위를 결정하는 11 bit Identifier1 bit RTR로 구성
  • Identifier 값이 작을수록 우선순위 높음
  • Data FrameRTR가 항상 dominant
  • Identifier가 11bit이면 표준 CAN Frame

③ Control Field & DLC(Data Length Code)

  • 데이터 크기를 명시하는 4 bit DLC 포함
  • 최대 8byte까지 전송 가능

④ Data Field

  • 전송할 payload를 포함
  • 최대 8 byte

⑤ CRC Field

  • 15 bit 체크섬으로 구성
  • controller가 자동으로 생성하여 오류 검출 시 사용

⑥ ACK Field

  • ACK slotACK delimiter로 2 bit 구성
  • 수신 노드가 CRC 검증 후 오류가 없다면 dominant로 설정
  • 송신자는 항상 recessive로 유지
  • 단 하나의 노드라도 정상 수신했다면 ACK는 발생. 단, 이는 메시지 수신 자체만 확인할 뿐, 동작 수행 여부 未보장

⑦ EOF(End Of Frame) & IFS(Inter Frame Spacing)

  • EOF: 7개의 recessive bit
  • IFS: 3개의 recessive bit로 frame 간 간격 확보
  • 총 10bit의 recessive 상태 이후 버스는 Idle 상태로 전환
  • 어떤 노드도 IFS가 끝나기 전에는 frame을 전송할 수 없음. SOF는 Idle 이후 등장하는 첫 dominant 비트로, 동기화의 기준점 역할

다. Remote Frame

Remote Frame은 다른 노드로부터 데이터를 요청하기 위한 프레임이다. 구조는 Data Frame과 유사하지만 다음의 차이점이 있다.

  • Arbitration FieldRTR bitrecessive로 설정

  • Data Field의 부재

Example)
Node AID 123으로 Remote Frame을 보내면, Node B동일한 IDData Frame을 응답한다. 이는 Request-Response 구조 구현을 가능하게 한다.

2. CAN Bus Arbitration

가. Arbitration: CSMA/CD + AMP

예를 들어, 1번 제어기와 2번 제어기 모두 메시지를 보냈다고 하겠다. 브로드캐스트 방식이기 때문에, 두 메시지 모두 네트워크 전체에 전달되어야 한다. 하지만 1번 제어기와 2번 제어기가 보내는 메시지가 서로 다르기 때문에, 즉, 각 제어기가 만드는 전기적인 신호가 서로 달라 왜곡될 것이다.

그래서 CAN 통신에서는 특정 순간에 오직 하나의 메시지만 통신할 수 있도록 한다. 즉, 위의 상황에서처럼, 1번 제어기와 2번 제어기가 메시지를 보낸다고 할 때, 동시에 보낼 수는 없으므로, 서로 간에 우선순위를 정하여 메시지를 보내는 것이다. 우선순위를 정하기 위해 '메시지의 identifier가 작을수록 우선순위가 높다'라는 규칙을 도입했다.

이렇게 CANCSMA/CD + AMP(Carrier Sense Multiple Access with Collision Detection and Arbitration on Message Priority) 방식으로 arbitration을 수행한다.

  • CSMA: 버스가 Idle 상태일 때만 전송 시도 가능. Idle 상태는 EOF + IFS의 recessive 상태로 판단

  • AMP: Identifier 기반 우선순위 중재. bit-wise arbitration 과정에서 recessive를 보낸 노드가 dominant를 감지하면 즉시 arbitration에서 탈락

<참고 자료>
CAN frame, https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC:CAN-Frame_mit_Pegeln_mit_Stuffbits.svg
Kiran Nayak, Mastering Microcontroller: Timers, PWM, CAN, Low Power(MCU2), Udemy, 2025.05.
존버매니아, CAN통신 - 자동차 신입이 알아야 할 모든 것, 인프런

profile
Chung-Ang Univ. EEE.

0개의 댓글