基于Delphi的PC与NIOS+II的串行通信.pdf
《基于Delphi的PC与NIOS+II的串行通信.pdf》由会员分享,可在线阅读,更多相关《基于Delphi的PC与NIOS+II的串行通信.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第2 0 卷第5 期海军工程大学学报v 0 1 2 0N o 52 0 0 8 年1 0 月J O U R N A LO FN A V A LU N I V E R S I T YO FE N G I N E E R I N GO c t 2 0 0 8基于D e l p h i 的P C 与N I O SI I 的串行通信卞小林,王瑛剑,杨智(海军工程大学电子工程学院,武汉4 3 0 0 3 3)摘要:在比较S O P C 与单片机的基础上,介绍了N I O SI I 串行通信接口以及D e l p h i 下利用S p c o m m 控件实现串行通信的便利性。搭建了N I O SI I
2、软核处理器与上位机R S 2 3 2 串行通信电平转换电路,给出了下位机串行通信初始化代码。为了增强通信过程中的抗干扰能力,方案中设计定义了通信信息协议,并给出了具体上下住机信息的处理过程。实际应用表明。该方案有着很好的容错性与稳定性。关键词:S O P C;N 1 0 SI I;串行通信;S p e o m m 控件中图分类号:T P 3 6 8文献标志码:A文章编号:1 0 0 9 3 4 8 6(2 0 0 8)0 5 0 0 7 5 0 4S e r i a lp o r tc o m m u n i c a t i o nb e t w e e nP Ca n dN II Ib a
3、s e do nD e l p h iB I A NX i a o-l i n,W A N GY i n g ji a n,Y A NZ h i(C o l l e g eo fE l e c t r o n i cE n g i n e e r i n g,N a v a lU n i v o fE n g i n e e r i n g,W u h a n4 3 0 0 3 3,C h i n a)A b s t r a c t:T h ec o m m u n i c a t i o ni n t e r f a c eo fN I O SI Ia n dt h ea d v a n t
4、 a g eo fS p c o m mu n d e rD e l p h iw e r ei n t r o d u c e db yc o m p a r i n gS O P Cw i t hM C U T h el e v e lc o n v e r s i o nc i r c u i tw a sb u i l tf o rh o s tc o m p u t e rR$2 3 2s e r i a lc o m m u n i c a t i o n。a n dt h ei n i t i a l i z a t i o nc o d eo fs e r i a lc o m
5、 m u n i c a t i o no fs l a v ec o m p u t e rw a so f f e r e d I no r d e rt oe n h a n c et h ea b i l i t yo fa n t i i n t e r f e r e n c ei nc o m m u n i c a t i o n t h ec o m m u n i c a t i o nr u e s s a g ep r o t o c o lw a sd e s i g n e da n dd e f i n e di nt h es c h e m e T h ec
6、o n c r e t ed a t ap r o c e s s i n gf o rm e s s a g e so nb o t hs i d e sw a sg i v e n T h er e s u l t so fp r a c t i c a lo p e r a t i o ns h o wt h a tt h es t r a t e g yi se x c e l l e n ti ne r r o rt O-l e r a n c ea n ds t a b i l i t y K e yw o r d s;S O P C;N I O SI I;s e r i a lc
7、 o m m u n i c a t i o n;S p c o m mc o n t r o l在工业控制领域,往往需要一台上位机控制多台下位机,二者之间的通信成为一个重要问题。在实践中,串行通信由于具有传输线少、操作简便等特点而常常被用来解决此类问题。目前,单片机可以实现串行通信,仍然占据和继续领导低端产品市场,其技术不断发展,性能也不断提高口。但是,随着系统向高速、低耗、低压和多媒体、网络化、移动化的发展,系统对电路的要求越来越高,将单片机嵌入到S O C(片上系统)可以促进软硬件协同设计及计算机系统设计自动化的发展。因此,3 2 位处理器成为高性能嵌入式系统开发的核心。S O P C(
8、片上可编程系统)是A l t e r a 公司提出来的一种灵活、高效的S O C解决方案。它将处理器、存储器、I O 口等系统设计需要的功能模块集成到一个P L D 器件上,构建成一个可编程的片上系统 2 。与单片机相比,S O P C 可以提供合理的性能组合、提升系统的性能、降低系统成本、延长产品的生命周期。D e l p h i 作为W i n d o w s 环境下的一种优秀的可视化开发平台,具有简便高效的特点。它采用可视化的I D E(集成开发环境),其代码输入量少,开发效率高,而且支持嵌入式汇编、动态库调用、A c t i v e X 控件和第三方控件的调用等功能,用以实现串行通信十
9、分方便。收稿日期:2 0 0 8 0 5 0 8;修回日期:2 0 0 8 0 6 3 0。作者简介:卞小林(1 9 7 5 一),男,讲师,硕士,主要研究方向为雷达信号处理,E-m a i l:x l b i a n 1 2 6 c o r n。万方数据海军工程大学学报第2 0 卷1N I O SI I 软核处理器串行通信接口A h e r a 公司开发的基于S O P C 技术的N I O SI I 嵌入式软核处理器,是一个可变结构的、通用型的R I S C 嵌入式3 2 位处理器。设计者可以方便地使用其系统开发工具S O P CB u i l d e r 设计构造以处理器为基础的系统,并
10、编程到F P G A(现场可编程门阵列)内予以实现。整个N I O SI I 系统的设计过程充分体现了其可重配置的思想,体现了面向用户、面向应用的S O P C 技术思想,即N I O SI I 为F P G A 内部的可编程的单片机t s 。具有A v a l o n 接口的N I O S1 1 的U A R T(通用异步收发器)在F P G A 上的嵌人式系统和外设之间实现了一种串行字符流的通信方式。它实现了R S 2 3 2 协议,可以改变其波特率、奇偶校验位、停止位、传输的数据位及其他可选的R T S-C T S 流控制信号等。设计者根据需要可对其硬件进行配置。U A R T 内核提供
11、了一个简单的A v a l o n 从控制接口,包含两个用户可见的部分:寄存器文件(可通过A v a l o n 从端口进行访问)和R S 2 3 2(包括R X D、T X D、C T X 和R T S)。该接口允许N I O SI I 处理器(A v a l o n 主控制器)通过读写寄存器与U A R T 进行通信 4 。在实际工程应用中,P C 机的R S 2 3 2 接口性能指标并非最高端,却由于广泛的市场支持而经久不衰。就使用而言,R S 2 3 2 的优势在于最少只需3 根线就可实现2 个数字设备的全双工数据传输。通过电平转换芯片(如M A X 2 3 2),把3 3V 的逻辑电
12、平转换为R S 2 3 2 的逻辑电平。2D e l p h i 实现串行通信的便利性用D e l p h i 实现串口通信,常用的方法有:使用控件,如M s c o m m 和S p e o m m 控件等;使用A P I 函数;在D e l p h i 中调用其他串口通信程序。使用A P I 方法的优点是比较适合于编写较为复杂的低层次通信程序,但缺点是编写串口通信程序较为复杂,需要掌握大量通信知识。S p c o m m 是S m a l l P i gT e a m开发的一个第三方D e l p h i 串口控件,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作,且
13、编程简单、通用性强、可移植性好。在D e l p h i 软件开发中已经成为一个被广泛应用的串口通信开发控件J。3串口通信程序实现3 1 通讯双方遵循的协议在进行数据通讯时,通讯双方必须遵循一定的协议,这样才能够理解从对方所接收过来的数据;另外,在实际工作中,干扰会影响信息传输的正确性。因此,为了避免接受错误的信息,定义了与下位机的握手信息协议,协议规范如表1 所示。帧是传送信息的基本单元,每帧由帧起始符标志域、控制域、数据长度域、数据域、帧信息纵向校验域及帧结束域等6 个域组成。每个域由若干字节组成。衷1 协议数据帧格式T a b 1D a t af r a m e sf o r m a t
14、o fc o m m u n i c a t i o na g r e e m e n t代码字节数说明代码字节数说明5 A H1帧起始符L2数据长度R T U A1终端逻辑地址D A T A变长数据域M S T A1主站命令序号C S1校验码A 5 H1帧起始符5 5 H1结束码C1控制码该数据帧至少有9 个字节,而且前后中间都有规定。这样就可以通过处理分析其中的某些字节来判断这个数据帧的意义,以便进行其他相关的工作。当然,数据帧格式并不惟一,可以根据实际需要万方数据第5 期卞小林等:基于D e l p h i 的P C 与N I O SI I 的串行通信设计出不同的数据帧格式。串口通讯是按
15、位传送、按字节来接收的,不是一帧一帧来接收的。为了要判断一个字节是前一帧的数据还是后一帧的数据,要按照字节来判断。按照表的数据帧格式接收的过程如下:判断目前接收的数据段,如果是一帧开始,那么就对相关参数进行初始化,数据帧初始化为空。然后开始读,直到读到帧起始符5 A H 或者读完为止;若没有,就舍弃读到的数据。如果读到了5 A H,就接下来设置读状态为第二阶段,该阶段字节数为6,读取的字节数为6,分别对应R T U A、M S T A、A 5 H、C、L。第二阶段的处理是读6 个字节,不管缓冲区里有几个字节,不管读几次,读满6 个为止。最后一阶段要读的字节数为L 中的数据再加上C S 和5 5
16、 H 两个字节,由于D A T A 是变长,所以多分阶段,如果都是定长的话,只用判断到帧起始符,然后再读需要的字节数就可以了。经过以上3 个阶段就得到一帧完整的数据,该数据可供其他函数处理。可见,利用数据帧进行数据传输,无论来什么样的数据、什么时候来,将读到的字节跟给定的格式比较,就可以得到一帧完整的数据。3 2 根据通信协议定义数据帧的基类考虑到D e l p h i 面向对象的特性,用类来规范数据帧的格式是一种好方法。可以这样定义基类:T D a t a F o r m a t:=e l a s s(T O b j e c t)P r i v a t eF F r a m e B e g
17、i n:B y t e;帧起始符F T e r m i n a l L o g i c A d d r:B y t e;终端逻辑地址F M a s t e r S t a t i o n:B y t e;主站地址与命令序号F F r a m e B e g i n 2:B y t e;帧起始符F F r a m e C o n t r o l:B y t e;控制码F D a t a L e n g t h:W o r d;数据长度F F r a m e V e r i f y:B y t e;校验码F F r a m e E n d:B y t e;结束码p r o t e c t e dp
18、 r o c e d u r eS e t D a t a(c o n s tV a l u e:s t r i n g);v i r t u a l;a b s t r a c t;设置数据区f u n c t i o nR e a d D a t a:s t r i n g;v i r t u a l;a b s t r a c t;读数据3 3 通信程序实现过程在D e l p h i 中新建一个项目,并添加S p c o m m 控件。具体实现过程如下:1)初始化串I Z l选择通信使用的串口,定义通信协议,即波特率、字节长度、校验、停止位等。2)发送数据根据通信协议,可以自定义发送函
19、数。发送时的关键是将需要发送的数据形成符合通信协议的数据帧,具体过程在S e t D a t a 过程中完成。3)接收数据N I O SI I 软核处理器首先进行U A R T 初始化,设置控制寄存器,开相应的中断,计算并设置波特率寄存器等。即工作在中断方式下刚,接收数据的处理过程在相应的中断服务程序中。通信程序的主要代码如下:i n tm a i n(v o i d)I n i t U A R T();。初始化U A R T i f(a l t i r q _ r e g i s t e r(U A R T l 一I R Q,N U L L,u a r t I S R)。注册中断处理函数。万
20、方数据7 8 海芏工程大学学报第2 0 卷p r i n t f(”a l t i r q _ r e g i s t e ru a r t i r qe r r o r n”);r e t u r n 一1;)w h i l e(1)等待中断r e t u r n0;)v o i du a r t I S R(v o i d c o n t e x t,a l t u 3 2i d)a l t u 1 6d a t a,S 似T 吣;检查r x d a t a 寄存器的当前状态,R R D Y 位为1 时,才能从r x d a t a 寄存器读取数据S 丁A T U 5=I O R D L
21、A L T E R A A V A L O N U A R T S T A T U S(U A R T l 一B A S E);w h i l e(!(S T A T U S A L T E R A A V A L O N U A R T S T A T U S _ R R D Y-A 终K)S 丁A T U 5=1 0 R D L A L T E R A A V A L O N U A R T S T A T U S(U A R T l 一B A S E);d a t a=I O R D A L T E R A A V A L O N U A R T R X D A T A(U A R T
22、l 一B A S E);根据通信协议接收数据,代码略1 0 w R A L T E R A A V A L O N U A R T 二S T A T U S(U A R T l 一B A S E,o),清除状态寄存器相关位)v o i dI n i t U A R T(v o i d)a h u 1 6c o N T R o L;i n td i v i s o r;C O N T R O L=A L T E R A A V A L O N U A R T C O N T R O L T R D y-M S KA L T E R A _ A V A L O N U A R T C O N T
23、R O L _ R R D Y _ M S KA L T E R A A V A L O N U A R T C O N T R O L 一丘M S K;设置控制寄存器,开中断I O W R A L T E R A A V A L O N U A R T C O N T R o L(U A R T l 一B A S E,C O N T R O L);d i v i s o r=(i n t)(5 00 0 0o o o 1 1 52 0 0+o 5);计算并设置波特率寄存器I O W R A L T E R A A V A L O N U A R T D I V I S O R(U A R T
24、 l 一B A S E,d i v i s o r);)4结束语在D e l p h i 环境下,利用控件S p c o m m 可以方便地开发功能强大、实时性强的串口通信程序。下位机N I O SI I 采用了中断接收方式,实时性强。利用数据帧格式,接收过程实现了错误判别,容错性强。该通信方式在某型雷达目标模拟器的显示控制系统中已经得到应用,效果很好。参考文献(R e f e r e n c e s):1 3 2 3 3 4 3徐新华,任晓,吕涛基于D e l p h i 的P C 机与P I C 单片机的串行通信口 电子工程师。2 0 0 6 3 2(3):6 2 6 7 X UX i n
25、-h u a。R E NX i a o,L UT a o S e r i a lp o r tc o m m u n i c a t i o nb e t w e e nP Ca n d P I Cb a s e do nD e l p h i J-I E l e c t r o n i cE n g i n e e r 2 0 0 6,3 2(3):6 2 6 7(i nC h i n e s e)李兰英N I O SI I 嵌入式软核S O P C 设计原理及应用 M 北京:北京航空航天大学出版社,2 0 0 6 周立功S O P C 嵌入式系统基础教程 M 北京:北京航空航天大学出版社,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Delphi PC NIOS II 串行 通信
限制150内