CAN Overview (FAQ)

CAN 2019. 1. 16. 16:41



CAN(Controller Area Network)이란 무엇인가?

 CAN(Controller Area Network) 고속 시리얼 통신 네트워크로 Intel과 Bosch가 오토모티브(Automotive) 어플리케이션을 위해서 개발했습니다. 현재에는 산업 장비나 의료장비를 제어하는데에도 쓰여집니다.




CAN(Controller Area Network) node를 구성하기 위해서 필요한 것

 CAN node는 3가지 기본 구성이 필요합니다.

 1. Host processor가 필요합니다. Host processor는 메시지(Messages)를 해석 및 만들어내는 역활을 합니다.

 2. CAN Controller가 필요합니다. CAN Controller는 메지시(Messages)를 시리얼버스에 보내거나 시리얼버스로부터 수신되는 데이터를 수신하는 역활을 합니다. CAN Controller는 주로 Microcontroller(Host processor)에 내장되어 있습니다.

   3. Transceiver가 필요합니다. Tranceiver는 Physical layer interface로 CAN Controller로부터 출력되는 신호의 Level을 변경하여 시리얼버스로 보내주거나 시리얼 버스로부터 입력되는 신호의 Level을 CAN Controller가 입력받을 수 있는 Level로 변경하는 역활을 합니다. Transceiver는 Host processor외부에 연결되는 것이 일반적입니다.


 위에서 설명드린 CAN node는 3가지로 기본 구성이 되지만 일반적으로는 Host processor내부에 CAN controller가 내장되고 Tranceiver는 별도 Device로 존재하여 총 2개의 Device로 구성되는 것이 일반적입니다.


CAN ISO 표준은 어떤 것이 있을까?

 Physical layer는 ISO11898에 Conformance testing은 ISO16845에 정의되어 있습니다.

 

CAN FD를 사용하는 이유?

 어플리케이션 프로그램을 위해서 양산 최종 단계에 프로그래밍하는 것이 너무 오래 걸리기 때문입니다. 왜냐하면 기존 Classic CAN의 경우 Message는 8bytes단위 구성되어 있기 때문입니다.  CAN FD는 64bytes를 주고 받을 수 있습니다.


CAN 2.0과 CAN FD를 비교하여 가장 다른 것은?

 최대 통신속도가 1Mb/s에서 5Mb/s로 변경되었고 CAN message가 8bytes에서 64bytes로 변경되었습니다.


CAN FD를 이용하는 이유는?

 CAN 네트워크를 통한 Application program 시간을 단축하고 기존 CAN Network에서 가지고 있던 Bandwidth를 높이기 위함입니다.


CAN 2.0 기능이 있는 Microcontroller와 CAN FD Tranceiver사용이 가능한가요?

  불가능합니다. MCU와 CAN Tranceiver모두 최종버전인 ISO11898-1/2 Specification에 만족해야 합니다. CAN 2.0 MCU는 CAN FD 네트워크에서 사용할 수 없습니다.


CAN FD MCU는 CAN 2.0과 호환이 되나요?

  가능합니다. CAN FD MCU는 CAN2.0과 CAN FD를 동시에 지원하기 때문입니다.



Posted by KennyShin
,

CAN 통신 - SILENT MODE

CAN 2019. 1. 6. 22:10

Silent 모드는 CAN Network에 연결된 하나의 CAN controller 오동작이 CAN Network의 통신을 방해하는 것을 막는 역할을 합니다. 즉, CAN Network에 여려 개의 CAN Controller가 있다고 할 때 1개의 CAN Controller만 문제가 되는 상황에 대한 방지책입니다.


CAN Tranceiver의 S pin이 High가 되었을 때 Silent mode로 동작합니다. 이 모드에서는 데이터를 받기만 하는 역할처럼  사용을 할 수 있는데 이 기능으로 CAN Bus의 연결을 테스트하는 데에도 사용할 수 있습니다.


Silent mode에서는 CAN Bus에서 데이터를 받을 수 있지만 데이터를 보낼 수 없습니다. 이때 다른 CAN Tranceiver는 Normal mode에서 정상적으로 데이터를 주고받을 수 있습니다.


Silent mode를 지원하는 Device: ATA6562, ATA6564


http://ww1.microchip.com/downloads/en/DeviceDoc/20005790B.pdf

http://ww1.microchip.com/downloads/en/DeviceDoc/20005784B.pdf

'CAN' 카테고리의 다른 글

CAN Overview (FAQ)  (0) 2019.01.16
Classic CAN과 CAN FD의 최대 전송 데이터 수 비교  (0) 2019.01.06
CAN 통신(캔 통신) Bit Stuffing 이란?  (1) 2019.01.06
CAN FD 통신 등장배경 설명  (0) 2019.01.06
Posted by KennyShin
,

C-CAN은 Chassis CAN(샤시캔), B-CAN은 Body CAN(바디캔)입니다.

C-CAN이란?



C-CAN차량의  클러스터(CLU), YRS(Yaw Rate Sensor)엔진, 미션, ABS(Anti-lock Breaking System), ECU(Engine Control Unit), TCU(Transmission Control Unit)와 같은 고속으로 데이터를 전송하는 용도로 사용되며 통신 속도는 500kbps입니다.

주로 사용하는 캔트랜시버로는 Microchip의 MCP2561, MCP2562를 사용합니다.

MCP2561, MCP2562 데이터시트
http://ww1.microchip.com/downloads/en/DeviceDoc/20005167C.pdf

B-CAN이란?



B-CAN은 C-CAN에 비해 저속으로 통신합니다. 스마트키모듈, BCM(Body Control Module) 라이트, 파워윈도우와 같은 자동차의 운전과 관계없는 통신에 주로 사용되며 통신 속도는 100kbps입니다. 주로 사용하는 캔트랜시버로는 NXP의 TJA1054, TJA1055를 사용합니다..

TJA1055 데이터시트
https://www.nxp.com/docs/en/data-sheet/TJA1054.pdf




C-CAN(Chassis CAN)
B-CAN(Body CAN)
통신속도
500kbps
100kbps
적용되는 곳
차량의 클러스터(CLU), YRS(Yaw Rate Sensor)엔진, 미션, ABS, ECU, TCU와 같이 자동차의 동력과 관련된 곳
차량의 스마트키모듈, BCM(Body Control Module) 라이트, 파워윈도우와 같은 자동차의 동력과 관련되지 않은 곳
주사용 CAN 트랜시버
마이크로칩
MCP2561, MCP2562
NXP
TJA1055
데이터시트




Posted by KennyShin
,


MCU와 CAN Tranceiver사이의 통신 전압 레벨


 MCU와 CAN Tranceiver(예: ATA6562/63) 사이는 MCU의 디지털 동작 레벨과 동일합니다. 예를 들어 MCU가 3.3V를 사용한다면 MCU와 CAN Tranceiver 사이의 통신 전압 레벨은 3.3V이고 MCU가 5V를 사용한다면 MCU와 CAN Tranceiver 사이의 통신 전압 레벨은 5V가 됩니다. ATA6562와 ATA6563은 5V로 동작하지만 MCU와의 디지털 인터페이스는 3V에서 5V까지 모두 사용할 수 있습니다.



CAN Tranceiver에서 Network으로 출력하는 통신 전압 레벨은?



 CAN Tranceiver에서 네트워크 라인으로 출력되는 데이터는 Differential voltage 전압 레벨로 통신을 하게 되는데요. 두 라인의 전압이 같을 때는 '1', 두 라인의 전압이 다를 때는 '0'입니다. 그러면 두 라인의 전압이 다를 때의 전압 차이는 몇 볼트일까요?



정답은 2.0V입니다.



마지막 한 가지! '0'은 Dominant라고 하고 '1'은 Recessive라고 합니다. 사전적인 의미로는 Dominant('0')가 "우성"이라는 의미를 가지고 있고 Recessive('1')은 "열성"이라는 의미를 가지고 있다고 하니 참조하세요.



Posted by KennyShin
,



Classic CAN의 최대 데이터 전송 단위는?



8 bytes



CAN FD의 최대 데이터 전송 단위는?



64 bytes


Classic CAN과 CAN FD의 가장 큰 차이점 중 하나이니 꼭 기억하기 바랍니다.




최대 데이터 전송 단위와 최대 전송 속도가 다릅니다.



'CAN' 카테고리의 다른 글

CAN Overview (FAQ)  (0) 2019.01.16
CAN 통신 - SILENT MODE  (0) 2019.01.06
CAN 통신(캔 통신) Bit Stuffing 이란?  (1) 2019.01.06
CAN FD 통신 등장배경 설명  (0) 2019.01.06
Posted by KennyShin
,


이번 시간은 CAN 통신의 비트스터핑(Bit Stuffing)에 대해서 알아보겠습니다.



비트스터핑(Bit Stuffing)은 왜 필요할까?



CAN 통신은 통신방식 자체가 비동기 통신과 같이 별도의 Clock이 존재하지 않습니다. 따라서 통신 데이터가 같은 값으로 여러 개 연속하여 전송될 경우 각 노드(Node) 사이에 Clock이 맞지 않아 통신 오류가 발생할 수 있습니다. 만약에 8비트가 '0'값일 경우 아래와 같이 8비트가 '0'으로 전송되는 것이 올바른 파형입니다. 


Bit Stuff 없이 '0'을 8비트 보냈을 때의 파형



그런데 실제 CAN 통신 파형을 오실로스코프로 찍어보면 다른 파형이 보입니다.


연속 '0'인 데이터가 5개 생겼을 때의 Bit Stuff - (S로 표시된 비트)




바로 위와 같은 파형이 보이게 되는데요. 이 파형은 정상인 파형입니다. 그 이유는 비트 스터프(Bit Stuff) 때문입니다. 







비트 스터프란 같은 데이터가 연속하여 5개가 발생하면


만들어지는 여분의 비트이다.




비트 스터프는 데이터통신의 동기화를 목적으로 만들어집니다. 따라서 위의 파형처럼 연속하여 '0'이 발생하는 경우에는 Bit Stuff가 발생하며 만약 '1'이 연속하여 데이터가 5개 발생하면 이때에도 Bit Stuff가 발생합니다. 아래 파형처럼요.





연속 '1'인 데이터가 5개 생겼을 때의 Bit Stuff - (S로 표시된 비트)


이제 CAN 통신 데이터를 오실로스코프 등으로 측정하다가 이런 파형을 봐도 당황하지 않겠죠?



비트 스터프는 데이터통신의 오류를 줄이기 위한 동기신호입니다.


잊지 마세요!



'CAN' 카테고리의 다른 글

CAN Overview (FAQ)  (0) 2019.01.16
CAN 통신 - SILENT MODE  (0) 2019.01.06
Classic CAN과 CAN FD의 최대 전송 데이터 수 비교  (0) 2019.01.06
CAN FD 통신 등장배경 설명  (0) 2019.01.06
Posted by KennyShin
,


CAN 통신의 메시지는 Transmit Message ID 와 Receive Message ID 두 가지로 구분할 수 있습니다.


Transmit Message ID란?


CAN 메시지 ID는 메시지를 보내거나 받는 것을 구분하기 위해서 사용할 뿐만 아니라 메시지의 우선순위를 나타내기도 합니다.. 여러 개의 노드에서 동시에 메시지를 전송할 경우 메시지가 깨지지 않고 ID가 높은 것이 전송될 수 있도록 합니다. 예를 들어 ID가 15인 메시지보다 ID가 10인 메시지가 더 높은 우선순위를 가집니다. 따라서 다른 메시지보다 더 높은 우선순위로 메시지를 보내기 위해서는 낮은 ID로 메시지를 구성해야만 합니다. 또한 메시지 ID는 하나의 CAN 버스에서 단 하나만 존재합니다. 다시 말하면 하나의 CAN 버스에 연결된 노드는 다른 노드와 같은 ID를 가지고 메시지를 전송할 수 없습니다. Transmit Message는 데이터의 종류와 그 데이터의 우선순위에 따라 구성됩니다.


Receive Message ID란?


CAN Message를 수신하는데 사용합니다. CAN 버스에 수 메시지를 모두 MCU에서 소프트웨어적으로 확인할 수 없기 때문에 CAN을 담당하는 Peripheral에 특정 ID만 메시지를 수신할 수 있도록 구성할 수 있습니다. ID는 총 두 가지로 구성할 수 있습니다. 첫 번째는 Standard Identifier이고 두 번째는 Extended identifier입니다. Standard  Identifier(는 11비트로 ID가 구성되며, Extended Identifier는 29비트로 ID가 구성됩니다. Standard Identifier는 CAN 2.0A(최대 통신 속도 256kbit/sec), Extended Identifier(1Mbit/sec)는 CAN 2.0B에서 규정하고 있습니다. 


메시지를 받기 위한 필터를 구성하는 방법으로 아래와 같은 방법으로 나누어 집니다.

- ID의 범위를 지정하는 방법(예: 200부터 210번까지의 메시지 ID를 받음)

- 한 개 또는 두 개 ID만 받는 방법(특정 ID만 받는 방법)

- 기존의 Classic bit mask filter를 사용하는 방법


Posted by KennyShin
,

CAN 통신은 메시지(Message) 기반의 프로토콜로 디자인되었습니다. 오토모티브(자동차) 애플리케이션에서 주로 사용되며, 우주 항공분야, 선박, 열차, 산업 자동화, 그리고 의료 장비까지 널리 사용됩니다.


CAN 2.0은 최종 버전은 CAN 2.0A와 CAN 2.0B 두 가지로 나타낼 수 있습니다.


CAN 2.0A

- Standard format with an 11-bit identifier

- 최대 통신속도: 256kbit/sec


CAN 2.0B

- Extended format with a 29-bit identifier

- 최대 통신속도: 1Mbit/sec


CAN은 멀티 마스터(multi-master) 직렬 버스 구조로 ECUs(Electronic Control Units)라고 부르는 노드에 연결을 할 때 사용합니다. 이러한 ECU들을 노드라고 부릅니다. 모든 노드는 CAN에서 사용하는 두 개의 선으로 구성된 버스에 서로 연결됩니다. 이때 주로 MCU가 CAN 노드가 되며, 외부에 CAN Tranceiver가 반드시 필요합니다. 버스의 양 끝에는 반드시 120ohm 종단 저항이 연결되어 있어야 합니다.


사진출처: http://ww1.microchip.com/downloads/en/AppNotes/Atmel-42464-SAMC21-CAN-BUS-Firmware_ApplicationNote_AT6493.pdf


CAN 통신에 사용되는 여러 반도체 제조사에서 공급되고 있으며 Atmel(현재의 Microchip)의 ATA6560이나 ATA6561과 같은 CAN 트렌시버를 사용할 수 있습니다.


Posted by KennyShin
,