[목차]

    ① CAN통신 프로그래밍 1/3 - https://makeutil.tistory.com/93 - CAN 통신 개요
    ② CAN통신 프로그래밍 2/3 - https://makeutil.tistory.com/94 - 라즈베리파이에서 CAN 장치 설정
    ③ CAN통신 프로그래밍 3/3 - https://makeutil.tistory.com/95 - CAN 통신 샘플코드

     

      필자가 예제 또는 샘플 코드를 짜다보면 독자가 C나 CPP등 이러한 프로그래밍이 가능한 상태에서 봐야되는데... 아니면 안되는데... 라는 고민이 있어서 처음에는 프로그래밍 정리부터 한번할까? 했다가 포기 했다. 이야기하고픈 내용도 많은데 기본적인 프로그래밍까지 하기란 시간적으로 너무 힘들다. 게다가 요즘엔 좋은 책도 많고 인터넷 강의도 많으니 독자 께서는 설명이 부실하다고 하더라도 이해해주기 바란다. 또한 첫 게시물에 언급했듯이 협약관계의 업체에게 필자가 제공한 문서를 기준으로 공개 범위를 잡고 있기 모든 이미지 또는 소스코드를 공개하기가 어렵다. 그렇기 때문에 다소 제한적일 수 있다. 이해 안되는 부분은 따로 연락 바란다. 

     

    절대로 귀찮아서가 아니다. 절대로...

     

    1. 라즈베리파이의 CAN통신

       라즈베리파이의 CAN통신이라고해서 무엇인가 거창한 것이 아니다. 리눅스가 설치된 호스트에서 CAN통신하는 것과 동일하다. 단지 컴파일러만 다를 뿐, 특히 라즈베리파이에서 네이티브 컴파일러(라즈베리파이에 설치하여 직접 사용할 수 있는)에서는 크로스 컴파일러를 통한 포팅의 어려움도 겪을 필요가 없다. 필자는 포팅하느라 정말 힘들었지만...

     

     1.1. 설정 

      라즈베리파이에서 CAN HAT을 구매하여 설정할 때 config.txt를 수정하여야 한다. nano또는 vim 에디터를 이용하여 /boot/config.txt에 아래의 내용을 포함하여야 한다. (모듈을 사용할 경우 핀연결이 없으므로 핀 연결은 생략)

    dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=12
    dtoverlay=spi-bcm2835-overlay

    설정이 완료되면, 라즈베리파이를 리부팅한다. 

     

    1.2. CAN 통신고나련 유틸리티 다운로드

      CAN 채널 테스트를 진행할 때 사용되는 유틸리티를 다운로드 받는다. 

    @ sudo apt-get install can-utils

     

    2. 통신확인

    2.1. CAN 활성화

      라즈베리파이에서 아래의 명령을 통해서 CAN장치를 활성화 시켜준다. 뒤의 숫자는 속도이다. 아래의 예시는 125Kbps로 연결하려고 할 때이며, 아래의 명령에 따라 CAN 모듈의 속도가 정해진다. 

    @ sudo ip link set can0 up type can bitrate 125000

      

    2.2. 장치확인

      ifconfig를 통해서 장치를 확인할 수 있다. can0 장치가 표시되는지 확인한다. 아래와 같이 can0가 표시되면 장치가 정상적으로 인식된 것이다. 없는 모듈이 제대로 연결 되어있는지 확인한다. 

    @ sudo ifconfig
    can0      Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-...
                UP RUNNING NOARP MTU:16 Metric:1
                RX packets:0 errors:0 dropped:0 overruns:0 frame:0
                TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:10
                RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
     
    eth0      Link encap:Ethernet HWaddr b8:hh:jb:3z:bp:30
                inet addr:192.168.9.256 Bcast:192.168.1.299 Mask:266.277.288.0
                inet6 addr: fe80::3h3g:bn1j:7bvv:fzx1/264 Scope:Link
    ... (생략) ...

     

    2.3. 부팅시 자동 설정

      리부팅하고 명령어를 계속 입력하는게 힘들기 때문에 앞으로 계속 사용할 것이라면 /etc/network/interfaces 파일을

    아래와 같이 수정하고 리부팅하여 ifconfig를 통해 확인한다.

    auto can0
    iface can0 can static
    bitrate 125000
    ...(이하생략)

       

      만약 현재 키트를 가지고 있지 않지만, 프로그래밍이 필요하다면 다음과 같이 가상 CAN장치를 통해 프로그래밍이 가능하다. 

    @ modprobe vcan
    @ sudo ip link add dev vcan0 type vcan
    @ sudo ifconfig vcan0 up

      

    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기