微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于ARM控制器LPC2294的CAN/PCI智能通信卡设计

基于ARM控制器LPC2294的CAN/PCI智能通信卡设计

时间:05-21 来源:3721RD 点击:

引言

LPC2294是PHILIPS公司推出的一款功能强大、超低功耗且具有ARM7TDMI内核的32位微控制器。它具有丰富的片上资源,完全可以满足一般的工业控制需要,同时还可以减少系统硬件设计的复杂度,提高系统的稳定性。

CAN("Controller Area Network")总线控制器局域网是一种能有效支持分布式控制或实时控制的串行通信网络。CAN总线以其高性能、高可靠性、廉价等特性,越来越受到人们的重视和青睐。为了有效的管理工业现场的CAN节点,充分发挥CAN总线的性能,通信卡的设计与研究十分必要。但目前市场上类似产品存在着两点不足。

首先是一般工业现场中可能拥有不止1条CAN总线,而目前设计的通信卡上的CAN的接口太少,因而会给设备的集中管理带来困难。

二是目前两条CAN网段问的通信主要通过一对一CAN总线网桥来实现,但这种方式解决不了工业现场中同时在几条CAN网段问传输数据的需求,也容易导致组网混乱。

为此,本设计选用的ARM控制器LPC2294内部集成有四路CAN控制器,完全符合CAN规范CAN2.0B标准和ISO11989-1标准。全局验收过滤器可识别几乎所有总线的11位和29位Rx标识符。作为本设计的核心部件,LPC2294的使用能够很好地解决上述2个问题,它不仅能担起主控制器的工作,同时还可作为CAN网络的数据传输控制器,来与网络中的节点实现数据交换。

1 硬件设计方案

目前计算机的发展,除了少数专门的工控机还在使用ISA总线以外,PC机上使用最为普遍的就是PCI总线了。PCI总线是Intel公司推出的一种高性能32/64位PC机局部总线,可能同时支持多组外围没备而不受制于处理器,其数据吞吐量很大(33 MHz总线频率、32位传输时,其峰值可高达132 MB/s),PCI总线依靠其优越的性能必将取代ISA总线。因此,本文基于PCI总线来设计一个带有4个CAN总线网段的智能通信卡。图1是该通信卡的整体硬件结构图。

  1.1 PCI总线接口的实现

PCI总线具有非常严格的规范,也具有良好的兼容性。但是PCI总线协议也比较复杂。本设计选用专用的PCI总线接口芯片PCI9030来实现网关的PCI总线接口。PCI9030是PLX公司开发的低价格PCI总线从模式接口芯片。该芯片功耗低,符合PCI2.2规范,用户设计时只需考虑局部总线一侧的逻辑控制电路和用于配置的外部EEP-ROM,而不必考虑PCI协议的具体实现方法,这样就大大简化了设计难度,缩短了开发周期。

PCI9030要求有一块EEPROM作为初始化存储器。在系统加载时,PCI9030先从该EEPROM中加载初始数据,进行初始设置,因此,EEP-ROM中的信息是否正确决定了PCI卡的加载和运行是否正常。本设计选用ST93CS56作为PCI9030的初始化存储器,其结构方案如图2所示。

  1.2 CAN总线接口的实现

该通信卡中CAN总线接口部分实现有以下两种常用的方法:

(1) 独立CAN总线控制芯片实现

即采用飞利浦公司的SJA1000独立CAN控制器来实现CAN协议。这种方法的优点是能实现较复杂的功能,灵活性也不错,但由于它是独立的控制器,设计通信卡拥有4个CAN网段就需要4片SJA1000,这样会造成资源冗余,系统会比较庞大,而且稳定性也会受影响,设计难度也较大。

(2) 带CAN接口的微控制器实现

该方法具有代表性的有飞利浦公司的ARM芯片LPC2294,它集成有4路片上CAN总线控制器,能很方便地实现多路CAN总线接口,减小系统规模,提高系统稳定性。

比较上述两种方法,在传统的SJA1000中,接收过滤只能满足一些规律性较高的ID筛选过滤,或对个数较少的ID (一般小于10~15个)进行任意筛选过滤,而难以实现更复杂的任意ID进行筛选过滤,这无疑增加了系统软件设计及运行负担。而第二种设计方法相对较为简便。由于LPC2294微控制器中为所有CAN控制器提供了全局的接收标识符查询功能,因而能容易地设计较复杂的ID接收过滤,其工作的重点主要在ARM芯片的软件设计上。本文采用第二种方法来实现CAN总线接口,并采用PCA82C250作为CAN总线驱动器,同时将6N137连入CAN控制器和CAN驱动器之间以降低CAN总线对网关卡的电磁干扰。图3所示是LPC2294中一个CAN接口的连接图,其它接口与之类似。


  1.3 微控制器与PCI9030之间的硬件接口设计

微控制器与PCI9030之间的硬件设计是该通信卡的核心控制部分。本设计采用ALTERA公司的FPGA EPlC6来实现微控制器与PCI9030之间的接口。EPlC6是ALTERA公司的一款FPGA芯片,它内部集成了20块128×36 bits的RAM模块,可以方便地将它编程为所需要的"双口RAM",然后将上行数据(CAN节点发往PC机的数据)和下行数据(PC机发往CAN节点的数据)通过该"双口RAM"缓存转发。由于EPlC6拥有丰富的I/O口,故可灵活选

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top