책소개
이 책은 CAN 통신과 관련된 사항을 한권에 정리한 CAN 통신 프로토콜 해설서이다. CAN의 역사와 응용 분야, CAN과 관련있는 프로토콜과 제반 배경지식들을 담고 있어서 기호와 암호같은 각종 용어들의 바다속에서 헤엄쳐 나와 CAN 통신을 바르게 이해할 수 있게 해주는 책이다. 이 책에서는 CAN 통신 프레임, 에러 처리, CAN 통신 시스템의 구현 등 다양한 정보들을 다루고 있어서 CAN 통신의 기초를 이해하는데 꼭 필요한 책이다.
목차
목차 5
1. CAN이란? 10
1.1 CAN (Controller Area Network)··························································· 10
1.2 CAN의 역사·························································································· 12
1.3 CAN 응용 (Applications)······································································· 14
1.4 관련 자료 링크······················································································· 17
2. OSI 계층으로 본 CAN 19
2.1 OSI란?·································································································· 19
2.2 CAN의 프로토콜 계층 구조····································································· 20
2.3 CAN의 물리(Physical) 계층(Layer)························································· 22
2.3.1 CAN의 물리(Physical) 부 계층(Sub-Layer)·············································· 24
2.3.2 PLS(Physical Signaling) 부계층의 기능··················································· 25
2.3.3 매체 부착 (Media Attachment)····························································· 25
2.3.4 High-Speed CAN (ISO 11898-2)·························································· 27
2.3.5 Fault-Tolerant CAN (ISO 11898-3)······················································· 28
2.3.6 버스 케이블 특성 (Bus Cable Characteristics)········································· 31
2.3.7 커넥터 (Connector)··············································································· 32
2.4 CAN의 데이터링크(Data Link) 계층(Layer)············································· 33
2.4.1 CAN의 데이터링크(Data Link) 부 계층(Sub-Layer)·································· 33
2.4.2 데이터 링크 계층의 기능········································································· 34
2.4.3 메시지 서비스························································································ 35
2.5 CAN의 상위(Upper) 계층(Layer)···························································· 36
2.6 CAN 프로토콜······················································································· 37
2.6.1 CAN 프로토콜 종류················································································ 37
2.6.2 CAN 프로토콜 라이선스·········································································· 38
2.6.3 CAN의 하위 계층 관련 표준들································································· 39
2.6.4 차량용 시리얼 통신 프로토콜··································································· 39
2.6.5 CAN 상위 계층 프로토콜········································································· 40
3. CAN 통신 프레임(Frame) 43
3.1 CAN 2.0A vs 2.0B················································································ 43
3.2 CAN 관련 메시지 종류············································································ 46
3.2.1 데이터 프레임 (Data Frame)·································································· 46
3.2.2 원격 프레임 (Remote Frame)································································· 49
3.2.3 에러 프레임 (Error Frame)····································································· 54
3.2.4 과부하 프레임 (Overload Frame)···························································· 54
4. CAN 프로토콜 세부사항 56
4.1 동기화 (Synchroniztion)········································································ 56
4.1.1 비트 타이밍 (Bit Timing)········································································ 56
4.1.2 동기화 (Synchronization)······································································ 57
4.2 비트 스터핑 (Bit Stuffing)······································································ 59
4.2.1 Bit Encoding / Decoding······································································ 59
4.2.2 프레임 코딩 (Bit Stuffing / Destuffing)·················································· 59
4.3 중재 (Arbitration)················································································· 61
4.3.1 다중 접속 (Multiple Access) 방식··························································· 61
4.3.2 CSMA/CD-NDBA 중재 방식··································································· 62
4.3.3 CAN 중재(Arbitration) 예제··································································· 64
4.4 메시지 전달 (Message Transfer)···························································· 67
4.4.1 ID의 의미와 사용···················································································· 67
4.4.2 메시지 필드의 위치와 우선순위································································ 68
5. CAN 통신 에러 72
5.1 에러 종류······························································································ 72
5.1.1 비트 에러 (Bit Error)·············································································· 73
5.1.2 채워 넣기 에러 (Stuff Error)··································································· 73
5.1.3 순환 중복 검사 에러 (CRC Error)····························································· 74
5.1.4 형식 에러 (Form Error)·········································································· 74
5.1.5 응답 에러 (Acknowledge Error)····························································· 75
5.2 에러 프레임 예제···················································································· 75
5.3 에러 관리······························································································ 77
5.3.1 CAN 장치의 3가지 상태·········································································· 77
5.3.2 Error Counter의 증감············································································ 78
5.3.3 Error 제한(Confinement)······································································ 78
6. CAN 구현 81
6.1 CAN 시스템의 구성················································································ 81
6.1.1 CAN 트랜시버(Transceiver)···································································· 81
6.1.2 CAN 컨트롤러(Controller)····································································· 82
6.2 CAN Controller 레지스터 운용······························································· 85
6.2.1 CAN 컨트롤러 기본 레지스터 맵······························································ 85
6.2.2 메시지 필터링 (Acceptance Filter)·························································· 85
7. CAN 기타 사항 89
7.1 OBD2 (OBD-II)····················································································· 89
7.1.1 OBD2란?······························································································ 89
7.1.2 OBD 역사······························································································ 89
7.1.3 OBD2의 커넥터····················································································· 90
7.1.4 OBD2의 프로토콜 계층과 사용································································ 92
7.1.5 OBD2의 서비스····················································································· 92
7.2 DBC 파일······························································································ 93
7.2.1 DBC란?································································································· 93
7.2.2 DBC 데이터··························································································· 93
7.2.3 자동차에서 사용하는 DBC 종류······························································· 95
7.3 CAN FD(Flexible Data-rate)·································································· 95
7.3.1 CAN FD란?··························································································· 95
7.3.2 CAN FD 프레임······················································································ 96
7.3.3 CAN과 CAN FD····················································································· 99
7.4 자동차 내부 네트워크··········································································· 100