《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > 80C152单片机在HDLC通信规程中的应用

80C152单片机在HDLC通信规程中的应用

2009-02-06
作者:苏雁泳 王 钢

    摘  要: 80C152单片机的工作原理和特点及其在HDLC通信规程中的应用,给出了它的编程方法,并对其系统误码率进行了分析。 

    关键词: 全局串行通道  HDLC规程  CRC差错检验

 

    80C152是一种基于MCS-51的高集成度8位微控制器,也是一种通用通信控制器。它既适用于外围系统或器件的智能管理,也适用于低成本、高速串行通信场合。80C152是80C51的派生产品,保留了80C51的所有功能;增加了新的功能和外围电路,包括:一种叫做全局串行通道(GSC)的高速多协议串行通讯接口,两个直接存储器存取(DMA)通道,HOLD/HLDA总线控制,第5、6、7个I/O口,较大的片内RAM容量。因而特别适用于综合业务数字网(ISDN)、局域网和用户定义的串行多机系统。 

1 80C152的主要特性与结构 

    80C152的主要特性如下: 

    (1)MCS-51兼容的UART; 

    (2)多种省电工作方式; 

    (3)可寻址64K字节数据存储器; 

    (4)可寻址64K字节程序存储器; 

    (5)两个通用定时/计数器; 

    (6)多协议串行通信I/O口(最大2.048Mbps/2.4Mbps),支持CSMA/CD和SDLC/HDLC,用户定义协议; 

    (7)全双工/半双工通信; 

    (8)256字节片内RAM; 

    (9)两个片内DMA通道; 

    (10)保持/响应(HOLD/HLDA)总线控制; 

    (11)7个I/O口; 

    (12)58个SFR; 

    (13)11个中断源,除包含80C51的5个中断源外,新增的6个中断源用于全局串行通道。 

    上述(1)~(5)是与80C51相同的特性,(6)~(13)是80C152所特有或比80C51提高的特性。 

    其结构简图如图1所示。 

 

 

2 全局串行通道 

    全局串行通道(GSC)是一个多协议、高性能的串行接口,用作通信控制器。GSC接口支持同步数据链路控制(SDLC)、具有冲突检测的载波监听多址访问(CSMA/CD)、用户定义协议和高速数据链路控制(HDLC)协议的子集。GSC功能包括:地址识别、冲突解决、CRC产生、标志产生、自动重发送和硬件应答特性。在使用片内时钟时可实现高至2Mbps数据速率,在使用外部时钟时可实现高至2.4Mbps数据速率。在使用串行通道的应用中,GSC可实现国际标准化组织(ISO)参考模型中所描述的开放系统互连(OSI)的数据链路层和物理链路层。 

2.1 GSC通道的DMA服务 

    有两种方法来控制GSC:一是CPU控制;二是DMA控制。在用户软件处理一些任务时(如装入TFIFO、读RFIFO、检查状态标志、发送过程一般跟踪),采用CPU控制。当任务数增加及使用较高的数据速率,CPU所需开销成为主要时间消耗,最后,会达到CPU花费100%的时间去响应GSC请求。DMA通道可由用户软件设置为由DMA控制器来处理GSC数据传送。80C152有两个DMA通道,一个通道用于接收,一个通道用于发送。使用DMA通道时,CPU可省去为GSC缓冲器基本服务所需的时间。DMA通道可提供的服务类型为:装入TFIFO、从RFIFO中移出数据、在收发结束时通知CPU和响应一定的出错条件。在使用DMA通道时,准备串行发送的数据源或目的可以是内部存储器、外部数据存储器或任何SFR。对DMA和GSC寄存器进行初始化后的唯一任务是允许适当地中断并通知DMA控制器什么时候启动DMA。在DMA启动后,CPU所需做的事就是响应出错条件或等待传送结束。80C152专门为GSC数据传送提供了6个中断源,它们是:GSCRV(GSC接收正确)、GSCRE(GSC接收出错)、GSCTV(GSC发送正确)、GSCTE(GSC发送出错)、DMA0(DMA通道0完成)、DMA1(DMA通道1完成)。 

2.2 80C152中的DMA 

    80C152包含两个相同的可16位寻址的通用8位DMA通道:DMA0和DMA1。与每个通道相关的有7个SFR。SARLn和SARHn分别保存源地址的低位和高位字节,合在一起构成16位源地址寄存器。DARLn和DARHn分别保存目的地址的低位和高位字节,合在一起构成16位目的地址寄存器。BCRLn和BCRHn分别保存将被传送字节数地址的低位和高位字节,合在一起构成字节计数寄存器。DCONn包含控制和标志位。 

    对DMA通道的初始化需设置控制寄存器、源地址和目的地址寄存器。 

    控制寄存器DCON的装入值及意义如图2所示。 

 

 

    DCONn中的DASn(目的地址空间位)和IDAn(目的地址自动加1位)用于指出数据传送的物理目的空间。DCONn中的SASn(源地址空间位)和ISAn(源地址自动加1位)用于指出数据传送的物理源空间。采用DMA控制器来处理GSC数据传送时,当DMA通道用于接收服务时,首先将接收机传送来的数据自动送入到接收缓冲器RFIFO中,其源地址寄存器应置成RFIFO地址(SARHN=××H,SARLN=0F4H);然后,将接收缓冲器中的数据传送到目的地址指定的物理空间,其可以是外部RAM、内部RAM或SFR;最后,对收到的数据进行CRC校验,并通知CPU是否正确接收到该帧数据。当DMA通道用于发送服务时,首先将要发送的数据传送到先入先出发送缓冲器TFIFO中,其目的地址寄存器应置成TFIFO地址(DARHN=××H,DARLN=85H);然后,将先入先出发送缓冲器TFIFO中的数据传送给发射机;最后,对发送出去的数据进行CRC校验,并通知CPU是否正确发送了该帧数据。 

    DCONn中的DM(请求方式位)和TM(传送方式位)用于选择DMA的工作方式。当DMA服务于全局串行通道(GSC)时,应采用串行口请求方式。当DCONn中的GO位置1时,将启动DMA通道工作于全局串行传输方式。当全局串行口接收或发送完一帧数据后,DCONn中的DONE位被置1,并将该信号传送给CPU来产生中断。 

3 HDLC操作 

    高级数据链路控制(High Data Link Control)规程,简称HDLC规程,是面向位的链路控制规程。它与基本型规程不同,链路的监控功能是通过一定的位组合所表示的命令和响应来实现的,这些命令和响应可以与信息报文一起传送。HDLC规程具有透明传输、可靠性高、传输效率高并具有极大的灵活性等特点。它是由IBM公司开发的通信协议,已广泛应用于工业领域。它基于主/从结构,要求每个从站都有唯一的地址。从站只有在允许通信时才能且只能和主站通信,这就消除了串行线路上由于几个从站同时发送引起冲突的可能性。其帧结构如图3所示。 

 

 

    BOF是HDLC的帧开始标志,为01111110。这是HDLC中仅有的两个包含连续6个1的可能组合之一,另一个可能的组合是中止符。这是因为HDLC采用了一种叫做位插入的过程,每发现有连续5个1时在下一位自动插入一个0,接收器在收到连续5个1之后自动删去插入的0。所有位插入和位删除操作均由GSC完成。BOF除了标志帧的开始,还用作时钟同步和决定地址与控制字位置的参考点。 

    ADDRESS是地址字段,用于表示报文发往何站。每个从站必须有唯一的地址,主站必须知道每个从站的指定地址。然而有些报文需要发往一个以上的站,这些报文成为广播地址或群地址报文。全1构成的地址总是自动地被GSC接收,在HDLC中定义为广播地址。群地址是指适用于一个以上站的地址,GSC提供了几个地址屏蔽位,以使GSC接收群地址。如果需要的话,用户软件可以接收所有的地址位,这种屏蔽方式使GSC不加区分地接收所有地址。 

    CONTROL是控制段,它用于系统初始化、标志帧的序号,并在报文发送完成后通知从站响应,对以前发送帧进行应答。由于GSC硬件没有提供控制段的管理功能,用户软件担负着控制段的插入、解释和格式化。尾随控制段的信息通常用于报文传输、出错报告和其他各种功能。这些功能由控制段的格式完成,有三种格式可供使用:报文格式、监控格式和无序号格式。 

    INFO是报文段,它包含线路中一个器件希望发给另一个器件的报文(数据),其长度可为用户所定,但必须是8位的倍数。报文段由前面的控制段和后面的CRC为接收站所标识。GSC把接收的位通过CRC发生器来决定报文段的末尾。当最后一位或EOF收到后,剩下的位组成CRC。 

    CRC是循环冗余检测,是一种普遍用于串行通信的错误检测方法。 

4 系统误码率的分析 

    80C152提供两种CRC算法:16位和32位算法。在大多数HDLC应用中,16位CRC被使用,支持16位CRC的硬件结构如图4所示。

 

 

    16位CRC发生器生成的多项式为: 

    G(X)=X16+X12+X5+1                                        (1) 

    CRC工作时,它把收到的位与现行CRC的位15进行异或,放到一个暂存器中。在CRC右移一位时,位15和接收位的异或值再与位4和位11进行异或。暂存器中的位移入位0中。HDLC所需的CRC长度为16位,接收时自动从帧中除去CRC,它不传到CPU。然后把最后16位传往CRC发生器,以保证留下正确的值。检验剩下值是否为001110100001111B(1D0FH)。如不匹配,则产生错误。用户软件允许该中断,从而使CPU可对此进行处理。 

    CRC校验可以检测长度不大于16的所有突发错误、所有奇数个错误和两个独立错误,以及其他大量错误图样。其计算公式如下: 

    

    根据上述计算公式可得,采用全局串行通道(GSC)来实现HDLC规程的数据传输,其系统误码率及帧漏检概率如表1所示。 

 

 

5 编程应用实例 

    下面介绍采用DMA控制全局串行通道(GSC)来实现HDLC规程的编程方法。在该系统中应用两路DMA通道分别控制数据的收、发,其数据收、发子程序的流程图如图5所示。

 

 

    在现代通信系统和计算机网络中,其链路层和物理层多数均采用HDLC规程。采用80C152单片机来实现HDLC规程,具有成本低、硬件结构简单、软件编程容易等特点,又能够保证高速、可靠的数据传输,具有广泛的应用前景。 

参考文献 

1 郭梯云,刘增基,王新梅.数据传输. 北京:人民邮电出版社,1998.10 

2 荀殿栋,陈绍廉. 微处理器应用技术与实例. 北京:电子工业出版社,1997.11 

3 朴 燕,王瑞光,王遵立. 一种快速CRC差错校验技术.电子技术应用, 1999;25(1)

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。