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