基于CAN总线技术的嵌入式网关设计

发布时间:2010-4-8 12:47    发布者:我芯依旧
关键词: CAN , 技术 , 嵌入式 , 网关 , 总线
1 引言

作为当今最具发展前途的网络技术,自20世纪70年代末出现以来,以超出所有人预期的速度迅猛发展,现在己渗透进科学技术的方方面面。在测控系统应用网络技术将极大提高系统的性能,计算机测控技术与网络技术的结合已是大势所趋。如今,互联网应用正在转到以嵌入式设备为中心。IA(Internet Appliance)概念现在甚为流行,这表明互联网应用进入嵌人式互联网的时代已经来临。本文设计了一个嵌入式网关用于Ethernet之间的互连。

2 系统硬件分析与设计

系统使用嵌入式微控制器作为处理器,以太网驱动芯片RTLS019AS经耦合隔离滤波器HR61101G和RJ45接口接入以太网,可以将采用CAN总线协议通信的设备连到以太网上。CAN总线控制器采用SJAl000芯片.CAN收发器则采用了PCA82C250。

为适应上网需求.嵌入式微控制器不仅要能执行传统的控制功能,还要能执行与连接因特网相关的功能.而SX52芯片能比较容易地实现TCP/IP协议,所以我们选择它作为微控制器。实现嵌入式设备接入Internet,从原则上来讲最关键的就是要实现TCP/IP协议,还有一个关键的问题就是传输信息媒质的选择嵌入式系统应用最广泛的网络驱动芯片就是NE2000兼容系列网络芯片,它具有接El方便、驱动简单、占用资源少等优点,特别适合嵌入式系统。我们选用RTL8019AS芯片。

2.1 CAN总线网络设备接口设计

CAN总线网络设备接口设计较网关设计简单。它是在完成设备功能的基础上加入一个CAN通信控制器接口芯片,实现与CAN总线网络的连接。

2.2 网关设计

嵌入式透明网关设计是整个系统设计的核心。它由CAN控制器协议转换模块和以太网控制器协议转换模块两部分组成。网关硬件中微处理器起核心作用。

数据的流向为:请求和控制信息从局域网中来,通过RJ45送到RTL8019AS,RTL8019AS负责将以太网帧的首部和尾部信息剥离,将处理后的数据包送人TCP/IP协议栈,由协议栈对数据报进行解析,得到原始的请求和控制信息。请求和控制信息再经过SJA1000进行CAN协议格式的数据封装,再和现场的CAN总线设备进行通信。请求和控制的回复领先局域网的过程与上面正好相反。如图1。

1.gif
图1硬件结构框图

图中AT24C64为8K EEPROM主要是用来保存嵌入式透明SX-52网关的配置信息,如网关IP地址、MAC地址和SJAl000的功网络标示符、网络掩码MAR和总线定时(BTR0,BTR1)等.这样.我们就能够灵活方便地修改网关参数,适应不同环境。同时也考虑到以后的扩展。硬件电路图如图2所示:

2.gif
图2硬件电路

3 系统软件设计

整个系统的软件设计可以分为三个部分:CAN总线设备接口通信模块、透明网关协议转换模块和以太网层应用模块。

3.1 协议转换模型

透明网关协议转换模型的设计整体思路为:当以太网应用层有数据要发送到CAN节点时,首先,数据发送到透明网关由以太网控制器协议转换模块从传输层数据报文中解析出完整的CAN协议数据包.存放在数据缓冲区A,再通知总调度模块,由它调用CAN控制器协议模块将它发送到CAN总线上。反过来,当CAN设备有数据要发送到用户层时,首先,数据发送到透明网关由CAN控制器协议模块将完整的CAN协议数据包存放在数据缓冲区B,再通知总调度模块,由它调用以太网控制器协议转换模块将完整的CAN协议数据包作为应用层数据封装起来.再发送到以太网的应用层。其模型结构图如图3所示

3.gif
图3透明网关协议转换模型结构图

3.2 CAN控制器协议驱动模块

CAN控制器协议转换模块稃序主要由SJAl000的寄存器读程序CANRead().写程序CANWrite(),初始化程序CANWrite()、总线状态查询CANStatus()和发送、接收程序txdsub(),rxdsub()组成。之所以要编写单独的.SJAl000的寄存器读、写子程序,这是由SX52芯片只有I/O端口的特点决定的。

3.2.1以太网控制器协议驱动模块

要将系统接入以太网.就要对RTL801A9S进行编程.完成以太网帧的数据收发.相当于实现PC机中网卡的驱动程序功能。以太网控制器驱动程序用于设置RTL8019AS的工作状态和工作方式.分配收发数据的缓冲区.通过对地址及数据口的读写来完成以太网帧的接收与发送。首先要对RTLS019AS进行复位,并将其设置为跳线模式:然后对RTL8019AS的工作参数进行设置,以使其开始工作;接下来就读写RTL8019AS的RAM以完成数据包的接收和发送。程序流程如图4所示。

4.gif
图4 RTL8019AS工作流程

以太网控制器RTLS019AS工作在网络中的数据链路层,对于它的应用主要有3个基本函数,即RTL8019AS初始化,状态检测函数、数据帧发送和接收函数。其中状态检测函数用来监测是否有数据帧到达以及总线占用状态。RTLS019AS有两个DMA通道,一个是本地DMA,用做缓冲RAM与FIFO之间的数据交换,具有较高优先级,远程DMA用作外部存储器与RTL8019AS内部缓冲RMA之间的数据交换。SX52通过远程DMA将一个数据帧放入RTC8019AS内部的缓冲区RAM中后,利用加方式将发送起始地址送到TPRS.帧长度送到TBRC然后将命令寄存器RC中TXR置位开始一个数据帧的发送。当网络上有数据到达RTL8019AS时。它的CURR将不等于BNRY,如果采用中断方式。则RTL8019AS将会自动通知MCU。然后可采用包发送将缓冲环中的数据取出,这里我们采用查询方式来处理。

3.2.2 CAN-Ethemel协议转换模块

主程序工作流稗图如图5所示,单片机首先初始化网络设备。网卡IP地址和物理地址存于单片机的EEPROM中,单片机复位后首先读取这些数据以初始化网卡。

网卡初始化完成以后.当有数据从RJ45过来时,单片机对数据包进行分析.如果是ARP(物理地址解析协议)数据包,则程序转入ARP处理程序。如果足IP(网间协议)数据包且传输层使用UDP(用户数据报协议).端口正确,则认为数据报正确,数据解包后.送入数据缓冲区A,最后把数据部分通过CAN接口输出。反之.如果单片机从CAN接口收到数据.则将数据按照UDP协议格式打包,送人数据缓冲区B,由RTL8019AS将数据输出到局域网中。

5.gif
图5 主程序工作流程图

这里,我们在通信传输层采用UDP协议是考虑到CAN协议数据报为短帧形式(每个数据帧最多为8个字节)如果采用TCP传输协议,我们要传输8个字节CAN协议数据,就要先通过3次握手建立连接,再传输数据,之后还要通过握手释放连接,这样传输效率对有限的网络资源来说无疑是一种浪费。而UDP是无连接的传输.这样可以提高网络传输效率.同时,也减轻网关的处理任务。当然.UDP传输协议是不可靠的,对于控制网络来说.这是不允许的。

以太网控制器协议转换模块主要由以太网卡驱动、ARP、ICMP、UDP、TCP协议的若干个API函数组成。

本文作者创新点:本文设计了一个嵌入式多协议CAN网关,选用8位微控制器作为核心控件,通过控制以太网控制芯片和CAN总线控制芯片与CAN总线相连。

本项目经济效益为125万元。


作者:钟家民,王国才      来源:《微计算机信息》(嵌入式与SOC)2009年第3-2期
本文地址:https://www.eechina.com/thread-10247-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表