全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

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

时间:2025-02-20 08:30

人气:

作者:admin

标签: RK3588  spi  CAN通信 

导读:前言:RK3588内置CAN控制器存在不可修复的硬件缺陷,考虑工业、医疗、车载等应用领域对CAN通讯稳定性有着极高的要求,为规避此问题,建议使用SPI转CAN替代原生CAN接口。一、背景说明...

前言:

RK3588内置CAN控制器存在不可修复的硬件缺陷,考虑工业、医疗、车载等应用领域对CAN通讯稳定性有着极高的要求,为规避此问题,建议使用SPI转CAN替代原生CAN接口

一、背景说明

RK3588内置CAN控制器存在以下不可修复的硬件缺陷:

发送扩展帧时可能降级为标准帧,导致丢帧;

接收时概率性CRC校验和ID填充错误,触发总线错误帧。

eea6cf7a-ef21-11ef-9434-92fbcf53809c.jpg

为规避此问题,我司建议使用MCP2518(SPI转CAN控制器)替代原生CAN接口。如下是基于眺望电子RK3588核心板资料所提供的方案支持,提供从硬件设计、驱动调试等方面的详细指导。

二、硬件电路设计

2.1接口连接
眺望电子RK3588核心板无默认预留SPI接口,需根据提供的引脚分配表选择引脚进行功能复用,如下选择J2连接器中的UART6作为案例进行介绍。

eec09fc2-ef21-11ef-9434-92fbcf53809c.pngeecea608-ef21-11ef-9434-92fbcf53809c.png

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节点,使引脚释放出来

eeda1556-ef21-11ef-9434-92fbcf53809c.png

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-names = "default"; pinctrl-0 = <&mcp2518_int>; status = "okey"; };};
&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


eee78330-ef21-11ef-9434-92fbcf53809c.pngeef4129e-ef21-11ef-9434-92fbcf53809c.png

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>; };*/

ef051102-ef21-11ef-9434-92fbcf53809c.png

3.4固件生成

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


ef10f04e-ef21-11ef-9434-92fbcf53809c.png

出现如上信息则编译成功,将新生成的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常见问题处理

ef1def56-ef21-11ef-9434-92fbcf53809c.png

如果您在基于我司RK3588核心板进行SPI转CAN调试期间遇到任何问题,欢迎随时与我们联系,可以为您提供专业的技术支持,期待与您合作!

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信