본문 바로가기
전자공학

CAN bus 통신

by 무에서 2017. 6. 18.
반응형

CAN 통신 (CAN bus, Controller Area Network bus)은 높은 신뢰성을 가진 시리얼 통신 방식이다. CAN 통신은 80년대 Bosch에서 자동차에 사용하기 위해 개발되었다. 

 

CAN 통신에서 한 프레임의 최대 데이터 크기는 8바이트로 작기 때문에 대용량 데이터 전송이 아닌 제어용으로 적합하다. 그래서, 자동차, 산업용 자동화 시스템에 많이 사용한다. CAN 통신은 신뢰성이 높기 때문에 백플레인의 보드간 버스 통신을 위해 사용되기도 한다. 자동차의 ECU, 창문, 도어 등 거의 모든 전자장치는 CAN 통신으로 연결되어 있다. 


어떤 자료에서는 검출되지 않는 통신 오류가 100년에 1번 나온다고 나오기도 하는 등 매우 신뢰성이 높다.

 


기본 프레임에서는 64비트 데이터를 전송하기 위해 45비트의 오버헤드가 있고 확장 프레임에서는 65 비트의 오버헤드가 있다. 오버헤드가 크기 때문에 신뢰성은 높지만 대용량 데이터 전송에는 적합하지 않다. 최대 속도는 1Mbps (bit per second)이다. 
 
RS-485와 같이 differnential line 방식으로 선 2개로 구성되고 120옴의 터미네이터가 필요하다. CAN 통신은 NRZ (non-return to zero) 방식을 사용하기 때문에 동일한 5비트 마다 다른 값의 비트를 삽입하는 Bit stuffing을 사용하여 비트 동기를 맞춘다.

RS-485와 달리 멀티 마스터가 가능하고 CAN controller에서 hand shake, CRC check 등을 기본적으로 모두 처리하기 때문에 통신 프로그램의 부담이 작다. TCP/IP 프로그램 하듯이 데이터를 전송하고 제대로 전송되었는지 Flag을 검사하기만 하면 된다. RS-485로 통신한다면 모든 프로토콜을 일일이 만들어야 하는 것에 비해 매우 쉽게 통신을 고신뢰성으로 할 수 있다.

CAN controller IC는 보통 가격이 비싸지만 CAN controller가 내장된 MCU는 가격이 저렴하다. CAN 통신에 대해 라이센스는 Bosch가 가지고 있고 CAN controller를 만드는 IC 메이커는 라이센스 비용을 Bosch에 지불한다.

CAN 통신에서 Recessive는 로직 High이고 Dominant는 로직 Low를 나타낸다. 한 노드가 로직 Low일 때는 버스 상의 모든 노드에서 로직 Low이 되기 때문에 Dominant(우세)가 되고, 한 노드가 로직 High일때는 다른 노드에서 로직 Low가 되면 그에 따라 로직 Low가 되기 때문에 Recessive(열세)가 된다.

 

CAN 통신은 신뢰성이 높기 때문에 CAN 통신을 이용하여 실시간 제어에 사용되기도 한다.

 

CAN 통신을 처음으로 적용한 차는 1987년의 BMW 8 시리즈이다.

 

Bosch 홈페이지에서 CAN spec을 받아 볼 수 있다.

 

☞ 자동차 통신 방식

LIN 통신



반응형

댓글