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结点可进行组网测试,组网测试时应遵循以下原则:
不同CAN结点发送不同的帧ID,当多个结点同时发送时,总线根据帧ID进行仲裁,优先级最高的获得总线权,可以向总线发送数据。若结点发送的帧ID相同,则同时发送数据时将无法仲裁。
组网测试时应确保总线两端匹配有120欧姆(典型值)的终端电阻。
注解
由于每个demo板都有匹配的终端电阻,多个CAN接入总线时,多个demo板的终端电阻并联接入网络,会严重影响CAN总线通信。应拆除掉多余的终端电阻,确保整个CAN网络的终端电阻为120欧姆。