天天看點

TX2平台CAN總線收發功能的測試

前言

項目實作過程中需要将擷取的資料資訊通過CAN總線傳輸到控制規劃子產品,本文主要介紹如何在TX2平台測試CAN總線的收發功能。

TX2是英偉達旗下為嵌入式平台人工智能應用開發出的一個硬體平台,TX1沒有CAN bus功能,TX2有。

CAN bus作為TX2的外設,一般需要驅動,也有一些功能函數,可以用這些函數進行應用程式設計。Linux下的canbus是通過socket進行can傳輸的。

大緻實作步驟是:安裝驅動 -> 安裝開源canbus通信的user app -> 連接配接CAN接口以及canbus收發器 -> 測試CAN總線收發功能;

實作方法

參考英偉達官方論壇​​here​​,可以找到官方的回複,步驟如下:

These are the steps can be followed to enable and check CAN on TX2.

1. Enable kernel support for mttcan(Other required modules are already supported)

​ CONFIG_MTTCAN = m (Here mttcan is compiled as a module)

使能canbus需要在tegra18_defconfig配置檔案中配置CONFIG_MTTCAN=m之後重新編譯核心才能使用。

本人拿到的闆子這一步已經完成,直接進行之後的步驟;

2. Insert CAN BUS subsystem support module.

modprobe can

3. Insert Raw CAN protocol module (CAN-ID filtering)

modprobe can_raw

4. Real CAN interface support (for our case, it is: mttcan)

modprobe mttcan (dependent module is can_dev: can driver with netlink support)

modprobe是在linux的shell運作的指令行,用于安裝canbus子產品;

Linux将不常用的子產品做成.ko檔案,在需要使用時可以将其進行載入核心,降低系統的開銷;

5. CAN interface settings for both the controllers

ip link set can0 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on

ip link set up can0

ip link set can1 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on

ip link set up can1

CAN interfaces are up now. Use ifconfig to list all the interfaces which are up.

配置canbus的屬性(指令行配置),和序列槽的波特率設定類似,同驅動程式設計中的ioctl.

6. Installation of user app to check CAN communication

sudo apt-get install can-utils

安裝第三方開源app can-utils測試canbus的收發功能;

7. Commands to run to check CAN packet send/receive

broadcasting a can data packet:(發送程式)

cansend <can_interface> <can_frame>

e.g. cansend can0 123#abcdabcd

Receiving a can data packet:(接收程式)

candump can_interface

e.g. candump can1

Different tools (i.e. cangen, cangw etc) can be used for various filtering options.

指令行使用應用程式測試canbus的收發功能;

8. To check the interface statistics

ip -details -statistics link show can0

ip -details -statistics link show can1

檢測canbus的狀态;

以上完成在TX2平台使用指令行測試CAN通訊,有機會會介紹canbus的API和應用開發函數,具體可參看github上can-utils的開源程式​​here​​.

問題

1.使用CAN分析儀測試CAN總線的收發功能,打開can分析儀的應用工具CANPro,連接配接TX2平台can接口、CAN分析儀和應用工具主機,使用指令行測試can口的收發功能;

2.測試成功,但是每次重新開機或者開機需要重新配置CAN的環境,解決方法是在/etc/rc.local中添加canbus子產品和屬性(2-5步驟)即可;

TX2平台CAN總線收發功能的測試
TX2平台CAN總線收發功能的測試
modprobe can
modprobe can_raw
modprobe mttcan
ip link set can0 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on
ip link set can0 type can tq 25 prop-seg 34 phase-seg1 35 phase-seg2 10 sjw 20
ip link set up can0
ip link set can1 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on
ip link set can1 type can tq 25 prop-seg 34 phase-seg1 35 phase-seg2 10 sjw 20
ip link set up can1      

View Code

3.若各個裝置連接配接沒有問題,且相關配置也已完成,但是不能正常收發,需要檢視闆子的can接口硬體部分PIN腳是否連接配接正确;(重要!!)

參考

1.​​英偉達官網論壇​​;

繼續閱讀