CAN 에러 처리

hyeony·2025년 5월 19일

임베디드

목록 보기
5/10
post-thumbnail

1. 에러 감지 및 반응

가. Error 종류

① Bit Error

  • 송신자가 보낸 비트와 실제 버스 상에 감지된 비트가 다를 때 발생
  • 예외적으로 Arbitration 과정에서는 자신이 recessive(1)을 보냈더라도 dominant(0)이 나타날 수 있는데, 이 경우는 에러로 간주하지 않음

예외적 상황 예시)
내가 1을 보냈는데 버스에서 0이 감지됨 → Bit Error
Arbitration 중 1을 보냈지만 0이 감지됨 → 정상

② Stuff Error

  • 동일한 비트가 6개 이상 연속으로 전송되었을 때 발생
  • CAN은 Bit Stuffing 규칙을 적용해, 5개 연속 동일 비트 이후 반드시 반대값 1비트를 삽입해야 함
  • 검출 주체: 송신자, 수신자 모두 감지 가능(물리 계층 관측)

③ CRC Error

  • 수신자가 계산한 CRC 값과 송신자의 CRC 필드 값이 일치하지 않을 때
  • 프레임 데이터가 전송 도중 손상되었음을 의미
  • 사용 필드: CRC(Cyclic Redundancy Code) 필드

④ Acknowledge Error

  • 송신자가 ACK 슬롯에서 dominant(0)을 기대했으나 recessive(1)이 유지된 경우
  • 검출 주체: 송신자
  • 원인은 수신자 측에서 메시지를 수신하지 못했거나, 네트워크 상에 수신 노드가 없는 경우
  • 참고로 수신자는 ACK 전송 시에도 Bit Error 체크함

⑤ Structure Error

  • CAN 프레임의 정해진 비트 필드 포맷을 위반한 경우 발생
  • 예를 들어, EOF는 반드시 7개의 recessive 비트로 구성되어야 하는데, dominant가 포함되었다면 Structure Error

나. Error States

1) State Transition

CAN 프로토콜에서는 다음과 같은 3개의 states을 정의하고 있다.

각 state는 TEC(Transmit Error Counter)REC(Receive Error Counter)라는 내부 에러 카운터 값에 따라 자동으로 전이된다.

  • TEC: 송신 중 에러가 발생할 때 증가
  • REC: 수신 중 에러가 발생할 때 증가
  • 정상적인 송수신 시 counter는 점진적으로 감소

2) 각 state의 의미

① Error Active

  • 기본 상태, 에러 발생이 적은 상태
  • 에러 발생 시 강력한 Active Error Frame 전송 가능
  • 프레임 충돌이 감지되면 dominant 비트(예: 0)를 연속적으로 전송하여 네트워크 전체에 에러를 강하게 알림

② Error Passive

  • 일정 수준 이상 에러가 누적된 상태
  • 송신 가능하나 에러 프레임의 강도가 약함(모두 recessive로 구성)
  • 네트워크에 고장을 제대로 알리지 못할 가능성이 있음
  • 송신 시에도 전송 우선순위가 낮음, 수신만 수행하거나 일정 시간 지연 후 전송

③ Bus Off

  • TEC ≥ 256으로, 중대한 에러 상태
  • 해당 노드는 CAN 버스에서 완전히 격리
  • 송수신 모두 불가능하며, SW나 CPU가 수동으로 복귀시켜야 함

3) Error Frame 구조

① Active Error Frame

  • 구성: dominant bit 6개 + recessive bit 8개
  • 네트워크 전체에 에러 발생을 명확히 알림

② Passive Error Frame

  • 구성: recessive bit 14개
  • 송신 도중 다른 노드가 dominant bit를 보내면 수신자가 에러를 감지하지 못할 수도 있음
  • 네트워크에 에러 발생을 약하게 알리는 구조

4) Bit Stuffing과 에러 감지

CANBit Stuffing을 통해 데이터 오류를 감지한다. 자세하게 말하면, 동일한 비트가 5개 이상 연속되면, 반드시 반대값을 삽입해야 한다. 예를 들어, 00000 다음에는 반드시 1이 와야 한다.

수신자가 6개의 연속된 동일 비트를 감지하면 이는 stuffing rule 위반에 따른 에러 발생으로 간주한다.

<참고 자료>
존버매니아, CAN통신 - 자동차 신입이 알아야 할 모든 것, 인프런

profile
Chung-Ang Univ. EEE.

0개의 댓글