MicrocomputerApplicationsVol.22,No.4,2006 开发应用 微型电脑应用 2006年第22卷第4期
文章编号:1007-757X(2006)04-0040-03
基于AT91RM9200的CAN2Ethernet
间的智能网关的设计
刘学军,万曼影,师好智
摘 要:本文介绍了基于AT91RM9200的CAN总线与以太网之间的智能网关的设计与实现。给出了AT91RM9200与基于SPI总线的的CAN总线通信芯片MCP2510的硬件接口方法及CAN总线到以太网的双向通信软件实现方法。关键词:CAN;以太网;ARM;现场总线;网关中图分类号:TP336 文献标识码:A
近年来工业测控系统发展的趋势是:分散控制和集中管理、标准化和开放性。工业测控系统从传统的集中测量控制系统转向网络化的集散控制系统。随着现场总线技术高速发展和标准化程度不断提高,以现场总线技术为基础的开放型集散测控系统———现场总线测控系统得到了广泛的应用。同时,以太网的应用也迅速向工业测控系统渗透,在工业自动化应用中异军突起。这种趋势的出现与计算机技术、信息技术、网络通信技术的高速发展相关。现代工业系统信息交换的需求也已经从管理层内部迅速覆盖到控制、现场设备等各个层次,连接上层网络和现场总线的通信设备成为工厂自动化系统中的关键设备之一。
因此我们有必要把这两种异构网络连接起来,这就需要一个CAN-Ethernet的智能网关,CAN-Ethernet是一种直接连接以太网和CAN现场总线的设备,有效解决了控制系统中现场总线和上层信息管理层的互联问题,使自动化系统中的信息交换可以深入到现场设备一级。
图2 AT91RM9200与MCP2510的硬件连接原理图
2.1 CPU及以太网模块(AT92RM9200)
2 硬件设计
下面是AT91RM9200与MCP2510的硬件连接原理图
通信模块的硬件核心采用高性能的ARM处理器
AT91RM9200。AT91RM9200内部还包括16KB的SRAM和128KB的ROM,具有外部总线接口(EBI),最重要的是AT91RM9200内含EMAC,这就增加了集成度,减少了系统所需
要的芯片数量。
1 CAN总线和以太网的连接
我们采用了基于ARM920T的AT91RM9200和MCP2510两块芯片构建CAN和以太网之间的智能网关.
2.2 CAN模块
MicrochipTechnologyInc.生产的MCP2510是一款控制器局
域网络(CAN)协议控制器,该器件包含三个发送缓冲器和两个接收缓冲器,减少了单片机(MCU)的管理负担。MCU的通讯是通过行业标准串行外设接口(SPI)来实现的,其数据传输速率高达5Mb/s。MCP2510可以通过标准的SPI接口与
AT91RM9200进行通信。
MCP2510的主要功能是在AT91RM9200的控制下实现CAN规范,它内部的所有寄存器和控制寄存器都映射到一个
图1 智能网关的原理示意图
注:(DM9161E(Ethernetphysicallayertransceiver))
地址表上,AT91RM9200可以使用相应的命令格式通过标准的
SPI接口来完成对MCP2510的初始化、工作状态的控制以及数
据的读写。此外,MCP2510产生的中断还可以反馈给
AT91RM9200来处理。
作者简介:刘学军,上海交通大学船舶与建筑学院,硕士研究生,上海 200030
万曼影,上海交通大学船舶与建筑学院,硕士生导师,上海 200030师好智,上海交通大学船舶与建筑学院,硕士研究生,上海 200030
・40・
MicrocomputerApplicationsVol.22,No.4,2006 开发应用 微型电脑应用 2006年第22卷第4期
((unsignedint)AT91C-PA15-EMDC)|
((unsignedint)AT91C-PA7-ETXCK-EREFCK),//PeripheralA
0);//PeripheralB}
3.3 UDP和CAN数据包之间的转换
3 通信模块的软件设计
通信模块和CAN总线上的设备节点之间通过MCP2510收发CAN总线报文进行通信,报文中的数据格式可以是基于
CAN总线的上层标准协议,也可以由用户定义。为了方便与
为了减少在转换过程中的数据拷贝,可以定义如下数据结构:IPHead,UDPHead,EthernetHead,CAN,Frame。这种数据结构,RichardStevens的TCP/IP详解里有详细的说明,此处不再赘述。从CAN总线上收到的报文直接放在Frame结构体的
can[]成员中,并记录长度,封装为UDP报文的过程就是填充Frame结构体中其他成员的过程;从以太网上收到的报文逐字以太网上计算机的通信,CAN-Ethernet通信模块在以太网一端使用UDP协议,这样,计算机上的软件可以使用操作系统提供的网络访问服务。每一个CAN-Ethernet通信模块需要设定局域网内一个惟一的IP地址,通过固定的UDP端口和计算机通信。模块和计算机之间既可以使用对单点IP的通信,也可以广播报文。在以太网一端,通信模块接收到UDP报文后,将其中的信息组织成CAN总线报文发往CAN总线;在CAN总线一端,通信模块接收报文标识能够通过本节点接收码和接收掩码设置的CAN总线报文,并封装为UDP报文,转发到以太网上。各节点IP地址、UDP工作端口和CAN报文接收掩码等设置在系统初始化时进行。
3.1 通信控制芯片的初始化和收发操作3.1.1 配置MCP2510:
//配置PIO控制器来驱动SPI信号voidAT91F-SPI-CfgPIO(void){//使PIO控制器处于外设模式AT91F-PIO-CfgPeriph(
AT91C-BASE-PIOA,//PIO控制器的基址((unsignedint)AT91C-PA3-NPCS0)|((unsignedint)AT91C-PA4-NPCS1)|((unsignedint)AT91C-PA1-MOSI)|((unsignedint)AT91C-PA5-NPCS2)|((unsignedint)AT91C-PA6-NPCS3)|((unsignedint)AT91C-PA0-MISO)|
((unsignedint)AT91C-PA2-SPCK),//PeripheralA0);//PeripheralB}
3.1.2 配置AT91RM9200:
//配置PIO控制器以驱动EMAC信号voidAT91F-EMAC-CfgPIO(void){//配置PIO控制器以处于外设模式AT91F-PIO-CfgPeriph(
AT91C-BASE-PIOA,//PIO控制器基址
((unsignedint)AT91C-PA14-ERXER)|((unsignedint)AT91C-PA12-ERX0)|((unsignedint)AT91C-PA13-ERX1)|((unsignedint)AT91C-PA8-ETXEN)|((unsignedint)AT91C-PA16-EMDIO)|((unsignedint)AT91C-PA9-ETX0)|((unsignedint)AT91C-PA10-ETX1)|
((unsignedint)AT91C-PA11-ECRS-ECRSDV)|
节放入Frame结构体中,CAN报文就包含在can[]成员中。
图3 以太网数据包转换成CAN数据包
图4 CAN数据包转换成以太网数据包
structFrame{
structEthernetHeadethhd;
・41・
MicrocomputerApplicationsVol.22,No.4,2006 开发应用 微型电脑应用 2006年第22卷第4期structIPHeadiphd;structUDPHeadudphd;
unsignedcharcan[10];//放置CAN报文shortcanlen;//记录收到的CAN报文长度};
5 结束语
采用上述方法实现的CAN-Ethernet通信模块,解决了以太网和现场总线CAN总线之间互联问题,可以根据应用的需求,进行灵活的配置和改进,提高系统的性能和可靠性。它为
CAN-Ethernet的互联提供了低成本、高性能及灵活的解决方
4 通信程序的实现
AT91RM9200对MCP2510和以太网控制器的操作都使用
案。
了中断方式,通信模块的软件程序可以分成MCP2510中断服务程序、AT91RM9200的EMAC中断服务程序和主程序3个部分,是典型的前、后台处理结构。在中断服务程序中,将收到的CAN总线报文和以太网报文读入内存中的缓冲区,并累加缓冲区内还未处理的报文计数。在主程序循环中,轮流处理两个缓冲区中的报文,并减小报文计数值。下图是
AT91RM9200的中断服务流程、MCP2510中断服务流程、主程
序流程图:
图5(C) 主程序流程
参考文献:
[1]J.(Catsoulis,John),徐君明等译嵌入式硬件设计[M].中国
电力出版社2004
图5(a) AT91RM9200的EMC的中断服务流程
[2]ArnoldBerger嵌入式系统设计Embeddedsystemsdesign[M].
电子工业出版社2002
[3]邬宽明.CAN总线原理和应用系统设计[M].北京:北京
航空航天大学出版社,1996.
[4]WrightGR,StevensWR.TCP/IP详解[M].北京:机械工
业出版社,2000.
[5]S.R.(Ball,StuartR.)嵌入式微处理器模拟接口设计Ana2loginterfacingtoembeddedmicroprocessorsrealworld.[M]电子
工业出版社2004
(收稿日期:2005-6-23)
图5(b) MCP2510的服务中断程序
・42・