CAN
CAN(Controller Area Network,控制器局域网)是德国博世 1986 年为汽车 ECU 通信开发、后标准化为 ISO 11898 的多主、半双工、差分串行现场总线,专注嵌入式场景下高可靠、强实时、抗干扰的设备间短距通信,仅定义物理层 + 数据链路层,无上层网络 / 传输层,协议开销极低。
准备
- 一块犀牛派 A1
- 杜邦线若干
- 一台 Windows 电脑
连接
- 短接犀牛派 A1 can0 和 can1
- CAN_H0 连接 CAN_H1
- CAN_L0 连接 CAN_L1
| 序号 | 板卡丝印 | GPIO/系统映射 | 描述 |
|---|---|---|---|
| 21 | CAN_H0 | CAN_H1 | 实际对应 can1 |
| 22 | CAN_L0 | CAN_L1 | 实际对应 can1 |
| 23 | CAN_H1 | CAN_H0 | 实际对应 can0 |
| 24 | CAN_L1 | CAN_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 - 监听 can1
candump can1
# 终端2 - 向 can1 发送数据
cansend can1 123#1122334455667788
cansend can1 123#11111111可以看到如下输出:
