推广 热搜: 西门子PLC  危化品安全,爆炸  变送器  触摸屏  培训  阀门  PLC  电机  变频器  服务机器人 

多串口转换网关在嵌入式系统中的实现

   日期:2013-03-23     来源:工控之家网    作者:工控之家    浏览:68    评论:0    
摘 要:本文介绍了一种采用嵌入式系统来实现多串口转换网关的方法。并结合C51F023单片机和MCF5272处理器的特点及其工作原理,对单片机的编程策略进行了详尽的探讨。

关键词:嵌入式系统;C51F023; MCF5272; 转换网关

引言

  近些年,互联网以其便捷、高速传输数据的特点越来越受到人们的青睐。互联网已经进入了世界的每一个角落。而在工业控制和通讯设备中,更多的却是符合RS-232标准的串行口设备。如何将多个串行口的数据转发到网络上,实现设备的远程控制、数据的远程传输便成了一个亟待解决的问题。本文提出了一种基于嵌入式系统来实现串口和串口、串口和网口之间的数据相互转发的方案。

总体设计方案

  设计的总体方案如图一所示。


图一 多串口转换网关总体设计方案

  本系统采用核心处理模块加协处理器的两级设计方案。这样设计的目的是利用协处理器缓解核心处理器的处理压力,并解决核心处理器数据接口数量相对不足和本系统多路数据量接入需求的矛盾。

  核心处理器采用摩托罗拉公司的MCF5272芯片。这款芯片在Motorola公司嵌入式处理器中属于中低档产品。但是低档不等于低效,在主频66M时可以达到63MIPS,接近MPC860的MIPS。并且外围电路接口丰富,在摩托罗拉冷火系列芯片中集成度最高。该处理器集成了两个全双工的串口收发器,10/100M的以太网控制器,USB控制器,QSPI口等,非常适合于大量嵌入式应用的场合。核心处理器的外围扩展芯片有FLASH、SDRAM、网卡芯片、USB驱动芯片等。这就组成了一个核心处理模块,同时我们在这个核心处理模块上移植了µCLinux操作系统。利用µCLinux操作系统中自带的TCP/IP协议栈能很方便地实现网络数据的收发。

  协处理器采用CYGNAL公司的C8051F023单片机。C8051F023单片机自带有两个通用异步全双工串口和一个SPI口,同时可以用单片机内部的PCA模块来软件模拟第3个全双工串口。协处理器与核心处理器通过同步串行接口SPI口连接,进行数据的交换。

  在单片机端三个串口不断地接收数据,同一化处理后通过SPI口线传递给MCF5272。核心处理模块接收来自SPI口线和自身两个串口的数据帧,根据数据帧头的标志位进行存储转发。

  整套系统共有5个全双工串口和一个10/100M的以太网网口用来进行数据的收发,实现了串口和串口、串口和网口之间数据的相互转发。可以满足大多数工控设备和通信系统的需求。

单片机中多任务调度的实现

  在C8051F023单片机中需要实现三个串口的全双工收发以及与MCF5272的通讯工作。实现这些功能有两种方案,一种是采用定时轮询各个串口和SPI口特定寄存器,以判断是否有数据到达,并进行相应的处理,这种方案编程简单但实时性较差;另一种方案是采用中断机制,定义各串口的中断向量和中断处理程序进行处理,这种方案编程较复杂但实时性很好。根据我们的需求,各串口数据的收发,SPI口数据的收发,内部程序定时器的运行都是要求实时运行的不同任务,所以采用方案二可以获得更好的实时性。由于单片机内部没有嵌入操作系统,所以这些多个不同的任务就要依靠多中断加上同步锁的策略来实现。

  硬件串口、SPI口以及定时器都有各自的中断向量和中断处理程序模块,而软件串口的接收和发送中断则需要依赖于自定义的外部中断向量来实现中断机制。这些中断的中断级别都相同,如果发中断冲突,则根据51单片机的中断向量表,先执行中断向量号小的中断处理程序,再执行中断向量号大的中断处理程序。

  如果在数据发送的同时,新的数据接收进来并冲入发送缓存区,则会发生不可避免的通信数据出错。类似这样的问题就需要同步锁来解决。考虑到实时效应,实现C8051F023同步锁的机制为:当需要发送的一帧数据帧进入发送缓存时,中断处理程序立刻加锁,不允许新的数据再进入发送缓存,直到该帧数据全部发送完毕再解锁,此时新的数据才被允许进入发送缓存区。与此同时,在单片机内部划分出四块二级缓存区,将三个串口和一个SPI口接收到的数据先存入这四块二级缓存区中,以免数据的丢失。

单片机与MCF5272的连接与通讯

  单片机与MCF5272之间采用SPI口进行通讯。硬件电路如图二所示。


图二 单片机与MCF5272连接原理图

  SPI为同步串行接口,要求收发同步,但是实际的运用中,指令信号的接收和来自各串口数据的发送显然是异步的。这就需要对SPI口进行异步化编程设计。

  将MCF5272的QSPI口设置为主模式,为SPI时钟的发送方;而单片机的SPI口则设置为从模式。MCF5272在程序的运行中,不间断的通过QSPI口发送数据,在不发送指令帧数据时,就发送“0”数据;而单片机的SPI口就会不断的收到数据,在丢弃“0”数据外,接收到来自MCF5272有用的指令帧数据。由于SPI的收发同步的特征,MCF5272不间断发送数据的同时,便可以不断的收到来自单片机SPI口的数据,同样,在丢弃没有任何意义的“0”数据后,将接收到通过各个串口传递而来各种不同的数据。这就实现了同步SPI口转变为异步全双工的工作。

数据帧的同一化

  单片机的三个串口所接收到的数据都将通过SPI接口传递至核心处理器MCF5272,同时核心处理器的数据也通过SPI口传递给单片机。这就需要单片机和MCF5272之间有一致的数据接口,以方便数据的分发和接收。我们需要对三个串口接收到和从SPI口接收到的数据帧重新定义帧格式,进行同一化处理。同一化帧格式见图三,其中串口源地址用来识别数据来自哪一个串口,串口目的地址用来识别数据将要发送至哪一个串口。


图三 串行口数据帧发送格式

  在MCF5272核心处理板上,从串口接收到的数据转发至网络同样需要进行同一化的处理。帧格式见图四。


图四 网口数据帧发送格式

结 语

  整套系统的五个全双工串口和一个网口对核心处理板来说是完全透明的。只需根据实际情况中的具体要求在µCLinux下编写上层应用软件即可,因而适用于大多数的工控设备和通讯设备。如果在后端连接上无线传输模块,该方案还适用于无线通信领域。

参考文献:

  1.《C8051F020/1/2/3混合信号ISP FLASH微控制器数据手册》 潘琢金 译

  2.《MCF5272 Coldfire Integrated Microprocessor User’s Manual》

  3.《8051单片机C语言控制与应用》 陈龙三 编著 清华大学出版社

 
打赏
 
更多>同类技术
0相关评论

推荐图文
推荐技术
点击排行
网站首页  |  免责声明  |  联系我们  |  关于我们  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅  |  违规举报  |  鲁ICP备12015736号-1
Powered By DESTOON