利用Intel8274多协议串行控制器实现基于SDLC协议的串行通讯

2006-05-07 15:50:08来源: 国外电子元器件

硬件设计的角度分别讨论了利用Intel 8274多协议串行控制器来实现基于同数据链路控制(SDLC)协议的串行通讯,介绍了多协议串行控制Intel 8274的主要特点,给出了Intel 8274和TMS320F206在某雷达项目中实现了串行通讯的硬件电路设计和软件程序。同时指出了使用Intel 8274应注意的问题。

最早由IBM公司制定的面向比特型的数据链路控制规程——同步数据链路控制(SDLC)协议由于个有透明传输、可靠性高、传输效率高以及具有很大的灵活性等优点,已被越来越广泛地采用。但由于这种链路协仪功能比较完善,因此实现起来也相对要复杂一些。随着近年来大规模集成电路与微处理机、DSP技术的迅速发展,市场上已经出现了多种实现这一规程的专用芯片,从而使得这种协议的实现发越来越简单,其应用越来越普遍。Intel 8274芯片就是其中比较典型的一种。它是由Intel公司生产的专门为异步、IBM双同步和SDLC/HDLC协议的高速通讯线路与Intel公司的微机机系统的连接而设计的多协议串行控制器(MPSC)。

1 同步数据链路控制(SDLC)协议

同步数据链路控制(SDLC:Synchronous Data Link Control)是由IBM公司制定的一种链路通讯协议,现已成为系统网络结构(SNA)的数据链路控制协议,是目前可靠性和传输较高的最先进的传输控制协议之一。另一种相类似的通讯协议是高级数据链路控制(HDLC)协议。由于SDLC的制定要早于HDLC,同时因为IBM公司也共同参与了HDLC的制定,所以HDLC实际上包含了SDLC,从而使SDLC协议成为HDLC协议的一个子集。

在SDLC协议中,被传输的一组信息数据被称为“帧”。完整的一个帧包含标志字序列字段、数据站地址字段、数据站地址字段、控制字段、信息字段和帧校验序列字段等。标志字序列利用特定的数据组合01111110表示,所有的帧必须以01111110开始,并且以01111110结束。在传输的其它字段中,为了防止出现01111110而使接收方错误的认为是帧结束,SDLC协议采用0插入方法,即当传输的信息数据中出现连续的5个1,就由发送方在这5个1之后插入一个0.接收方在接收数据的时候,如果发现有5个连续的1,就将其后的一个0删去。另外SDLC协议还规定了帧的各个字段必须是以8比特为传输的最小。SDLC能够被广泛应用的另一个原因在于它可以进行严格的差错控制,因为SDLC采用了最为有效的循环冗余校验码(CRC16来)来进行差错控制。

2 Intel 8274多协议串行控制器[1]

Intel 8274具有灵活的体系结构,其主要特点在于只使用很少的软、硬件即可方便地实现多种不同的通讯协议,如异步、字节同步和位同步(HDLC/SLC)等等。

Intel 8274的主要性能指标有:

●可进行异步和同步操作;

●具有两个独立的全双工发送器和接收器;

●与8048/51/85/85/88CPU,8237/57 DMA控制器以及8089I/O处理机完成兼容;

●有4个独立的DMA通道;

●波特率达0~880k波特;

●异步操作:5~8位字符,奇、偶校验或无校验,1、1.5或2个停止位;

●可进行帧格式、越界和奇偶性错误码检测;

●在字节同步时可使内部或外部的字节同步,具有一或两具同步字符,能自动产生和校验循环冗余检码(CRC-16),并可与IBM公司的双同步协议兼容;

●位同步时能产生和识别SDLC/HDLC标志,识别8位地址,自动插入和删除零位,自动产生和校验循环冗余校验码(CCITT)X.25标准兼容。

当Intel 8274用于SDLC工作方式时,在初始化结束后,如果微处理机写放发送启动,则Intel8274处于发送状态。此时Intel 8274将自动发送SDLC同步标志01111110,直至微处理机给出发送信息字段。在发送过程中,Intel 8274能够自动检测信息字段中是否含有连续的5个1,如果有,则在每5个连续1的组成的序列之后自动插入一个0。当发送数据缓冲器和输出移位寄存器均没有可发送的数据位时,Intel 8274就会自动发送两个字节的CRC(循环冗余校验码),以终止该帧。当微处理机写入接收启动命令字后,Intel 8274即处于接收状态,此时,它可自动搜索SDLC标志字,以判断帧的开始。

Intel 8274与微处理机的系统接口的由8个缓冲器组成,表1是其读写操作方式。其中数据缓冲器由A1=0寻址,命令端口由A1=1寻址。命令、参数和状态信息保存在Intel 8274的22个寄存器中。每个通道有8个写寄存器和3个读寄存器。这些信息均可以通过命令端口进行读写。

表1 读写操作方式

CS A1 A0 读操作 写操作
0 0 0 读通道A数据 写通道A数据
0 1 0 读通道A状态 写通道A命令/参数
0 0 1 读通道B数据 写通道B数据
0 1 1 读通道B状态 写通道B命令/参数
1 X X 阻抗 高阻抗

Intel 8274在使用方式上同样可以有多种灵活的配置方式,如查询、等待、中断和DMA等。

3 串行通讯的硬件实现

由于Intel 8274是专门为了与Intel公司的微型机系统相匹配而设计的,因此该芯片与一些Intel公司的CPU、DMA控制器等可以做到无缝连续。这里介绍的是通过TI公司的DSP芯片TMS320F206来对Intel 8274进行控制所组成通讯系统。

TMS320F206是TI公司新近推出的TMS320C2XX系列DSP,该系列DSP具有非常高的性价比,相对TMS320C2X系列来说,它的指令集可兼容,而速度提高了2~4倍,且价格降低了一半,因而在简单的控制和通讯领域有着非常广泛的应用。

图1是一个由TMS320F206、Intel 8274组成的基于RS-485标准和SDLC协议的串行通讯接口系统的具体结构图。该电路非常简单。图中由TMS320F206充当微处理机来对Intel 8274进行控制,而Intel 8274只使用了其中的一个接收/发送通道,并且由于采用了中断方式,因此,它们之间只有14根连接线(其中控制线4根,数据总线8根,地线总线2根)。

4 串行通讯的软件设计

在以往的Intel 8274的应用中,大部分都是工作在查询模式。虽然查询方式的程序设计简单,但由于必须使用控制芯片(微处理器、DSP)来不断地查询寄存器中的状态标志位,因而不能进行其它工作,这使得整个程序的效率很低。尤其是在实时性要求较强的场合下不太适用。因此,设计时需将Intel 8274工作在中断模式。

在笔者的应用中,该串行通讯的流程首先是TMS320F206需要从另一个同步串行口接收数据,然后,相关部分对该数据进行处理程序通过Intel 8274发送出去。因此Intel 8274只有在同步串行口接收到数据后才处于发送状态,其它时候则处于接收状态。

TMS320F206串行通讯的相关软件如下(未注明寄存器均指B通道寄存器):

Intel 8274初始化程序:

……

splk #0004h,60h ;wr0:复位

out 60h,0003h

splk #0020h,60h ;wr4:SDLC方式

out 60h,0003h

splk #0046h,60h ;wr0:指示寄存器指向wr6

out 60h,0003h

splk #0054h,60h ;wr6:接收匹配地址54h

out 60h,0003h

splk #0097h,60h ;wr0:指示寄存器指向wr7

out 60h,0003h

splk #007eh,60h ;wr7:同步标志7eh

out 60h,0003h

splk #0002h,60h ;A通道wr0

out 60h,0002h

splk #0020h,60h ;A通道wr2:中断方式

out 60h,0002h

splk #0031h,60h ;wr0:指示寄存器指向wr1

out 60h,003h

splk #001ch,60h ;wr1:全部接收中断方式,不启动发送器

out 60h,0003h

splk #0023h,60h ;wr0:指示寄存器指向wr3

out 60h,0003h

splk #00cdh,60h ;wr3:8位接收,接收CRC、接收器启动

out 60h,003h ;地址匹配接收模式

……

下面是切换Intel 8274至发送状态的同步接收中断服务程序中:

……

rco485s:splk #000bh,60h ;485总线转入发送状态

out 60h,iosr

splk #0085h,60h ;wr0:指示寄存器指向wr5

out 60h,0003h

splk #0069h,60h ;wr5:发送CRC、发送器启动

out 60h,0003h

splk #0001h,60h ;wr0:指示寄存器指向wr1

out 60h,0003h

splk #001eh,60h ;wr1:发送中断启动

out 60h,0003h

lacl #0ah ;等待0ah周期循环,

loop: sub #1h ;使发送足够同步标志

nop

bcnd loop,GT

lar ar3,6fh

mar *,ar3 ;置ar3为当前辅助寄存器

out *+,0001h ;发送第一个数据到Intel 8274

……

Intel 8274发送/接收中断服务程序:

……

;Intel 8274接收

r485: lar ar1,70h

mar *,ar1 ;置ar1为当前辅助寄存器

in *+,0001h ;从Intel 8274接收一个数据

……

;Intel 8274发送

s485:mar *,ar3 ;置ar3为当前辅助寄存器

out *+,0001h ;发送一个数据到Intel 8274

……

lacl #60h ;等待60h周期循环,

loop1: sub #1h ;使能发送两个字节CRC

nop ;和至少一个同步标志

5 应用Intel 8274的注意事项

在图1的硬件设计中,必须注意是Intel 8274的TXCB管脚(或TXCA管脚)。由于TXCB管脚在作为Intel 8274的发磅器时钟的同时又是一个输入管脚,而作为485串行通讯数据总线上的发送器时钟要求对于源端是输出管脚,这样,就必须从外部引入一个发送同步时钟CLKT。这是使用Intel 8274时在硬件上应注意的问题。

在软件设计中,第一个要注意的问题是Intel 8274的16个写寄存器的使用问题。在Intel 8274中,每个通道有8个写寄存器和3个读寄存器,但却只有2根地址线。因此该芯片专门设计了一个内部指示寄存器,以专门用于在存取8274命令/状态时选择读/写哪个命令或状态寄存器。该指示寄存器位于WR0寄存器的D2~D0位。上电复位后,指示寄存器的内容为0。因此第一次写入命令寄存器的命令将写入WR0,同时这个命令的低三位写入指示寄存器,并标志着下次将读/取的寄存器号。而指示寄存器的内容在完成读或写操作之后就被复位,因些在读或写一个寄存器之前,都必须先向WR0(指示寄存器)写入一条指令。在上面的程序中,尤其是初始化段,可以明显地看到这一过程。

第二个需要注意的问题是SDLC的同步标志字。SDLC协议规定,在帧起始和结束的时候,必须发送至少1个同步标志01111110。在一般的实际应用中,TMS320F206的时候会远远高于Intel 8274的时候,因此,从同步串行口接收完数据,并将Intel 8274切换至发送状态起,到向Intel 8274发送第一个数据之前,根本来不及让Intel 8274自动发送至少一个SDLC协议的步标志字。为解决这一问题,在实际编程过程中,设计得可有意在它们之间加入一个10个周期左右的循环(虚框内的程序)。同样,从Intel 8174发送完一帧数据之后到切换Intel 8274至接收状态之间,设计也可有意加入一个循环(虚框内的程序)。在这个循环中,Intel 8274首先会自动插入两个字节的CRC循环冗余校验码,然后才暗SDLC的同步标志字,因此这个循环的周期数要大于第一个循环的周期数。这两个循环周期的具体参数与TM320F206和Intel 8274所使用的时钟有关,因此需要设计者在实际系统调试中加以确定。

6 Intel 8274串行通讯系统的应用

在笔者研制的某雷达项目中,要求其中一条通讯线路的信息交换需通过满足RS-485标准和SDLC信息交换规程要求的串行通讯总线来进行。其数据传送速度要求为800kbps,相对不稳定度为10-4。为了满足这些要求,笔者在设计中使用了如图1所示的由TMS320F206为主控制芯片,Intel 8274为串行通讯协议控制芯片所构成的串行通讯接口系统。该系统在调试过程中,从示波器中可以明显地反映出上面所提到的两个循环周期对Intel 8274自动插入SDLC同步标志字的个数的影响。插入这些循环周期并经过调试使该串行口的工作得以正常,从而简单、高效地实现了基于SDLC协议的串行通讯,达到了系统的设计要求。

关键字:利用  多协议  协议  串行

编辑: 引用地址:http://www.eeworld.com.cn/wltx/qtjs/200605/2738.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
利用
多协议
协议
串行

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved