作者:Explorer
文章链接:https://bbs.21ic.com/icview-3212888-1-1.html
应用背景
由于CAN总线的优异性能,且低成本、高可靠性、实时性、灵活性、抗干扰能力强等特点,广泛应用于各种自动化控制场景中,尤其在汽车电子、自动控制、电力系统等领域。
在复杂网络系统中,常常设计高、低速两种速率不同的CAN通讯网络,甚至3种不同功能相互独立的CAN子网。实现隔离与智能化处理。确保特定信息网络传输的安全性。并且随着时代的发展,工业领域逐渐引入以太网,其高数据吞吐量是CAN总线无法比拟的。但在不改变传统工业总线的前提下,实现不同网络之间的转换,有着迫切的需求。CAN网关即是在这样的需求下应允而生。
实现功能
CAN网关的功能主要实现CAN总线网络的安全隔离、分发与智能化处理。包括隔离高速、低速两部分总线,实现高低速CAN总线的智能中继;以及实现CAN总线与以太网的协议转换,增强工业系统的数据吞吐量并提供广域网互联的可能性。
开发板使用情况
本项目基于RT-Thread系统和N32G457开发板开发的一款CAN网关;硬件部分由w5500以太网模块,SN65HVD234D收发器、TJA1050收发器,N32G457主控板等组成;开发板上使用到两路CAN外设、SPI外设、LED灯等资源。软件层面基于Rt-Thread实时操作系统进行代码开发。将一路高速CAN(CAN1控制器)与一路以太网作为网关输入,低速CAN(CAN2控制器)作为网关输出实现隔离收发数据功能。实现一个CAN网络到另一个CAN网络、以太网的中继转发。
硬件框架
硬件框架说明:
如上图所示,硬件部分由W5500以太网模块,SN65HVD234D收发器,N32G457主控板,TJA050收发器等组成;其中:
W5500以太网模块,负责网关输入端网口数据收发功能,采用SPI接口与主控通讯,工作模式为TCPServer。
SN65HVD234D收发器,负责网关输入端高速CAN数据收发功能,通过主控板CAN1控制器进行控制。
TJA1050收发器,负责网关输出端低速CAN数据收发功能,通过主控板CAN2控制器进行控制。
N32G457主控板,负责网关输入输出端之间的通讯协议转换。
其中LED灯用来指示网关数据输入状态以及运行状态,红灯500MS闪烁表示网关运行正常,蓝灯闪烁表示高速CAN有数据输入,绿灯闪烁表示网口有数据输入。
软件框架
软件框架说明:
软件模块包括N32G457的原厂BSP、RT-Thread实时操作系统、W5500原厂BSP、自定义的CAN代码、逻辑代码等。其中原厂的BSP和RT-Thread系统部分已适配好,并未做大范围的更改。RT-Thread操作系统版本为4.1.0
如上图所示,该项目软件架构主要采用上图所示的几个线程完成,其中:
ETH_Thread_Task:负责将网口接收到的数据通过低速CAN发出
ETH_HEARTBEAT_Thread_Task:负责检测客户端是否断开连接,并做好网口重连准备
CAN1_Thread_Task:负责将高速CAN接收到的数据通过低速CAN发出
CAN2_Thread_Task:负责将低速CAN接收到的数据通过网口和高速CAN发出
作品完整图片
代码地址:https://gitee.com/xiere/N32G457_ ... -thread_CAN-gateway