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

发布者:姑苏清风泉源客最新更新时间:2012-04-12 来源: 单片机与嵌入式系统应用关键字:全局串行通道  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包含控制和标志位。[page]


    对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所示。[page]

    表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规程,具有成本低、硬件结构简单、软件编程容易等特点,又能够保证高速、可靠的数据传输,具有广泛的应用前景。

关键字:全局串行通道  HDLC规律  CRC差错检验 引用地址:80C152单片机上HDLC通信规程中的应用

上一篇:基于单片机+CPLD的多路精确延时控制系统设计
下一篇:嵌入式TCP/IP协议单片机技术在网络通信中的应用

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved