[목차]
    https://makeutil.tistory.com/134 - Jetson 나노에서 MCP251X CAN 사용하기 (설치) #1/2  
    https://makeutil.tistory.com/135 - Jetson 나노에서 MCP251X CAN 사용하기 (시험) #2/2  

     

     

     

      지난 포스트에서 기본적인 동작에 관련된 dtb와 도구들은 설치가 완료되었다.  그러면, 이제 실제 보드에서 사용가능하도록 준비해주어야 한다. 

     

    1. IO 설정

      하드웨어 연결은 앞서 다 해두었고, 이젠 Jetson Nano의 io를 설정해주어야 한다. 

    1.1. Jetson I/O 설정

      Jetson I/O를 설정해야 하므로 jetson.io를 실행한다. 

      @ sudo /opt/nvidia/jetson-io/jetson-io.py 

     

    1.2. I/O Header 설정

      화살표를 움직여서 Configure Jeson for compatibe hardware를 선택하여 아래의 그림과 동일하게 설정되도로 설정한다. 만약 추가적인 세부설정을 하려면 아래의 Configure 40-pin expansion header를 선택하여 핀 번호를 지정할 수도 있다. 어쨋거나, 필자는 SPI1만 사용할 것이므로 아래와 같이 설정되면 되겠다. 설정이 완료되면 EXIT를 선택해서 종료한다.

      다 되었으면 리부팅을 해주도록 하자. 

     

    2. 장치 확인 및 설정

    2.1. 장치 확인

      장치를 확인하려면 ifconfig를 이용하면된다. 

      $ ifconfig -a can0

     

      만약 아무것도 나타나지 않는다면, can 장치 또는 io설정을 확인하도록 하자. 

     

     

    2.2. 장치 활성화

      ip 명령을 이용하여 can0 장치를 활성화 해두자. MKDEV의 CAN-HAT은 16Mhz 클록을 사용하고 있으므로 1MBps로 설정을 해주면된다. 

     

      $ sudo ip link set can0 up type can bitrate 1000000

     

      제대로 장치가 표시되는지 다시 확인한다.  이전 ifconfig -a로 장치를 확인한 것은 ip 명령으로 장치가 활성화 되어있지 않더라도 리스트를 출력하기 위함이며, 동작 상태인 경우 -a 옵션을 제거하고 아래와 같이 입력해서 출력되면 된다. 

     

       $ ifconfig can0

     

     

    3. 테스트 

      테스트 환경은 다음과 같이 구성하였다.

     

     

    3.1. Jetson Nano CAN 수신테스트

      외부에서 입력되는 can 데이터를 출력하기 위해서 candump를 이용하여 외부장치에서 데이터가 입력되는지 확인하면된다.  우선 젯은에서 candump를 실행하한다. 그리고 MKDEV의 개발 킷에서 CAN 설정이후 데이터를 보내면 아래와 같이 표시된다.

     

      $ candump 0

     

    MKDEV의 개발키트(라즈베리파이)에서 CAN을 활성화 하여 데이터를 전송한다. 

     

      위의 결과에서 알수있듯, 라즈베리파이에서 CAN데이터를 보내고 Jetson에서 CAN 데이터가 출력되는것을 확인할 수 있다. CAN RX 는 위와 같이 테스트 했고, TX도 테스트 해야되는데 이번에는 Jetson에서 cansend를 이용해서 데이터를 보내고 MKDEV 개발키트에서 데이터 수신을 확인한다.

     

    3.2. Jetson Nano CAN 송신테스트

      Jetson Nano에서 cansend 명령으로 아래와 같이 데이터를 전송한다. 

     

      그 결과는 MKDEV 개발키트에서 다음과 같이 출력됨을 확인할 수 있다. 

     

    자.. 이렇게 정상적으로 통신되는 것을 확인 하였다. 

     

     

     

      만약, 커널에 포함해서 빌드할 용자를 위해서 힌트를 드리자면..  먼저 Jetson PACK과 Setson Kernel source를 받은 후, Jetson Kernel 소스의 hardware 폴더에서  본인이 사용하는 Jetson 버전의 DTB에 여기에 포함된 dtb의 spi 내용중 can과 관련된 내용을 잘 포함시키면 된다.  많은 경험이 필요하다면 한번 쯤 해보기 바란다. 

     

     

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