基于PowerPC嵌入式系统的通信接口机设计与开发

基于PowerPC嵌入式系统的通信接口机设计与开发

牛振波赵春阳杨彦萌河南辉煌科技股份有限公司450001

摘要为解决铁路信号集中监测系统CAN接口、串行接口在节点数量较多时出现通信不正常甚至中断的问题,提出了在监测模块单元与信号集中监测站机之间加入通信接口机的方案。介绍了基于32位PowerPC微处理器MPC8247的通信接口机硬件、软件设计的实现方法。

关键词铁路信号集中监测系统通信接口机微处理器MPC8247

由于信号集中监测系统中所连接CAN接口、串行接口设备数量逐步增加,目前采用ISA及PC104类型的CAN扩展卡和串口扩展受限于工控机上扩展槽位不足,迫切需求一种基于多CAN口、多串口到以太网接口的通信接口机设备。通信接口机系统实现网口到CAN接口、串口的协议转换以及接口转换功能,同时,通信接口机系统还降低了集中监测系统站机对实时数据采集的负担。其系统结构如下图所示,从下图1中可以看出通信接口机在信号集中监测系统通信中有着重要的地位。

1.硬件设计

通信接口机硬件结构如图2所示,其硬件主要包括:CPU核心板、电源部分;CPLD电路部分;扩展串口电路部分;总线电平转换电路部分;RTC时钟电路部分;接口电路部分(CF卡接口、CAN接口板接口、422\485接口板接口电路部分)组成。

CPU板是通信接口机设计的重点和难点部分,考虑使用CPU核心板设计;核心板包含:CPU、SDRAM、FLASH、实时时钟、CPU时钟、CPU电源、2路以太网接口芯片、与底板的接插件(采用1.27MM间距接插件);实现对整个硬件的智能接口扩展以及对重要信息的存储等。

CPU采用Freescale公司的32位PowerPC微处理器MPC8247(采用BGA封装)。MPC8247是Freescale公司MPC82XX系列微处理器的一种,基于PowerQUICC结构,主要由PowerPC603e内核,系统接口单元SIU以及通信处理模块CPM组成。支持60x总线,其数据线宽为64位,地址线为32位;支持PCI/LOCAL总线,其数据线宽为32位,地址线为32位。PowerPC内核工作时钟最高为300MHz,CPM工作时钟最高为200MHz。

SDRAM采用2片HY57V561620FTP-H-C,设计容量为64M。作为CPU核心板数据存储器使用。

FLASH采用一片JS28F128J3D75,设计容量为16M。作为CPU核心板程序存储器使用。

CAN通道电路由SJA1000CAN控制器芯片与通用CAN隔离收发器CTM8251T组成,另外在通道前端增加三级防护电路(1、气体放电管进行雷击防护;2、瞬态抑制器进行浪通防护;3、CAN共模滤波器抑制共模干扰)。

串口通道电路由ADM2587EBRWZ芯片与通道前端增加两级防护电路(1、气体放电管进行雷击防护;2、瞬态抑制器进行浪通防护)组成。

2.软件设计

通信接口机在Linux系统上进行软件开发设计,其软件部分包括:1、U-BOOT的移植;2、Linux系统内核的移植;3、外部接口驱动程序;4、通信接口机应用程序四个部分。

外部接口驱动程序包括:CAN接口驱动程序;串口驱动程序。

CAN驱动程序实现方法

CAN驱动程序负责完成linux内核与sja1000之间的数据通讯,即linux内核设置sja1000的控制寄存器,读写sja1000接收、发送缓冲器。应用程序部分负责完成用户空间和内核空间的数据交换,以及分析从sja1000接收到的报文,封装要发送报文。

在linux中设备驱动程序是由一组数据结构和函数组成的,它包含设备服务子程序(如open、read、write、close、ioctl等)、初始化函数can_init()和中断处理程序can_interrupt()。

在linux加载can驱动时调用can_init(),向操作系统注册设备,同时完成can总线波特率的设置,id过滤器的设置,清空接收和发送缓冲区,开启中断等工作,完成初始化后,退出复位模式,进入正常的工作模式。read从接收缓冲区读取数据;write向发送缓冲区写人数据;release关闭can控制器;ioctl向can控制器发各种操作命令,包括设置sja1000总线波特率、id过滤器等;open打开can控制器,并使用函数request_irq()向系统申请中断,并设置中断处理程序为can_interrupt(),当sja1000内部中断寄存器(ir)的任意位置为1时,int引脚低电平有效,调用其中断处理函数can-interrupt(),在该函数中读取中断控制寄存器,判断中断原因(接收中断、发送中断、错误中断、数据溢出中断、唤醒中断),从而调用相应的服务子程序。

sja1000读操作程序如下:

base=ioremap(f6000000,0x20);

unsignedcharread_can_reg(unsignedchar*base,unsignedcharreg)

{

unsignedcharvalue;

writeb(reg,base);

value=readb(base+0x40);

return(value);

}

writeb(reg,base)模拟ale锁存地址,发地址信号reg,base由硬件设计电路知道这将使地址锁存信号ale拉高;然后,reg被送到了复用总线上;然后,通过readb(base+0x40)读取地址reg上的数据,base将使ale拉低,reg被锁存;然后,data被送到复用总线上,也就读到了被锁存的地址reg所指空间的数据。

串口驱动程序实现方法

Uart设备是继tty_driver的又一层封装。实际上uart_driver就是对应tty_driver.在它的操作函数中,将操作转入uart_port.。在写操作的时候,先将数据放入一个叫做circ_buf的环形缓存区.然后uart_port从缓存区中取数据,将其写入到串口设备中。当uart_port从serial设备接收到数据时,会将设备放入对应linediscipline的缓存区中。

通信接口机应用程序实现方法

工作流程:先从EPROM中读取数据,设置接口参数。程序采用轮询接收缓冲区的方式,对数据接收并打包。首先,程序进行初始化处理,然后判断有无连接,存在连接时,将接收打包后的数据通过以太网上传至信号集中监测站机。然后,判断有无站机下发的数据。若有,则按照要求发送至对应端口上。

3.结论

随着铁路新设备、新装备的不断应用和铁路信号集中监测系统的迫切需要,通信接口机凭着其自身的优点已经成为铁路信号集中监测系统中的关键设备。本文通过在PowerPC嵌入式系统平台上实现网口到CAN接口、串口的协议转换以及接口转换功能,同时,通信接口机系统还降低了集中监测系统站机对实时数据采集的负担。本设计对集中监测系统的网络化、智能化发展有积极的推动作用。

参考文献

【1】刘淼.嵌入式系统接口设计与Linux驱动程序开发[M].北京:北京航空航天大学出版社,2006

【2】张建,蒋新华,陈兴武.CAN总线在基于ARM嵌入式数控系统中的应用[J].自动化与仪表,2008(7):25-27

【3】邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996

标签:;  ;  ;  

基于PowerPC嵌入式系统的通信接口机设计与开发
下载Doc文档

猜你喜欢