流控制在串行通讯中的作用.docx

上传人:hw****26 文档编号:3115047 上传时间:2019-05-21 格式:DOCX 页数:6 大小:23.93KB
下载 相关 举报
流控制在串行通讯中的作用.docx_第1页
第1页 / 共6页
流控制在串行通讯中的作用.docx_第2页
第2页 / 共6页
流控制在串行通讯中的作用.docx_第3页
第3页 / 共6页
流控制在串行通讯中的作用.docx_第4页
第4页 / 共6页
流控制在串行通讯中的作用.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、1. 流控制在串行通讯中的作用这里讲到的“流”,当然指的是数据流。数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。现在我们在网络上通过MODEM 进行数据传输,这个问题就尤为突出。流控制能解决这个问题,当接收端数据处理不过来时,就发出“ 不再接收 ”的信号,发送端就停止发送,直到收到 “可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据的丢失。 PC 机中常用的两种流控制是硬件流控制(包括 RTS/CTS、DTR/CTS 等)和软件流控制 XON/XOFF

2、(继续/停止) ,下面分别说明。2.硬件流控制硬件流控制常用的有 RTS/CTS 流控制和 DTR/DSR(数据终端就绪/数据设置就绪)流控制。硬件流控制必须将相应的电缆线连上,用 RTS/CTS(请求发送/ 清除发送)流控制时,应将通讯两端的 RTS、CTS 线对应相连,数据终端设备(如计算机)使用 RTS来起始调制解调器或其它数据通讯设备的数据流,而数据通讯设备(如调制解调器)则用 CTS 来起动和暂停来自计算机的数据流。这种硬件握手方式的过程为:我们在编程时根据接收端缓冲区大小设置一个高位标志(可为缓冲区大小的 75)和一个低位标志(可为缓冲区大小的 25) ,当缓冲区内数据量达到高位时

3、,我们在接收端将CTS 线置低电平(送逻辑 0) ,当发送端的程序检测到 CTS 为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将 CTS 置高电平。RTS 则用来标明接收设备有没有准备好接收数据。常用的流控制还有还有 DTR/DSR(数据终端就绪/ 数据设置就绪) 。我们在此不再详述。3.软件流控制由于电缆线的限制,我们在普通的控制通讯中一般不用硬件流控制,而用软件流控制。一般通过 XON/XOFF 来实现软件流控制。常用方法是:当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出 XOFF 字符(十进制的 19 或 Control-S,设备编程说明书应该有详细阐述)

4、 ,发送端收到 XOFF 字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出 XON 字符(十进制的 17 或 Control-Q) ,发送端收到 XON 字符后就立即开始发送数据。一般可以从设备配套源程序中找到发送的是什么字符。 当软件里用了流控制时,应做详细的说明,如何接线,如何应用。应该注意,若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有这个问题。在流量控制方面,可以从不同侧面采取不同的控制方案。最简单的方法就是增加接收端的缓冲存储空间,使得接收端可以缓存更多的数据。但这只是一种被动、消极

5、 的方法。因为,一方面系统不允许开设过大的缓冲空间;另一方面对于速率显著失配,并且又传送大量数据的场合,即使缓存空间再大也会出现不够的现象。目前普 遍采取一种称之为“XON/XOFF”的发送控制字符的方案,通过控制字符来确定发送方是否继续发送数据,相比之下更主动、更积极、更有效。XON/XOFF(继 续/停止)是异步串行连接的计算机和其他元件之间的数据流控制协议。例如,计算机向打印机发送数据的速度通常快于打印机打印的速度,打印机包含一个缓冲 器,用来存储数据,使打印机能够赶上计算机。如果在打印机赶上之前缓冲器变满了,打印机的小微处理器便发回一个 XOFF 信号来停止数据传送,打印完相当多 的数

6、据,缓冲存储器变空时,打印机发送 XON 信号,让计算机继续发送数据。 “X”表示“发送器” ,X/ON和 X/OFF 为开启和关闭发送器的信号。X /ON 的实际信号为 ASCII 的 Ctrl-Q 键盘组合的位组合,X/OFF 信号为 Ctrl-S 字符。在为计算机操作系统定义调制解调器时,可能需要用 XON/XOFF 或 CTS/RTS 来指定流控制的使用。在发送二进制数据时,XON/XOFF 可能不能识别,因为它被译成了字符。XON/XOFF 是一种异步通信协议,接收设备或计算机使用特殊字符来控制发送设备或计算机传送的数据流。当接收计算机不能继续接收数据时,发送一个 XOFF 控制字符

7、告诉 发送方停止传送;当传输可以恢复时,该计算机发送一个 XON 字符来通知发送方。其中XON 采用 ASCII 字符集中的控制字符 DC1,XOFF 采用 ASCII 字符集中的控制字符DC3。当通信线路上的接收方发生过载时,便向发送方发送一个 XOFF 字符,发送方接收XOFF 字符后便暂停发送数据;等接 收方处理完缓冲器中的数据,过载恢复后,再向发送方发送一个 XON 字符,以通知发送方恢复数据发送。在一次数据传输过程中,XOFF、XON 的周期可重复 多次,但这些操作对用户来说是透明的,也就是说用户不用管它。许多异步数据通信软件包均支持 XON/XOFF 协议。这种方案也可用于计算机向

8、打印机或其他终端设备(如 MODEM 的串行通信)发送字符,在这种情况下,打印机或终端设备中的控制部件用以控制字符流量。谈 这个问题之前我们先介绍另一个概念,DCE(Data Communication Equipment 数据通讯设备) 速度。它是指两个 Modem 之间即电话线之间的传输速度,我们所说的 56K 指的就是这个速度。而 DTE(Data Terminal Equipment 数据终端设备) 速度是指从本地计算机到Modem 的传输速度,如果电话线传输速率(DCE 速度)为 56000bps,Modem 在接收 到数据后按 V.42 bis 协议解压缩 560004=11520

9、0bps,然后以此速率传送给计算机,由此可见 56K猫(使用 V.42bis)的 DTE 速度在理想状态下都应 达到 115200bps。可用 CTS/RTS 或 Xon/Xoff 流量控制(Flow control)从上边的介绍我们已 经了解到 DTE 与 DCE 速度之间存在很大差异,这样在数据的传送与接收过程当中很可能出现收方来不及接收的情况,这时就需要对发方进行控制, 以免数据丢 失,这个过程就是所谓的流量控制。控制的方式有两种,Xon/Xoff 和 CTS/RTS。前者由软件产生控制码,并将控制码加入到数据流中 ,Xoff 表示 停止发送,Xon 表示继续发送,此种方法通常用于 24

10、00bps 左右的低速猫。CTS(clear to send)/RTS(request to send)则是通过计算机与 Modem 之间的信号线传送控制信号来实现流量控制的,即硬件方式。请求发送信号(RTS) 由计算机产生, 通知 Modem 可以 发送数据, 清除发送信号(CTS)由 Modem产生, 通知计算机可以传送数据 .由于硬件控制的反应速度要比软件快,所以多用于高速Modem。在使用 MNP,V.42 以及传真时也应使用硬件方式。CTS (Clear to send) 允许发送 , 很多文章翻译成清除发送 , 是不正确的.CTS 是对 RTS 的应答.A 向 B 发送 RTS 信

11、号,表明 A 要向 B 发送若干数据,B 收到 RTS 后,向所有基站发出 CTS 信号,表明已准备就绪,A 可以发送CTS 和 RTS 是串行通讯中流控制的两个管脚,本身成对出现。一般连接方式如下图所示:图 2 UART 流控制示意图。具体地说,就是当接收方(UART2)认为可以接受 UART 数据时,将 RTS 置为 有效位。发送方(UART1)的 CTS 管脚接收到此信号后,才将数据进行发送。一般来说,当 UART 数据接收缓存大于两个字节空余时,就可以将 RTS 置为 有效接收。当然,OD2101 的 UART 接收缓冲区具有 64 位的字节,用户可以按照自己数据流量的需求定义 RTS

12、。一、远距离通信第 1 和第 2 中情况是属于远距离通信(传输距离大于 15m 的通信)的例子,故一般要加调制解调器 MODEM,因此使用的信号线较多。注意:在以下各图中, DTE 信号为 RS-232-C 信号,DTE 与计算机间的电平转换电路未画出。1、采用 Modem(DCE)和电话网通信时的信号连接:若在双方 MODEM 之间采用普通电话交换线进行通信,除了需要 28 号信号线外还要增加RI(22 号) 和 DTR(20 号) 两个信号线进行联络,如图 1 所示:图 1DSR、DTR:数传机(DCE)准备好、数据终端(DTE)准备好,只表示设备本身可用。首先,通过电话机拔号呼叫对方,电

13、话交换台向对方发出拔号呼叫信号,当对方 DCE 收到该信号后,使 RI(振铃信号)有效,通知 DTE,已被呼叫。当对方“摘机” 后,两方建立了通信链路。若计算机要发送数据至对方,首先通过接口电路(DTE)发出 RTS(请求发送)信号。此时,若 DCE(Modem)允许 传送,则向 DTE 回答 CTS(允许发送)信号。一般可直接将RTS/CTS 接高电平,即只要通信链路已建立,就可传送信号。(RTS/CTS 可只用于半双 工系统中作发送方式和接收方式的切换。当 DTE 获得 CTS 信号后,通过 TXD 线向 DCE 发出串行信号,DCE(Modem)将这些数字信号调制成模拟信号(又称载波信号

14、),传向对方。计算机向 DTE“数据输出寄存器”传送新的数据前,应检查 Modem 状态和数据输出寄存器为空。当对方的 DCE 收到载波 信号后,向对方的 DTE 发出 DCD 信号(数据载波检出),通知其DTE 准备接收,同时,将载波信号解调为数据信号,从 RXD 线上送给 DTE,DTE 通过串 行接收移位寄存器对接收到的位流进行移位,当收到 1 个字符的全部位流后,把该字符的数据位送到数据输入寄存器,CPU 可以从数据输入寄存器读取字符。2、采用专用电话线通信:在通信双方的 MODEM 之间采用电话线进行通信,则只要使用 28号信号线进行联络与控制。不需要电话机、振铃信号 RI 和 DT

15、R 信号,其信号线的连接如图 2那样。UART流控简介 2013-05-15 18:01:46| 分类: ARM 开发环境基础 | 标签:uart rts cts |举报|字号 订阅RTS/CTS 提供的是一种 PC 和 Modem 之间控制数据流的方法.CTS 和 RTS 是串行通讯中流控制的两个管脚,本身成对出现。 以 PC 与 Modem 之间的链接为例:(1) Modem 准备接收数据时使 CTS 为 ON(1)当 Modem 不能接收更多数据时, 使 CTS 为 OFF(0)即:Modem 控制 CTS(2) PC 可以接收数据时RTS 为 ON (1)当 PC 不能接收更多数据时,

16、RTS 为 OFF(0).即:PC 控制 RTSRTS/CTS 属于是硬件流量控制硬件流控是靠软件实现的,之所以强调“硬件”二字,仅仅是因为硬件流控提供了用于流量情况指示的硬件连线,并不是说,你只要把线连上,硬件就能自己流控。如果软件不支持,光连上 RTS 和 CTS 是没有用的XON/XOFF 则是软件流量控制XON/XOFF 分别对应于(Ctrl-q)和(Crtl-s)字符,如果选择软件流量控制,则 Modem 不能传递 Ctrl-q 和 Crtl-s 字符,因为这些字符被解释成为流控请求1. 软流控简介一般通过 XON/XOFF 来实现软件流控制。常用方法是:当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出XOFF 字符(十进制的 19 或 Control-S),发送端收到 XOFF 字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出XON 字符(十进制的 17 或 Control-Q),发送端收到 XON 字符后就立即开始发送数据。若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有这个问题。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。