7.1.4. 测试指南

7.1.4.1. 测试环境

7.1.4.1.1. 硬件

  • 测试板:带有CAN接口的测试板

  • PC:用于和测试板交互

  • 串口线:连接测试板的调试串口

  • CAN盒:USBCAN分析仪

7.1.4.1.2. 软件

  • PC端串口终端软件

  • iprouter2第三方软件包

  • can-utils第三方软件包

7.1.4.2. iprouter2第三方软件包编译

iprouter2软件包可以通过以下方式编译测试(直接下载):

git clone https://github.com/shemminger/iproute2.git
cd iproute2
CC=riscv64-unknown-linux-gnu-gcc AR=riscv64-unknown-linux-gnu-ar ./configure

vim config.mk
``` # 删除
HAVE_SELINUX:=y
LDLIBS += -lselinux
CFLAGS += -DHAVE_SELINUX
```

make
ls -lh iproute2/ip/ip # 将此工具传输到板子既可使用

7.1.4.2.1. can-utils第三方软件包编译

SDK中提供了can-utils/iprouter2的预编译包,可以直接将预编译包的目标文件编译到镜像。这种方式不需要编译can-utils/iprouter2源码,节省编译时间。

Utilities--->
    [*] canutils--->
        <*> canutils-candump
        <*> canutils-cansend

7.1.4.3. CAN收发测试

将测试板上的CAN接口与CAN盒对接。使用ip命令设置两个开发板的CAN接口,设置CAN接口的速度为500Kb/s。

./ip link set can0 type can bitrate 500000    //设置CAN0,注意此处使用的工具为上文编译的iprouter2

打开CAN网卡

ifconfig can0 up    //打开CAN0

设置CAN0接收数据

candump can0 &

CAN0发送数据

cansend can0 5A1#11.22.33.44.55.66.77.88

上述cansend命令中,“5A1”是帧ID,“#”后面的“11.22.33.44.55.66.77.88”是要发送的数据,十六进制。CAN2.0一次最多发送8个字节的数据,8字节数据之间用“.”隔开,can-utils会对数据进行解析。

备注

当CAN总线上只有一个结点时,此时CAN结点发送数据,无法获取到ACK,此时结点检测到错误并将会一直重发数据,该结点会进入被动错误状态,但不会进入总线关闭状态,直到有其它结点接入总线。这是符合CAN总线协议的。

7.1.4.4. CAN组网测试

多个CAN结点可进行组网测试,组网测试时应遵循以下原则:

  1. 不同CAN结点发送不同的帧ID,当多个结点同时发送时,总线根据帧ID进行仲裁,优先级最高的获得总线权,可以向总线发送数据。若结点发送的帧ID相同,则同时发送数据时将无法仲裁。

  2. 组网测试时应确保总线两端匹配有120欧姆(典型值)的终端电阻。

备注

由于每个demo板都有匹配的终端电阻,多个CAN接入总线时,多个demo板的终端电阻并联接入网络,会严重影响CAN总线通信。应拆除掉多余的终端电阻,确保整个CAN网络的终端电阻为120欧姆。