Skip to content

CAN 应用

CAN 简介

CAN(Controller Area Network,控制器局域网)是德国博世 1986 年为汽车 ECU 通信开发、后标准化为ISO 11898的多主、半双工、差分串行现场总线, 专注嵌入式场景下高可靠、强实时、抗干扰的设备间短距通信,仅定义物理层 + 数据链路层,无上层网络 / 传输层,协议开销极低。

准备

  • 一块犀牛派 A1
  • 杜邦线若干
  • 一台 Windows 电脑

连接

  • 短接犀牛派A1 can0 和 can1
  • can0_H 连接can1_H
  • can0_L 连接can1_L
序号板卡丝印GPIO/系统映射描述
21CAN_H0CAN_H1实际对应can1
22CAN_L0CAN_L1实际对应can1
23CAN_H1CAN_H0实际对应can0
24CAN_L1CAN_L0实际对应can0

注意

犀牛派A1 板卡丝印上的can0 和can1 与系统指令列出的can0 和can1,并非对应关系,实际对应关系,参考上表

测试

  • 打开 Windows 电脑,在浏览器中输入犀牛派 A1 设备IP:8000,访问到设备web页面,用户名/密码:aidlux/aidlux。

  • 执行如下指令,完成can0 和 can1 配置

shell
# 提权
sudo su

# can1 配置
ip link set can1 down
ip link set can1 up type can bitrate 500000
ip link set can1 up

# can0 配置
ip link set can0 down
ip link set can0 up type can bitrate 500000
ip link set can0 up

# 查询配置
ip --detail link show can0
ip --detail link show can1

可以看到如下输出:

  • 执行如下指令,安装 cansend/candump 工具
shell
sudo apt install can-utils
  • 在web页面中,开启两个终端,执行如下指令:
shell
# 终端1
candump can1
# 终端2
cansend can1 123#1122334455667788
cansend can1 123#11111111

可以看到如下输出: