1、引言
随着工业控制系统逐步的自动化,现代化,现场总线控制系统得到越来越多的重视和应用,CAN总线是目前开发简单,性能价格比高的一种现场总线 。相对其他现场总线而言,CAN通信控制器的生产厂家最多、品种最全、应用也最为广泛。基于现场总线控制系统智能化、复杂度的提高,作为现场总线的核心部件微处理器,传统的51芯片,甚至ARM7已经逐渐不能满足需要,ARM9成为合适的选择。但许多ARM9并没有集成CAN接口,扩展CAN接口成为当务之急。且ARM9将数据地址总线分开,而CAN控制器为数据地址总线复用,使得CAN的扩展不能一味照搬51处理器的方式。在CAN模块驱动开发上,现有资料往往只针对Linux系统上的驱动开发 进行介绍,而现场总线控制系统对实时性的要求使得Linux系统要让位于更多的实时操作系统。
本文介绍了一种基于ARM920T现场总线的控制系统,详细说明了其上扩展CAN总线的两种方式,并给出具体的CAN模块在实时操作系统eCos 上驱动程序开发的步骤,最后对两种扩展进行了简要的比较。
2、现场总线控制系统简介
该现场总线控制系统采用EP9315为核心处理器。EP9315是Cirrus Logic公司开发的一款基于ARM920T的工业级处理器。该现场总线控制系统除了外扩的CAN总线接口、还外扩64Mb SDRAM和32MB FLASH、并带有PCMCIA 接口、E PROM接口、512kb SRAM、IDE接口、实时时钟、视频显示、彩色VGA TFT LCD触摸屏、支持模拟VGA连接、视频解码支持压缩视频输出和S-VIDEO输出、PS/2键盘,三个USB接口、三个串行接口、音频接口、1/10/100Mbps以太网接口、红外线接收口;实现了控制系统的数字化、智能化;可实现多种功能,使系统的控制功能本地化,提高了系统的可靠性、实时性;简化了系统的结构。多接口的系统结构使系统的扩展,变更,拆装更加灵活便利。
3、硬件系统扩展
3.1 CAN总线模块结构
本文使用SJA1000T作为CAN控制器扩展CAN模块 。SJA1000T是使用于汽车和一般工业环境的独立CAN总线控制器,具有完成CAN高性能通信协议所要求的全部必要特性;具有简单总线连接的SJA1000T可完成物理层和数据链路层的所有功能。支持CAN2.0协议。
CAN总线收发器TJA1040T是CAN控制器和物理总线之间的接口芯片,增强了总线的驱动能力,从而增加CAN总线的通信距离并使得一条总线上可以挂更多的节点。
为增强CAN总线节点的抗干扰能力 ,SJA1000T的TXO和RXO并不直接与TJA1040的TXD和RXD相连,而是通过两片光耦隔离芯片6N137与TJA1040T相连。很好地实现了收发器与控制器之间的电气隔离,保护智能节点核心电路安全工作;并实现了总线上各CAN节点间的电气隔离。需要强调的是:为实现这种电气隔离,光耦器件两侧的直流电源必须是两个无直接电气联系、相互隔离的直流电源。因而采用两路DC-DC隔离电源实现。为进一步加强安全性和抗干扰能力,可在总线收发器TJA1040T与CAN总线间串接限流电阻,避免TJA1040T受过流冲击。同时,在CANH和CANL,与地之间并联了滤波电容,可以起到滤除总线上的高频干扰,并具备一定的防电磁辐射能力。此外,通信信号在线路上传输时,信号传输到导线的端点时会发生反射,反射信号会干扰正常信号的传输。为消除这种影响,可在CAN总线两端并接匹配电阻,起到匹配总线阻抗和消除反射的双重作用。若忽略这些措施,会使数据通信的抗干扰性和可靠性大大降低,甚至无法通信。
3.2 CAN模块与ARM9的两种连接方式
SJA1000T数据地址总线复用,而整个ARM9系列包括ARM920T数据和地址总线分开。这就使得它与ARM9系列的连接不能像传统的用于51单片机系列方式扩展连接,本文给出两种扩展方式 :全部IO口连接方式和最少IO口的数据信号线连接方式。
3.2.1 IO接口连接
微处理器的通用IO口可以提供一个简便的方法来控制SJA100T。EP9315的GPIO信号提供了很大的灵活度来满足SJA1000T时间上的要求。将SJA1000T数据地址复用总线全部与EP9315的通用IO接口连接。其它信号线WR、RD、ALE……也与IO接口连接。具体连接方式参考图2。
3.2.2 数据信号线连接
除了全部由IO端口来控制CAN模块,还可利用ARM9的数据线和信号线来实现CAN模块的扩展。连接电路如图3所示,凡SJA1000T以外的信号均为EP9315芯片上的信号管脚,SJA1000T数据地址复用总线与EP9315数据线相连,GPIOx、GPIOy、GPIOz可以是EP9315任意GPIO引脚,但选择同一个通道的GPIO口将使编程更容易。注意SJA100T的INT可以连接CPU的INT也可以连接到带有中断的通用IO上。在EP9315中,GPIO的通道A,B,F有中断功能。
图2和图3是示意图,具体的由于EP9315信号高电平为3.3V,而SJA1000T高电平为5V,故需要通过74LVC245这类电平匹配芯片进行电平匹配后再连接。