7.1.4. 测试指南

7.1.4.1. 测试环境

7.1.4.1.1. 硬件

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

  • PC:用于和测试板交互

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

7.1.4.1.2. 软件

  • PC端串口终端软件

  • can-utils第三方软件包

  • iprouter2第三方软件包

7.1.4.2. 第三方软件包编译

SDK中已默认编译can-utils/iprouter2软件包,可以直接使用。也可以通过以下两种方式编译测试:

7.1.4.2.1. 使用预编译包

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

Third-party packages--->
    [*] can-utils--->
            [*] use prebuilt binary instead of building from source
Third-party packages--->
    [*] iproute2--->
            [*] use prebuilt binary instead of building from source

7.1.4.2.2. 编译源码包

这种方式直接编译源码,而不使用SDK中的预编译包。

Third-party packages--->
    [*] can-utils--->
            [ ] use prebuilt binary instead of building from source
Third-party packages--->
    [*] iproute2--->
            [ ] use prebuilt binary instead of building from source

7.1.4.3. CAN收发测试

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

ip link set can0 type can bitrate 500000    //设置CAN0
ip link set can1 type can bitrate 500000    //设置CAN1

打开CAN网卡

ifconfig can0 up    //打开CAN0
ifconfig can1 up    //打开CAN1

设置CAN1接收数据

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欧姆。