利用Intel8274多协议串行控制器实现基于SDLC协议的串行通讯
2006-05-07 来源:国外电子元器件
摘要:文章从软、硬件设计的角度分别讨论了利用Intel 8274多协议串行控制器来实现基于同数据链路控制(SDLC)协议的串行通讯,介绍了多协议串行控制Intel 8274的主要特点,给出了Intel 8274和TMS320F206在某雷达项目中实现了串行通讯的硬件电路设计和软件程序。同时指出了使用Intel 8274应注意的问题。
关键词:SDLC Intel 8274 串行通讯 TMS320F206
最早由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协议的串行通讯,达到了系统的设计要求。
- AI大模型时代,GPU高速互连如何正确破局
- 专访Silicon Labs:深度探讨蓝牙6.0的未来发展趋势
- 恩智浦发布S32J系列安全以太网交换机支持可扩展汽车网络,拓展CoreRide平台
- 智能无处不在:安谋科技“周易”NPU开启端侧AI新时代
- Rambus宣布推出业界首款HBM4控制器IP,加速下一代AI工作负载
- 现代摩比斯选择BlackBerry QNX,驱动下一代数字座舱平台
- MACOM获得美国防部资助开发GaN-on-SiC产品
- 我国首次实现骨干电网大规模卫星巡视,工作效率是人工 10 倍以上
- 英飞凌推出新型高性能微控制器AURIX™ TC4Dx
- 恩智浦FRDM平台助力无线连接
- Wi-Fi 8规范已在路上:2.4/5/6GHz三频工作
- 治理混合多云环境的三大举措
- Microchip借助NVIDIA Holoscan平台加速实时边缘AI部署
- 是德科技 FieldFox 手持式分析仪配合 VDI 扩频模块,实现毫米波分析功能
- 高通推出其首款 RISC-V 架构可编程连接模组 QCC74xM,支持 Wi-Fi 6 等协议
- Microchip推出广泛的IGBT 7 功率器件组合,专为可持续发展、电动出行和数据中心应用而设计
- 英飞凌推出新型高性能微控制器AURIX™ TC4Dx
- Rambus宣布推出业界首款HBM4控制器IP,加速下一代AI工作负载
- 恩智浦FRDM平台助力无线连接