CAN 통신

강형우·2024년 7월 31일
0

CAN

목록 보기
1/6

CAN 통신 토폴로지 & 전송방식

CAN 통신 등장 배경 및 특징

  • 통신이란? -> 서로 다른 두 주체가 정보를 주고받는것

  • 정보를 주고받기 위해선 매채가 필요함

  • CAN 통신은 버스형 토폴로지

    • 빨간선: CAN High, 녹색선: CAN Low
    • 가운데 공통으로 두고 다 같이 쓰는 선을 "버스"라고 부른다.
    • 모든 메세지는 브로드캐스트 방식으로 송신
    • 단점 커버: Bus Off

CAN 통신의 커넥터

  • D-Sub 9pin 커넥터를 이용
    • 2번 pin - CAN Low
    • 7번 pin - CAN High
  • 2가닥의 wire를 사용(CAN High, CAN Low)

CAN 저항

120옴 저항

  • 반사파에 의한 신호 왜곡 방지
  • 제품 개발을 하다 통신이 잘 안되면 쓰고있는 커넥터의 120옴 저항이 잘 달려있는지 확인할 것

CAN High & CAN Low signal

  • 메세지를 보내는것 -> 전선의 전기적인 신호를 발생시켜 전달

    • Data 0을 표현 = Dominant
    • Data 1을 표현 = Recessive
    • Dominant 가 Recessive보다 우선순위가 높다
  • CAN 에서는 CAN High, CAN Low 간의 전압 차를 이용하여 데이터를 표현한다

    • CAN High - CAN Low 값이 0.9 ~ 5 볼트 = 0을 표현
    • CAN High - CAN Low 값이 -0.1 ~ 0.5 볼트 1을 표현
  • 전압 차를 이용한 방법의 장점: Noise에 강하다

  • CAN BUS 양 끝단에 120옴의 저항이 필요하다.

  • CAN에서는 데이터를 표현할때 CAN High, CAN Low 의 전압차를 이용하여 표현한다.

  • CAN에서는 데이터를 0을 Dominant, 데이터 1을 Recessive 라고 표현한다.

  • CAN에서는 Dominant가 Recessive보다 우선순위가 높다.

CAN Transceiver(Transmitter + Receiver) & CAN Controller

  • 각각의 제어기 안에는 일종의 작은 컴퓨터인 MCU가 있다.

  • MCU 내부에는 각종 peripheral들이 있고, 그 중에 CAN 통신과 관련된 역할을 하는 CAN Controller 라는 periphera이 있다.

  • CAN Controller가 송신하는 데이터는 CAN TX핀(반대쪽은 RX핀)을 통해서 CAN Transceiver에게 전달된다.

  • CAN Tranceiver는 CAN controller로 부터 정보를 받아서 CAN High, CAN Low 핀으로 실제 '전압' 을 출력하는 역할을 한다.

  • 반대로 다른 제어기가 메세지를 전송하면 CAN High, CAN Low의 전압값을 읽어서 비트로 해석하여 CAN Controller에게 전달해준다.(CAN RX핀)

  • CAN Controller: 메세지에 담기는 값과 관련(Data Link Layer라고 함)

  • CAN Transceiver: 실제로 전선에 출력되는 전압과 관련(Physical Layer라고 함)

CAN Tranceiver 데이터시트 살펴보기 (TJA1043)

통신속도 : BaudRate

  • Baud Rate : 통신속도
  • 단위 : bps (bit per second)
    • bps가 크면 더 많은 메세지, 데이터를 보낼 수 있다
  • 버스에 참여하고 있는 제어기들은 모두 같은 baud Rate으로 통신해야 한다(속도 통일)

Sampling Point & Synchronization

Sample Point : 하나의 비트 값이 0인지 1인지 판단하는 지점을 의미. 단위는 %이다

  • 이것도 OEM에서 Spec으로 정해준다.
  • Sampling Point에 따라서 똑같은 Baud rate이라도 Can Controller SW 구현 할때 세팅하는 값이 달라진다
  • CAN simulation 장비 사용할 때 Baud Rate과 함께 Sampling Point도 세팅해서 사용해야 함

CAN Controller로 제공되는 클락속도에 따라 Time qunta 라는 것이 계산된다

  • time qunta : 1 / CAN Clock

CAN 에서는 1bit를 아래 그림처럼 Sync, TSEG1(prop, phase1), TSEG2 3개의 구간으로 분류한다.
TSEG1, TSEG2의 길이를 세는 단위는 Time Qunta 이다.
CAN Clock의 속도를 얼마로 할 건지 까지도 OEM에서 정해주기도 한다.

TSEG1, TSEG2의 역할 설명 및 SJW에 대하여

  • SJW : Synchronization Jump Width
    • Tseg1, Tseg2를 늘리고 줄이는 한도

Tseg1. 클락 속도가 빠를 때

  • phase1 연장을 해야함 -> 이 역할을 Tseg1이 함

Tseg2. 클락 속도가 느릴 때

  • phase2 줄여야함 -> 이 역할을 Tseg2가 함

CAN 통신 속도를 Baud Rate이라고 한다. 단위는 bps
해당 네트워크에 참여하는 모든 제어기들은 모두 통일된 Baud Rate을 사용해야한다
Baud Rate을 얼마로 할 건지는 OEM에서 지정하여 CAN DB에 나타낸다
CAN Protocol은 크게 Low-Speed CAN, High-Speed CAN, CAN FD 3가지 종류로 나뉘며 각 protocol 별로 최대 속도의 차이가 있다
물리적인 BUS의 최대 길이에 따라 최대 속도에 한계가 있다
Sampling Point라는 것이 있다. 단위는 %. 이것도 OEM에서 몇 %로 해야하는지 정해준다.
하나의 bit는 Sync, Tseg1, Tseg2 라는 것으로 나뉘고 이것들은 모두 여러 개의 time qunta로 구성됨
Tseg1, Tseg2의 값을 적절하게 정함으로써 Sampling Point 값을 조절할 수 있음
Tseg1, Tseg2 얼마로 할지도 제조사에서 정해주기도 함

BaudRate 관련 : MCU 데이터 시트 살펴보기

0개의 댓글