반응형
CAN 통신에서 메시지 프레임을 사용하여 송수신이 이루어진다.
메시지 프레임은 하나 또는 그 이상의 송신 노드로부터 데이터를 수신 노드로 운반한다.
CAN Protocol은 다음과 같은 두 가지 형태의 메시지 프레임을 지원합니다.
- 표준 CAN (버전 2.0A)
- 확장 CAN (버전 2.0B)
표준 CAN 메시지 구조(2.0A)
- 7개의 서로 다른 필드로 구성
- 프레임의 시작(SOF : Start Of Frame) 필드
메시지 프레임의 시작을 표시하기 위한 필드이다.
메시지 프레임의 최우선에 위치하며 디폴트 "0" 값을 가진다. - 중재 필드(Arbitration Field)
11비트의 식별자와 원격 전송 요구(RTR)비트로 구성되어있다.
디폴트 "0"을 가지는 RTR 비트는 비트값이 "0" 일 때 CAN 메시지가 데이터 프레임이라는 것을 가리킨다.
역으로 RTR 비트 값이 "1"이면 CAN 메시지가 원격전송요청(RTR : Remote Transmission Request)을 의미한다.
다시 말해 CAN 메시지가 데이터 프레임이 아닌 원격프레임(Remote Frame) 상태임을 나타낸다.
원격 프레임은 데이터 버스 상의 어떤 한 노드로부터 다른 노드로 데이터를 전송 요청할 때 사용된다. - 제어 필드(Control Field)
6비트로 구성되며 향후에 사용되기 위해 예약된 두 개의 "0"의 값을 가지는 R0, R1와
데이터 필드의 바이트 수를 가리키는 4비트의 데이터 길이 코드(DLC : Data Length Code)로 구성되어있다. - 데이터 필드(Data Field)
한 노드로부터 다른 노드로 전하고자 하는 데이터를 넣기 위한 필드이다.
0~8바이트로 구성된다. - CRC 필드(CRC : Cyclic Redundancy Check)
15비트의 주기적 중복확인(CRC) 코드를 가지며 데이터 필드의 끝을 알리는 "1"의 값을 가지는 비트로 구성되어있다. - ACK 필드 (ACKnowledge Field)
2비트로 구성되며 첫 번째 비트는 "0" 값을 가지는 Slot 비트입니다.
메시지를 성공적으로 수신한 다른 노드로부터 전송된 "1"의 값으로 기록될 수 있다.
두 번째 비트는 "1"의 값을 가집니다. - 프레임종료필드(EOF : EndOfFrameFiled)
7비트로 구성되며 모두 "1"의 값을 가진다.
EFO 뒤이어 모두 "1"의 값을 가진 3 비트의 프레임 중단 필드 (INTermission Field)가 이어집니다.
3비트의 INT 주기 이후에 CAN 버스라인은 자유 상태(다른 노드가 데이터를 보낼 수 있는 상태)로 인식된다.
이후 버스 Idle Time 은 "0"을 포함한 임의의 길이입니다.
확장 CAN 메시지 구조(2.0B)
- 2.0A와 구분되기 위해 29비트의 메시지 프레임 식별자를 가진다.
- 기존에 사용 중인 2.0A와 호환된다.
- 표준 CAN(2.0A)과 차이점은 중재 필드가 두 개의 CAN 메시지 식별자로 구분되어 포함된다.
첫번째(기본 ID)는 11비트 길이로 2.0A와 호환되게 되어 있다.
두번째 필드(확장 ID)는 18비트 길이로 ID는 총 29비트로 구성된다.
두 개의 ID 필드 사이에 ID 확장자 (IDE : IDentifier Extension)가 있어 두 개의 ID 필드를 구분합니다. - SRR(Substitute Remote Request) 비트는 중재 필드에 속해 있으며 표준 데이터 프레임과 확장 데이터 프레임을 중재해야 하는 경우에 대비하기 위해 항상 "1"의 값을 전송합니다.
만약 표준 데이터 프레임과 확장 데이터 프레임이 같은 기본 ID (11 비트)를 가지고 있으면 표준 데이터 프레임이 우선 순위를 가집니다.
CAN 2.0A와 2.0B의 호환성
- 2.0B Controller 입장에서는 2.0A와 송수신에 있어 완벽하게 호환된다.
- 2.0A Controller는 두 가지 경우가 있다.
1) 2.0A의 메시지만 송수신이 가능한 경우이며 2.0B의 메시지는 에러를 발생시킨다
→ 2.0A와 2.0B는 하나의 CAN 네트워크 상에서 사용 불가
2) 2.0B Passive로 알려져 있으며 2.0A의 메시지는 송수신 가능하고 2.0B의 메시지는 식별을 하여 무시해버립니다.
→ 2.0A와 2.0B는 하나의 CAN 네트워크 상에서 사용 가능 - 사용할 수 있는 CAN ID 갯수 : 2.0A = 2032개, 2.0B = 5억 개 초과
728x90
'프로젝트 > CAN_OBDII' 카테고리의 다른 글
CAN 통신 우선순위 결정 방법 (0) | 2022.01.25 |
---|---|
CAN 통신 동작 원리 (0) | 2022.01.25 |
CAN 규격에 따른 종류 (0) | 2022.01.25 |
CAN 통신 프로토컬(Controller Area Network) (0) | 2022.01.20 |
프로젝트 관리 (0) | 2022.01.13 |
댓글