拒绝拥堵!利用电鱼智能 RK3568 双 CAN-FD 接口构建机器人高速传感器网络
机器人内部传感器数量激增导致传统 CAN 总线不堪重负。本文深度解析如何利用 电鱼智能 RK3568 的原生双路 CAN-FD 接口,采用“动力域”与“传感域”物理隔离的双总线架构,结合 5Mbps 的高速传输与 64字节长载荷特性,构建低延迟、抗干扰、高吞吐的机器人内部神经网络。

什么是 电鱼智能 RK3568 的 CAN-FD?
电鱼智能 RK3568 核心板引出了 SoC 原生的 CAN 控制器,支持 CAN-FD 标准。
-
速度更快:相比传统 CAN 的 1Mbps 极限,CAN-FD 的数据段波特率可达 5Mbps 甚至 8Mbps。
-
载荷更大:单帧有效数据从 8 字节提升至 64 字节。这意味着传输同样的 IMU 数据,协议开销大幅降低,总线传输效率提升了 300% 以上。
![电鱼智能 RK3568 CAN-FD 接口波形示意图:仲裁段与数据段的波特率切换]
为什么要用“双 CAN”架构? (拓扑设计)
在复杂的机器人中,把电机和精密传感器挂在同一条总线上是大忌。电机的电流噪声极大,且伺服的高频通讯会抢占带宽。
我们推荐**“双域隔离”**拓扑:
1. CAN0:动力域 (Motion Domain)
-
挂载设备:轮毂电机驱动器、舵机控制器、升降推杆。
-
特点:高电磁干扰、高实时性要求(1ms 同步周期)。
-
策略:仅跑控制指令,不跑大数据。
2. CAN1:传感域 (Sensor Domain)
-
挂载设备:超声波雷达阵列、TOF 传感器、9轴 IMU、BMS 电池管理、无线手柄接收器。
-
特点:数据量大(如 IMU 200Hz 上报)、对干扰敏感。
-
策略:开启 CAN-FD 加速,利用大带宽吞吐数据。
关键技术实现 (Implementation)
1. 硬件设计:CAN Transceiver 选型
RK3568 输出的是 TTL 电平的 TX/RX 信号,必须搭配支持 FD 的收发器。
-
推荐型号:NXP TJA1051 或 Microchip MCP2562FD。
-
注意:普通收发器(如 TJA1050)不支持 CAN-FD 的高频信号,会导致误码。
2. Linux SocketCAN 配置 (Shell)
在电鱼智能的 Linux 系统中,使用 ip 命令配置波特率切换(Bit Rate Switching, BRS):
Bash
# 关闭网卡
ip link set can1 down
# 配置 CAN-FD
# arb: 仲裁段波特率 1Mbps (兼容性)
# dbit: 数据段波特率 5Mbps (高速传输)
# fd on: 开启 FD 模式
ip link set can1 up type can bitrate 1000000 dbitrate 5000000 fd on sample-point 0.8 dsample-point 0.8
# 查看状态
ip -details link show can1
3. C 应用层编程 (SocketCAN)
应用层需要构造 64 字节的 canfd_frame:
C
// 逻辑示例:发送 CAN-FD 长帧数据
#include <linux/can.h>
#include <linux/can/raw.h>
void send_sensor_poll_request(int sock_fd) {
struct canfd_frame frame;
frame.can_id = 0x123;
frame.len = 64; // 有效载荷长度 64字节
frame.flags = CANFD_BRS; // 开启波特率切换 (加速)
// 填充批量读取指令
sprintf((char*)frame.data, "POLL_ALL_SENSORS_MODE_FAST");
// 发送
write(sock_fd, &frame, sizeof(struct canfd_frame));
}
性能表现 (对比数据)
假设机器人挂载了 8 个超声波探头和 1 个 IMU:
| 指标 | 传统单路 CAN (1Mbps) | 电鱼 RK3568 双路 CAN-FD (5Mbps) | 提升效果 |
| 总线负载率 | > 85% (拥堵) | < 15% (畅通) | 系统更稳定 |
| IMU 更新频率 | 勉强 50Hz | 稳定 200Hz - 400Hz | 姿态解算更平滑 |
| 单帧延迟 | ~ 250 μs | ~ 60 μs | 避障反应更快 |
| 抗干扰能力 | 差 (电机噪声耦合) | 优 (物理隔离) | 传感器数据不跳变 |
常见问题 (FAQ)
1. 以前的 CAN 2.0 设备能接在 CAN-FD 总线上吗?
答:可以,但会拖慢整体速度。CAN-FD 控制器向后兼容 CAN 2.0,但为了发挥高速优势,建议将老旧的 2.0 设备挂在 CAN0 (动力域),将支持 FD 的新型传感器挂在 CAN1 (传感域)。
2. 120欧姆 终端电阻怎么加?
答:这是新手最容易忽略的问题。双总线架构下,CAN0 和 CAN1 必须分别独立匹配电阻。每条总线的两端(即 RK3568 端和最远端的传感器端)各并联一个 120Ω 电阻。
3. RK3568 的 CAN 是原生的还是 SPI 转的?
答:是原生的。市面上很多低端板卡用 SPI 转 CAN(如 MCP2515),在高负载下 CPU 占用极高且容易丢包。电鱼智能 RK3568 采用 SoC 内部集成的 CAN 控制器,性能强劲且稳定。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)