前言:
RK3588内置CAN控制器存在不可修复的硬件缺陷,考虑工业、医疗、车载等应用领域对CAN通讯稳定性有着极高的要求,为规避此问题,建议使用SPI转CAN替代原生CAN接口。
一、背景说明
RK3588内置CAN控制器存在以下不可修复的硬件缺陷:
发送扩展帧时可能降级为标准帧,导致丢帧;
接收时概率性CRC校验和ID填充错误,触发总线错误帧。

为规避此问题,我司建议使用MCP2518(SPI转CAN控制器)替代原生CAN接口。如下是基于眺望电子RK3588核心板资料所提供的方案支持,提供从硬件设计、驱动调试等方面的详细指导。
二、硬件电路设计
2.1接口连接
眺望电子RK3588核心板无默认预留SPI接口,需根据提供的引脚分配表选择引脚进行功能复用,如下选择J2连接器中的UART6作为案例进行介绍。


2.2防护设计
- 电源滤波:MCP2518的VCC引脚需并联100nF+10μF电容;
- 信号防护:CANH/CANL添加TVS二极管(如SMBJ6.5CA)和共模电感(如DLW21HN221SQ2L);
- SPI信号匹配:若走线长度>5cm,建议串联22Ω电阻以减少反射。
注:CAN收发器的选择以及隔离防护等级可按照项目需求灵活调整。
三、SDK内核修改
3.1复用修改
设备树文件:talowe-rk3588-Linux.dts
首先diabled uart6节点,使引脚释放出来

3.2启用SPI控制器
添加以下节点内容:
&spi4{ status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&spi4m2_cs0 &spi4m2_pins>; max-speed = <10000000>; // 10MHz mcp2518: can-controller@0 { compatible = "microchip,mcp2518fd"; reg = <0>; spi-max-frequency = <10000000>; interrupt-parent = <&gpio1>; interrupts =
&pinctrl {
mcp2518 { mcp2518_int: mcp2518_int { rockchip,pins = <1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>; }; };};
确认内核配置选项:
CONFIG_SPI=y CONFIG_SPI_ROCKCHIP=y CONFIG_CAN_MCP251XFD=y


3.3禁用原生CAN控制
在设备树中注释或删除RK3588原生CAN节点:
/*&can1{ pinctrl-0 = < &can1m1_pins>;status="okay";assigned-clocks = <&cru CLK_CAN1>;assigned-clocks-rates=<200000000>; }; &can2{ status="okay";assigned-clocks=<&cru CLK_CAN2>;assigned-clocks-rates=<200000000>; };*/

3.4固件生成
保存配置后生成固件烧写到板子上进行下一步验证。

出现如上信息则编译成功,将新生成的boot.img烧写到板子上验证即可。
四、驱动调试记录
4.1基础功能验证
SPI通信测试:
# 查看SPI设备是否识别 cat /sys/bus/spi/devices/spi1.0/modalias # 输出应为:spi:microchip,mcp2518fd
CAN接口注册:
ip link set can0 up type can bitrate 500000 ifconfig can0 up
4.2数据收发测试
发送测试:
cansend can0 123#DEADBEEF
接收测试:
candump can0
4.3常见问题处理

如果您在基于我司RK3588核心板进行SPI转CAN调试期间遇到任何问题,欢迎随时与我们联系,可以为您提供专业的技术支持,期待与您合作!
-
CAN通信
+关注
关注
5文章
100浏览量
18797 -
SPI
+关注
关注
17文章
1866浏览量
99830 -
RK3588
+关注
关注
8文章
493浏览量
7062
发布评论请先 登录
一文搞懂 RK3588 PCIe:从硬件资源到拆分配置 + 避坑指南(含脑图)
基于瑞芯微 RK3588 的 ARM 与 FPGA 交互通信实战指南
RK3588 PCIe设备识别失败?一招避坑“非法Class”陷阱
干货分享 | RK3588 Ubuntu系统Docker容器使用指南
RK3588S和RK3588S2差异说明
RK3588主板:多元场景的硬核“芯”力量
RK3588 EVB开发板原理图讲解【八】 RK3588 power Tree
快速上手RK3588:蓝牙模块测试
PET_RK3588_CORE核心板
快速上手RK3588常用接口测试
RK3588与RK3576区别解析

实战案例 | RK3588 CAN通信BUG避坑指南
评论