CAN 통신 속도

이채윤·2022년 9월 2일
0

임베디드

목록 보기
60/70

<CAN 속도의 중요성>

  • CAN 버스에 연결된 통신 장치들은 모두 같은 속도여야 통신이 된다.
  • 그렇기에, CAN 통신에 있어서 통신 속도는 매우 중요하다.

(CAN 통신에 있어서 가장 고려해야 하는 것은 ID와 통신 속도이다.)


<CAN 통신 속도 설정 개념>

  • CAN 통신은 1비트 타임에 대한 설정을 하는 방식으로 통신 속도를 결정
  • 1비트 타임을 여러 개의 가상의 “타임 퀀텀” 단위로 나눔
  • 1비트 타임 동안 이 “타임 퀀텀”을 몇 개 배치할지 선택하여 1bit 당 전송 시간을 결정하면, 최종 통신 속도가 결정

<타임 퀀텀의 시간 단위>

  • APB1 클럭을 Prescaler 만큼 나눠준게 1타임 퀀텀의 시간 단위가 된다.
    • APB1 clock = 40MHz
    • Prescaler = 5
    • 40MHz / 5 = 8MHz
      • 8MHz → 1초에 8000000 bit가 뛴다.
      • 제일 작은 단위. 한 clock의 시간을 계산하려면 역으로 뒤집으면 된다. (아래처럼)
    • 1타임 퀀텀의 시간 단위 = 5 / 40MHz = 0.125us
      • 위의 0.125us는 통신의 가장 작은 단위이다.

(위의 방식은 내가 사용하는 GD보드에 해당하는 계산 방법이며, 다른 보드를 사용할 경우 해당 datasheet를 살펴보아야 한다.)


<CAN 속도 계산>

  • CAN 정보 관련 함수 → MX_CAN1_Init()

  • SYNC_SEG → 1 타임 퀀텀 사용 (고정)

  • BIT SEGMENT 1 (BS1) → 13 타임 퀀텀 배정

  • BIT SEGMENT 2 (BS2) → 2 타임 퀀텀 배정

  • SYNC_SEG + BS1 + BS2 = 총 16개 타임 퀀텀. 1 타임 퀀텀 당 0.125us

  • total quantum → 0.125us * 16 = 2us (1 clock (bit) 뛰는데 들어가는 시간)

    • 해당 값의 (2us) 속도를 계산하려면 뒤집어야 한다.
  • 따라서 1 bit 당 2us 소요 (500kbps → 초당 500k bit)

  • SAMPLE POINT = (SYNC_SEG + BS1) / 전체 타임 퀀텀 = (1 + 13) / 16 = 62.5%

  • BaudRate (통신속도) = 500kbps

    • baudrate → 통신속도 (1초에 몇 bit의 데이터를 전송하는지를 의미하는 단위가 bps 이다.)

0개의 댓글