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

发布者:BlossomJoy最新更新时间:2006-05-07 来源: 电子技术应用 手机看文章 扫描二维码
随时随地手机看文章

    摘要: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 80152中的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=x x H,SARLN=0F4H);然后,将接收缓冲器中的数据传送到目的地址指定的物理空间,其可以是外部RAM、内部RAM或SFR;最后,对收到的数据进行CRC校验,并通知CPU是否正确接收到该帧数据。当DMA通道用于发送服务时,首先将要发送的数据传送到先入先出发送缓冲器TFIFO中,其目的地址寄存器应置成TFIFO地址(DARHN=xxH,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的所有突发错误、所有奇数个错误和两个独立错误,以及其他大量错误图样。其计算公式如下:

Eerror:数据位中最大偶数位错

Pe:信道误码率

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

表1 全局串行通道的系统误码率及帧漏检概率

信道误码率 帧漏检概率 系统误码率
10 -3 1.88×10 -3 1.46×10 -5
10 -4 3.03×10 -7 2.30×10 -9
10 -5 3.18×10 -11 2.41×10 -13
10 -6 3.20×10 -15 2.42×10 -17

5 编程应用实例

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

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

引用地址:80C152单片机上HDLC通信规程中的应用

上一篇:DS80C320在高速数据采集中的应用
下一篇:单片机控制的PWM斩波式交流净化稳压电源

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


    openresty
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
502 Bad Gateway

502 Bad Gateway


openresty