欢迎来到天天文库
浏览记录
ID:20745965
大小:49.00 KB
页数:4页
时间:2018-10-15
《基于powerpc嵌入式系统的通信接口机设计与开发》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于PowerPC嵌入式系统的通信接口机设计与开发牛振波赵春阳杨彦萌河南辉煌科技股份有限公司450001摘要为解决铁路信号集中监测系统CAN接口、串行接口在节点数量较多时出现通信不正常甚至中断的问题,提出了在监测模块单元与信号集中监测站机之间加入通信接口机的方案。介绍了基于32位PowerPC微处理器MPC8247的通信接口机硬件、软件设计的实现方法。关键词铁路信号集中监测系统通信接U机微处理器MPC8247由于信号集中监测系统中所连接CAN接口、串行接口设备数量逐步增加,目前采用ISA及PC104类型的CAN扩展卡和串口
2、扩展受限于工控机上扩展槽位不足,迫切需求一种基于多CAN口、多串口到以太网接口的通信接口机设备。通信接口机系统实现网口到CAN接口、串口的协议转换以及接口转换功能,同时,通信接口机系统还降低了集中监测系统站机对实时数据采集的负担。其系统结构如下图所示,从下图1中可以看出通信接口机在信号集中监测系统通信中有着重要的地位。1.硬件设计通信接U机硬件结构如图2所示,其硬件主要包括:CPU核心板、电源部分;CPLD电路部分;扩展串口电路部分;总线电平转换电路部分;RTC时钊1电路部分;接口电路部分(CF卡接口、CAN接口板接口、4
3、22485接口板接口电路部分)组成。CPU板是通信接口机设计的重点和难点部分,考虑使用CPU核心板设计;核心板包含:CPU、SDRAM、FLASH、实时时钟、CPU时钟、CPU电源、2路以太网接U芯片、与底板的接插件(采用1.27MM间距接插件);实现对整个硬件的智能接口扩展以及对重要信息的存储等。CPU采用Freescale公司的32位PowerPC微处理器MPC8247(采用BGA封装)。MPC8247是Freescale公司MPC82XX系列微处理器的一种,基于PowerQUICC结构,主要由PowerPC603e
4、内核,系统接Ul单元S旧以及通信处理模块CPM组成。支持60x总线,其数据线宽为64位,地址线为32位;支持PCI八OCAL总线,其数据线宽为32位,地址线为32位。PowerPC内核工作时钟最高为300MHz,CPM工作吋钟最高为200MHz。SDRAM采用2片HY57V561620FTP-H-C,设计容量为64M。作为CPU核心板数据存储器使用。FLASH釆用一片JS28RL28J3D75,设计容量为16M。作为CPU核心板程序存储器使用。CAN通道电路由SJA1000CAN控制器芯片与通用CAN隔离收发器CTM825
5、1T组成,另外在通道前端增加三级防护电路(1、气体放电管进行雷击防护;2、瞬态抑制器进行浪通防护;3、CAN共模滤波器抑制共模干扰)。串口通道电路由ADM2587EBRWZ芯片与通道前端增加两级防护电路(1、气体放电管进行雷击防护;2、瞬态抑制器进行浪通防护)组成。1.软件设计通信接口机在Linux系统上进行软件开发设计,其软件部分包括:1、U-BOOT的移植;2、Linux系统内核的移植;3、外部接U驱动程序;4、通信接U机应用程序四个部分。外部接口驱动程序包括:CAN接口驱动程序;串口驱动程序。CAN驱动程序实现方法C
6、AN驱动程序负责完成linux内核与sjalOOO之间的数据通讯,即linux内核设置sjalOOO的控制寄存器,读写sjalOOO接收、发送缓冲器。应用程序部分负责完成用户空间和内核空间的数据交换,以及分析从sjalOOO接收到的报文,封装要发送报文。在linux中设备驱动程序是由一组数据结构和函数组成的,它包含设备服务子程序(如open、read、write、close、ioctl等)、初始化函数can_init()和中断处理程序can_interrupt()o在linux加载can驱动吋调用can_init(),向操
7、作系统注册设备,同时完成can总线波特率的设置,id过滤器的设置,清空接收和发送缓冲区,开启中断等工作,完成初始化后,退出复位模式,进入正常的工作模式。read从接收缓冲区读取数据;write向发送缓冲区写人数据;release关闭can控制器;ioctl向can控制器发各种操作命令,包括设置sjalOOO总线波特率、id过滤器等;open打开can控制器,并使用函数requestJrqO向系统申请中断,并设置中断处理程序为canJnterruptO,当sjalOOO内部中断寄存器(ir)的任意位置为1时,int引脚低电平
8、有效,调用其中断处理函数can-interrupt():在该函数中读取中断控制寄存器,判断中断原因(接收中断、发送中断、错误中断、数据溢出中断、唤醒中断),从而调用相应的服务子程序。sjalOOO读操作程序如下:base=ioremap(f6000000,0x20);unsignedcharread一c
此文档下载收益归作者所有