Edit online

测试指南

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 收发测试

  1. 将测试板上的两个 CAN 接口对接。使用 ip 命令设置两个开发板的 CAN 接口,设置 CAN 接口的速度为 500Kb/s。
    ip link set can0 type can bitrate 500000    //设置 CAN0
    ip link set can1 type can bitrate 500000    //设置 CAN1
  2. 打开 CAN 网卡
    ifconfig can0 up    //打开 CAN0
    ifconfig can1 up    //打开 CAN1
  3. 设置 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 结点可进行组网测试,组网测试时应遵循以下原则:

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