您当前的位置:五五电子网电子知识单片机-工控设备ARM单片机基于ARM处理器的CAN-Ethernet通信模块实现 正文
基于ARM处理器的CAN-Ethernet通信模块实现

基于ARM处理器的CAN-Ethernet通信模块实现

点击数:7840 次   录入时间:03-04 11:59:12   整理:http://www.55dianzi.com   ARM单片机

  近20 年来工业测控系统发展的趋势是:分散控制和集中管理、标准化和开放性。工业测控系统从传统的集中测量控制系统转向网络化的集散控制系统。随着现场总线技术高速发展和标准化程度不断提高,以现场总线技术为基础的开放型集散测控系统—现场总线测控系统得到了广泛的应用。同时,以太网的应用也迅速向工业测控系统渗透,在工业自动化应用中异军突起。

   这种趋势的出现与计算机技术、信息技术、网络通信技术的高速发展相关。现代工业系统信息交换的需求也已经从管理层内部迅速覆盖到控制、现场设备等各个层次,连接上层网络和现场总线的通信设备成为工厂自动化系统中的关键设备之一。CAN-Ethernet通信模块,是一种直接连接以太网和CAN现场总线的设备,有效解决了控制系统中现场总线和上层信息管理层的互联问题,使自动化系统中的信息交换可以深入到现场设备一级。

  1  CAN 总线和以太网的连接

  现有的CAN 总线到以太网的通信实现方案中,采用较多的是使用一台连接以太网的计算机,在计算机中安装一块内置式CAN通信板卡;或者通过计算机并行和串行接口外接CAN 的通信模块。这种方法有一定局限性,例如,使用计算机体积大,成本高;计算机故障后的重启速度慢,这可能严重影响系统的工作。采用基于ARM微处理器的单板机系统建立CAN-Ethernet 通信模块,可以很好地解决上述问题,降低系统的成本,提高其性能。CAN-Ethernet通信模块连接以太网和CAN 总线的结构如图1 所示。在以太网和CAN 总线之间,可以挂接一个通信模块连接两种网络,也可以使用多个通信模块形成多个通路。对于第二种情况,以太网上的计算机可以通过指定IP地址和上层协议的端口选择通路。

通过通信模块连接以太网和CAN 总线

图1  通过通信模块连接以太网和CAN 总线

  2  通信模块的硬件设计

   信模块的硬件核心采用高性能的ARM处理器S3C44B0x。它是一种精简指令处理器,可以在32位指令字的ARM模式下和16位指令字的Thumb模式下工作,设计者可以根据需要在性能和代码大小之间进行折衷;片内有8KB的高速静态RAM,既可以作为高速缓存,也可以作为片内存储器使用;片内外设包括异步和同步串行接口、I2C接口、LCD控制器及接口、实时时钟等。ARM处理器还具有低能耗和高性价比,非常适用于构建性能较高的嵌入式系统。

    通信模块使用2片39VF040芯片,位扩展后组成512K/16bit共1MB的FLASH ROM作为程序和配置数据的存储空间,使用1片62LV25616芯片组成256K/16bit 共512B的静态随机存储器。CAN总线通信控制芯片选用了Philips公司的SJA1000T,它是一种独立的CAN 总线通信控制器,仅需要CPU给出必要的指令,控制器就可以自动完成链路层以下的收发工作,并通知CPU总线的工作状态。以太网通信控制芯片采用了台湾ReaLTEk公司的RTL8019as,它是一种ISA 接口的10Mb/s以太网卡芯片,内部包含了以太网媒体访问控制和物理层驱动,并带有16KB的片上缓冲RAM。

  2. 1  处理器和5 V 系统数据线的连接

  系统中的处理器S3C44B0x 和存储器芯片都使用3.3 V 的IO电压,CAN总线接口、以太网接口则使用5V的工作电压。 S3C44B0x 的数据、地址和控制信号线可以直接驱动这些外围电路芯片(参考S3C44B0x、SJA1000、RTL8019as 数据手册) ,但是外围电路芯片输出的高电平可能损坏处理器和直接挂接在处理器数据线上的其他芯片。因此,数据线上应该使用总线转换器进行3.3/5V电平转换。系统选用了兼容3.3 V和5V的信号电平的双向总线收发器LCX245芯片。LCX245 的控制信号包括方向控制端DIR(0 :B →A ,1 :A →B) 和使能控制端OE(0 :接通,1 :隔断) ,这些控制信号将使用GAL芯片产生。图2 为系统的硬件连接示意图。

系统的硬件连接示意图

图2  系统的硬件连接示意图

  GAL 芯片选用GAL16V8D-15LP ,它的传播延迟时间为15ns ,反馈延迟时间为7ns ,适于较高速度的工作。除了产生总线收发器芯片的控制信号外,同一片GAL 还用来产生SJA1000 需要的控制信号。根据处理器S3C44B0x 的输出信号, 包括为SJA1000分配的地址组选通信号nGCS3和RTL8019分配的地址组选通信号nGCS4、读写信号线nOE和nWE,可以产生总线收发器LCX245所需要的DIR和OE信号,各信号如图3 所示。

LCX245 控制信号的产生

图3  LCX245 控制信号的产生

       nGCSx 是处理器的地址组选通信号,S3C44B0x 将外部地址空间从地址0 开始,每32M划分为一个组(Bank ) ,外部寻址时地址线A0 ~ A24 输出组内地址,该地址所在的组的组选通信号同时有效。图中虚线代表写操作时的DIR 信号,实线为读操作的信号。从图中可以得到使用ABEL 语言描写的的信号生成逻辑式为:   
  

      OE = (nOE &nWE) # (nGCS3 &nGCS4 &nGCS5) ; 
       DIR = nOE # (nGCS3 &nGCS4 &nGCS5) ;   
  

       但是为了使系统更加稳定地工作,应保证OE 信号有效时DIR 信号不发生变化,也就是说进行读操作时图中OE 低电平脉冲的前沿应晚于DIR ,后沿应早于DIR ,这样将出现反馈逻辑,可以使用类似于同步时序电路的设计方法设计。图4 是OE 信号和DIR 信号的次态卡诺图,次态符合上述要求,并且在输入一定的状态下,OE 信号和DIR 信号总是每次改变一个,逐次进入最后的稳态状态(粗体字表示) 。图中“×”表示不会出现的输入状态。

OE 和DIR 次态卡诺图

图4  OE 和DIR 次态卡诺图

  根据卡诺图重新写出的次态逻辑产生式,消除单独输入(包括OE 和DIR 的当前状态) 变化可能引起的竞争- 冒险现象后为:

  OEn = (nOE &nWE) # (nOE & ! DIR) # (nWE &DIR) # (nGCS3 &nGCS4 &nGCS5) ; ///

  DIRn = ( ! OE &DIR) # (nOE &DIR) # (nOE &OE) # (nGCS3 & nGCS4 &nGCS5) ;

  编译GAL 逻辑时应严格按照逻辑式生成与或逻辑。

  2. 2  CAN 总线通信控制芯片SJA1000 的读写

   CAN总线通信控制芯片SJA1000 没有提供单独的地址线,而使用可以与Intel 和Motorola系列微控制器兼容的分时复用地址/ 数据线。在一个读写周期内,微控制器首先输出操作地址并使地址锁存信号ALE 有效,SJA1000 在ALE 信号的下降沿将操作地址锁在片内;之后微处理器发出读写信号进行数据传输。但S3C44B0x 的数据线和地址线是分离的,对SJA1000 的读写操作需要模拟微控制器,先在数据线上写一个操作地址,并模拟产生一个ALE 信号锁存这个地址,之后进行正常的读写操作。系统使用地址线ADDR0 区分地址传输和数据传输:写奇地址时,不选通SJA1000 芯片,但给出一个有效的模拟ALE 信号;读写偶地址时,选通SJA1000 读写数据。另外,系统同时有两路CAN 总线接口,读写操作根据地址线ADDR1 区分两个SJA1000 芯片,两个片选信号和ALE 信号都要通过GAL 芯片产生,各信号如图5所示。

SJA1000 控制信号的产生

图5  SJA1000 控制信号的产生

  图中虚线是向SJA1000 传输和锁存地址的过程,实线是读写操作的过程。用ABEL 语言书写的各信号产生逻辑式为:

  CAN-CS = nGCS4 # ADDR0 ;

  ALE = ! nWE &ADDR0 & ! nGCS4 ;

  对SJA1000 的操作地址如下:地址锁存向0x08000001端口写地址;数据读写通过地址0x08000000。

  3  通信模块的软件设计

   通信模块和CAN 总线上的设备节点之间直接通过SJA1000收发CAN 总线报文进行通信,报文中的数据格式可以是基于CAN 总线的上层标准协议,也可以由用户定义。为了方便与以太网上计算机的通信,CAN-Ethernet 通信模块在以太网一端使用UDP协议,这样,计算机上的软件可以使用操作系统提供的网络访问服务。

  每一个CAN-Ethernet 通信模块需要设定局域网内一个惟一的IP地址,通过固定的UDP端口和计算机通信。模块和计算机之间既可以使用对单点IP的通信,也可以在UDP端口发送广播报文。在以太网一端,通信模块接收到UDP 报文后,将其中的信息组织成CAN 总线报文发往CAN 总线;在CAN 总线一端,通信模块接收报文标识能够通过本节点接收码和接收掩码设置的CAN 总线报文,并封装为UDP 报文,转发到以太网上。各节点IP 地址、UDP工作端口和CAN报文接收掩码等设置在系统初始化时进行。

[1] [2]  下一页


本文关键字:处理器  通信  ARM单片机单片机-工控设备 - ARM单片机