2026-07-27 17:12:45 西盟科技资讯
相比传统MCU方案,越来越多工业网关开始采用运行Linux的ARM处理器,以满足多协议通信、本地数据处理、远程升级以及图形化配置等需求,主要是连接现场设备与云平台的重要节点。在众多国产ARM平台中,瑞芯微RK3506凭借较低的成本、多工业级接口资源以及Linux生态,从24年发布以来就是众多小型工业网关、工业PLC、人机界面(HMI)、数据采集终端等产品开发的热门平台。
目前市场上已有不少基于RK3506打造的核心板产品,例如定昌电子推出的DC_CY506A RK3506核心板,在保持较低成本的同时,提供了丰富的工业接口资源(包括双路CAN和RJ45等),对于需要开发CAN总线、RS485通信、工业以太网等需求的工业网关应用的开发者来说,具有较高的参考价值。官方提供CAN开发使用指南。

RK3506轻量级工业Linux平台
RK3506是瑞芯微推出的一款面向轻量级工业控制领域的处理器,采用三核ARM Cortex-A7+1个Cortex-M0的AMP异构架构,主频最高1.5GHz。其中,Cortex-A7主要负责Linux系统及上层应用运行,Cortex-M0则可承担高实时性控制任务,例如实时采集、PWM控制、协议处理等。Cortex-M0微处理器核心在成本和低功耗,以及实时高响应的任务上有优势,也适用于工业网关场景多种传感器(模拟传感器、触摸传感器、光电传感器等)的数据快速采集和传输。

以定昌电子DC_CY506A RK3506核心板为例,其尺寸仅38mm×38mm,采用120PIN邮票孔封装,可选配256Mb/512Mb DDR3以及8GB eMMC存储,能够运行Linux Buildroot操作系统,在保证性能的同时,也具备较高的成本优势,对于中低端工业设备开发具有一定吸引力。

为什么工业网关越来越多轻量级Linux平台?
传统工业控制设备通常采用单片机或PLC作为核心控制器,能够完成简单的数据采集和逻辑控制,但随着工业设备联网需求增加,需要同时支持Modbus、CAN、MQTT、OPC UA、以太网通信、远程维护以及本地人机交互等功能,MCU的性能和软件生态逐渐受到限制。
Linux系统拥有成熟的网络协议栈、多任务调度机制以及丰富的软件生态,开发者可以快速集成数据库、Web服务器、Docker容器、Python、C/C++等开发环境,大幅降低软件开发难度。同时,Linux支持完善的设备驱动框架,对于串口、CAN、SPI、I2C、USB、网络等外设均提供标准接口,也更适合工业设备长期维护和升级。对于小型工业终端而言,轻量级的Linux Buildroot系统比较适合
丰富的工业接口
工业网关需要连接各种现场设备,因此接口资源往往比CPU性能更加重要。RK3506原生集成了丰富的工业外设接口,包括6路串口(支持TTL、RS232、RS485扩展)、2路CAN总线、两组RMII百兆以太网接口,以及SPI、I2C、SAI、SARADC等通信资源。同时,RM_IO还可复用配置为90多种GPIO功能,方便开发者根据项目需求进行接口扩展。对于工业网关来说,多路串口可以同时连接PLC、仪表、变频器等设备;双RMII能够实现双网口通信;而CAN接口则能够直接各种工业现场总线设备。

CAN工业通信总线
CAN(Controller Area Network)是一种典型的实时串行通信协议,与UART、RS485相比,CAN最大的特点在于采用多主通信机制,所有节点均可主动发送数据,并通过报文ID进行非破坏性仲裁,优先级高的数据能够优先占用总线。此外,CAN采用差分信号(CAN_H、CAN_L)进行通信,具备较强的抗电磁干扰能力,同时协议内置CRC校验、错误检测、自动重发以及故障隔离机制,在复杂工业环境下能够保持较高的通信可靠性。

RK3506集成两路CAN控制器,支持CAN 2.0B协议,可发送和接收标准帧与扩展帧,适用于工业设备控制、设备联网及现场数据采集等应用。从定昌电子的RK3506核心板规格来看其CAN1接口对应核心板2、3号引脚,分别为CAN1_TX和CAN1_RX;CAN0接口对应29、31号引脚,分别为CAN0_RX和CAN0_TX,IO电压均为3.3V。在实际硬件设计中,需要外接CAN PHY收发器(如TJA1051、SN65HVD230等),由CAN控制器负责协议处理,PHY负责将TTL信号转换为CAN差分信号,实现与CAN总线通信。

CAN详细开发指南
1、关键硬件连接规范和操作要点:
线序匹配:使用双绞线连接CAN_H至CAN_H、CAN_L至CAN_L,避免信号反射
终端电阻:总线两端需配置120Ω电阻(并联总阻值60Ω)以消除信号回波
电磁兼容:长距离布线建议采用屏蔽双绞线,避免与高压线平行走线
2、配置设备树节点:
①、SOC级设备树底层路径kernel-6.1/arch/arm/boot/dts/rk3502.dtsi
can0: can@ff320000 {
compatible = "rockchip,rk3506-canfd", "rockchip,rk3576-canfd";
reg = <0xff320000 0x1000>;
interrupts =
clocks = <&cru CLK_CAN0>, <&cru HCLK_CAN0>;
clock-names = "baudclk", "apb_pclk";
resets = <&cru SRST_CAN0>, <&cru SRST_H_CAN0>;
reset-names = "can", "can-apb";
assigned-clocks = <&cru CLK_CAN0>;
assigned-clock-rates = <300000000>;
status = "disabled";
};
②、板级设备树路径:kernel-6.1/arch/arm/boot/dts/ztl-rk3506-cy506a-v01.dts
&can0 {
status = "okay";
assigned-clocks = <&cru CLK_CAN0>;
assigned-clock-rates = <200000000>;
pinctrl-names = "default";
pinctrl-0 = <&rm_io19_can0_tx &rm_io20_can0_rx>;
};
&can1 {
status = "okay";
assigned-clocks = <&cru CLK_CAN1>;
assigned-clock-rates = <200000000>;
pinctrl-names = "default";
pinctrl-0 = <&rm_io26_can1_tx &rm_io25_can1_rx>;
};
3、通信功能验证流程与CAN FD 常用命令接口
测试工具部署:
candump:实时捕获总线数据(需放置于/system/bin/)
cansend:发送自定义CAN帧(通过SDK或开源仓库获取)
查询当前网络设备
ifconfig -a # 列出所有网络接口信息(包括CAN设备)
CAN FD 启动与配置
# 关闭CAN接口(需先关闭才能配置)
ip link set can0 down
# 配置CAN FD参数:
# - bitrate: 仲裁段波特率(经典CAN段,下面例子为1Mbps)
# - dbitrate: 数据段波特率(FD加速段,下面例子为3Mbps)
# - fd on: 启用CAN FD模式
ip link set can0 type can bitrate 1000000 dbitrate 3000000 fd on
# 不启用CAN FD模式
# ip link set can0 type can bitrate 1000000 dbitrate 3000000 fd off
# 查看CAN接口详细信息(检查配置是否生效)
ip -details link show can0
# 启动CAN接口
ip link set can0 up
CAN FD 发送数据
# 发送标准帧(ID: 0x123,数据: DE AD BE EF,FD帧格式)
cansend can0 123##1DEADBEEF
# 发送扩展帧(ID: 0x00000123,数据: DE AD BE EF,FD帧格式)
cansend can0 00000123##1DEADBEEF
# 注:
# - `##1` 表示CAN FD帧(`##0`为经典CAN帧)
# - 数据部分为16进制,无需空格分隔
CAN FD 接收数据
# 实时监听can0接口的通信(显示原始报文)
candump can0
# 高级用法:过滤特定ID(例如只监听ID 0x123)
candump can0,123:1FFFFFF