测试指南
2 Dec 2024
Read time: 2 minute(s)
测试环境
- 硬件
-
测试板:带有两个 CAN 接口的测试板
-
PC:用于和测试板交互
-
串口线:连接测试板的调试串口
-
- 软件
-
PC 端串口终端软件
-
can-utils 第三方软件包
-
iprouter2 第三方软件包
-
第三方软件包编译
SDK 中已默认编译 can-utils/iprouter2 软件包,可以直接使用。也可以通过以下两种方式编译测试:
- 使用预编译包
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
- 编译源码包
这种方式直接编译源码,而不使用 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
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 总线协议的。
CAN 组网测试
多个 CAN 结点可进行组网测试,组网测试时应遵循以下原则:
- 不同 CAN 结点发送不同的帧 ID,当多个结点同时发送时,总线根据帧 ID 进行仲裁,优先级最高的获得总线权,可以向总线发送数据。若结点发送的帧 ID 相同,则同时发送数据时将无法仲裁。
- 组网测试时应确保总线两端匹配有 120 欧姆(典型值)的终端电阻。
注: 由于每个 demo 板都有匹配的终端电阻,多个 CAN 接入总线时,多个 demo 板的终端电阻并联接入网络,会严重影响 CAN 总线通信。应拆除掉多余的终端电阻,确保整个 CAN 网络的终端电阻为 120 欧姆。