UART中的硬件流控RTS与CTS【转】

转自:http://blog.csdn.net/zeroboundary/article/details/8966586

5/23/2013 5:13:04 PM at rock-chips inshenzhen

最近太忙了,没时间写对Ucos-II的移植,先将工作中容易搞错的一个知识点记录下来,关于CTS与RTS的。

在RS232中本来CTS 与RTS 有明确的意义,但自从贺氏(HAYES ) 推出了聪明猫(SmartModem)后就有点混淆了,不过现在这种意义为主流意义的,各大芯片制造厂家对UART控制器的流控基本采用HAYES MODEM流控解释。

在RS232中RTS 与CTS 是用来半双工模式下的方向切换,本文不解释;

如果UART只有RX、TX两个信号,要流控的话只能是软流控;如果有RX,TX,CTS,RTS 四个信号,则多半是支持硬流控的UART;如果有 RX,TX,CTS ,RTS ,DTR,DSR 六个信号的话,RS232标准的可能性比较大。

SIMCOM公司对RTS/CTS的解释:

(要注意区别是不是讲串口支持硬流控的RTS/CTS,别看为益,在和瑞芯微调试硬件流控时,别这个非主流的解释搞得晕头转向的,下面用灰色小字体表示)

RTS是模块的输入端,用于MCU通知模块,MCU是否准备好,模块是否可向MCU发送信息,RTS的有效电平为低。

CTS是模块的输出端,用于模块通知MCU,模块是否准备好,MCU是否可向模块发送信息,CTS的有效电平为低

HAYES Modem中的RTS ,CTS 是用来进 行硬件流控的。现在通常UART的RTC、CTS的含义指后者,即用来做硬流控的。

硬流控的RTS、CTS:

(现在做串口使用RTS/CTS必看内容,因为MTK/)

RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。

CTS (Clear ToSend,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。

此处有人将CTS翻译为发送允许,我感觉的确比翻译为清除发送好。因为CTS是对方的RTS控制己方的CTS是否允许发送的功能。

用AP与MODEM采用流控收发串口数据举例:

CTS 为输入

RTS 为输出

AP的CTS对接MODEM的RTS;MODEM的CTS对接AP的RTS。

 

默认启动时:

AP的CTS为高

AP的RTS为低

MODEM的CTS       高     但极容易被拉低

MODEM的RTS       低

默认休眠时

MODEM的CTS       高     但极容易被拉低

MODEM的RTS       高

 

其中CTS用电压表测量电压时发现:在测量最初的大概200ms时,为高电平,然后电压值不断下降,变成低电平,这说明CTS悬空时应该为高,这中高电平仅仅是一定量的正电荷而已。

不知道芯片设计时,规格说明书为什么要写CTS默认为高,CTS仅仅是输入端,不需要什么默认值啊。并且在流控打开情况下,不接CTS与RTS,也是可以正常3根线(RXD/TXD/GND)通信的,这说明不接RTS/CTS时,CTS为低电平才对。为何实际使用与芯片规格说明书不一致,可能是被外壳金属盖干扰到低电平了,毕竟自己用的模块,CTS是如此靠近低电平的金属保护盖,并且CTS为输入口,没有上拉下拉电平能力。

 

AP与MODEM的流控这样通信的:

AP串口可用时,将AP-RTS拉低,MODEM-CTS检测到AP-RTS为低,知道AP串口已准备好,可以发送数据;

AP串口不可用时,将AP-RTS拉高,MODEM-CTS检测到AP-RTS为高,知道AP串口还未准备好,就不会放数据。

MODEM串口可用与不可用时的交互是同样道理。

 

没有串口控制器,用中断和普通IO口即可实现RTS与CTS功能。

RTS用GPIO实现,串口就绪拉低电平,串口忙拉高电平

CTS用中断实现,检测到低电平,将串口数据发送出去,检测到高电平则保留串口数据直到检测到低电平为止。

 

下面是摘录网上有用的参考资料:

假定A、B两设备通信,A设备的RTS 连接B设备的CTS ;A设备的CTS 连接B设备的RTS 。前一路信号控制B设备的发送,后一路信号控制A设备的发送。对B设备的发送(A设备接收)来说,如果A设备接收缓冲快满的时发出RTS 信号(意思通知B设备停止发送),B设备通过CTS 检测到该信号,停止发送;一段时间后A设备接收缓冲有了空余,发出RTS 信号,指示B设备开始发送数据。A设备发(B设备接收)类似。上述功能也能在数据流中插入Xoff(特殊字符)和Xon(另一个特殊字符)信号来实现。A设备一旦接收到B设备发送过来的Xoff,立刻停止发 送;反之,如接收到B设备发送过来的Xon,则恢复发送数据给B设备。同理,B设备也类似,从而实现收发双方的速度匹配。

半双工的方向切换:RS232中使用DTR(Date Terminal Ready,数据终端准备)与DSR(Data Set Ready ,数据设备准备好)进行主流控,类似上述的RTS 与CTS 。对半双工的通信的DTE(Date Terminal Equipment,数据终端设备)与DCE(Data circuitEquipment )来说,默认的方向是DTE接收,DCE发送。如果DTE要发送数据,必须发出RTS 信号,请求发送数据。DCE收到后如果空闲则发出CTS 回应RTS 信号,表示响应请求,这样通信方向就变为DTE->TCE,同时RTS 与CTS 信号必须一直保持。从这里可以看出,CTS ,TRS虽然也有点流控的意思(如CTS 没有发出,DTE也不能发送数据),但主要是用来进行方向切换的。

 

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

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

 

硬件流控制

硬件流控制常用的有RTS/CTS流控制和DTR/DSR(数据终端就绪/数据设置就绪)流控制。

硬件流控制必须将相应的电缆线连上,用RTS/CTS(请求发送/清除发送)流控制时,应将通讯两端的RTS、CTS线对应相连,数据终端设备(如计算机)使用RTS来起始调制解调器或其它数据通讯设备的数据流,而数据通讯设备(如调制解调器)则用CTS来起动和暂停来自计算机的数据流。这种硬件握手方式的过程为:我们在编程时根据接收端缓冲区大小设置一个高位标志(可为缓冲区大小的75%)和一个低位标志(可为缓冲区大小的25%),当缓冲区内数据量达到高位时,我们在接收端将CTS线置低电平(送逻辑0),当发送端的程序检测到CTS为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将CTS置高电平。RTS则用来标明接收设备有没有准备好接收数据。

常用的流控制还有还有DTR/DSR(数据终端就绪/数据设置就绪)。我们在此不再详述。由于流控制的多样性,我个人认为,当软件里用了流控制时,应做详细的说明,如何接线,如何应用。

 

软件流控制

由于电缆线的限制,我们在普通的控制通讯中一般不用硬件流控制,而用软件流控制。一般通过XON/XOFF来实现软件流控制。常用方法是:当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出XOFF字符(十进制的19或Control-S,设备编程说明书应该有详细阐述),发送端收到XOFF字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出XON字符(十进制的17或Control-Q),发送端收到XON字符后就立即开始发送数据。一般可以从设备配套源程序中找到发送的是什么字符。

应该注意,若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有这个问题。

时间: 2024-09-30 18:49:00

UART中的硬件流控RTS与CTS【转】的相关文章

UART中的硬件流控RTS与CTS DTR DSR DTE设备和DCE设备【转】

中低端路由器上使用disp interface 查看相应串口状态信息,其中DCD.DTR.DSR.RTS及CTS等五个状态指示分别代表什么意思? DCD ( Data Carrier Detect 数据载波检测) DTR(Data Terminal Ready,数据终端准备好) DSR(Data Set Ready 数据准备好) RTS( Request To Send 请求发送) CTS(Clear To Send 清除发送) 在这五个控制信号中,DTR和RTS是DTE设备(数据终端设备,在实

数据中心网络里的流控技术

在数据中心的网络世界里,流控技术可算得上是一种古老技术.这么多年以来,网络技术不断新旧更替,而流控技术虽一直未曾有过很大变化,却在网络中发挥着越来越重要作用.流控技术是以太网的一项基本功能,可以防止在端口拥塞的情况下出现丢帧.流控技术在广义上来讲分为四层流控和七层流控,通过路由器.交换机这些网络设备基于报文的源地址.目的地址.源端口.目的端口以及协议类型实现的流量控制,都属于四层控制:通过专业的流量控制设备去实现基于应用层的流量控制属于七层流控.所以,流控技术在网络协议的各个层级都有应用,发挥着

RTS与CTS的含义【转】

转自:http://www.cnblogs.com/sunyubo/archive/2010/04/21/2282176.html 一.RS232标准中的RTS与CTS RTS,CTS------请求发送/清除发送,用于半双工时的收发切换,属于辅助流控信号.半双工的意思是说,发的时候不收,收的时候不发.那么怎么区分收发呢?缺省时是DCE向DTE发送数据,当DTE决定向DCE发数据时,先有效RTS,表示DTE希望向DCE发送.一般DCE不能马上转换收发状态,DTE就通过监测CTS是否有效来判断可否

串口硬流控原理验证RTS与CTS

    物理连接(交叉连接) 主机的RTS(输出)信号,连接到从机的CTS(输入)信号. 主机的CTS(输入)信号,连接到从机的RTS(输出)信号.   主机发送过程: 主机查询主机的CTS脚信号,此信号连接到从机的RTS信号,受从机控制.如果主机CTS 信号为有效(低),表示从机的接收FIFO未满,从机可以接收,此时主机可以向从机发送 数据.并且在发送过程中要一直查询CTS信号是否为有效状态.一旦无效,则终止发送.   那主机的CTS信号什么时候会无效呢? 从机在接收到主机发送的数据时,从机的

android中最好的瀑布流控件PinterestLikeAdapterView

之前我们介绍过一个开源的瀑布流控件StaggeredGridView ,但是真正使用过后才发现有一个致命的缺陷,那就是在显示数目较多的图片时,上滑有时会很困难.但是今天介绍的瀑布流控件PinterestLikeAdapterView则没有这样的问题. 项目地址:https://github.com/GDG-Korea/PinterestLikeAdapterView 使用方法类似于ListView下面是我使用该控件实现一个显示系统图片的简单应用: xml中: <?xml version="

企业迎来大数据时代 流控产品持续发展

带宽需求的不断扩大,以及各种移动访问.应用资源.云端服务的涌现,大数据时代的来临与网络带宽带来的结束变得越加相互依赖.企业最大的问题,便是以往适用于企业自身的流控产品,在处理流量问题时,延时变得越来越高,带宽扩大的问题没解决,反而出现了新的带宽瓶颈. 自"大数据"与"云计算"的提出,各地信息网络宽带化升级不断加快.更大容量,更大带宽的升级,企业光纤接入,事业单位带宽扩容,越来越多的带宽扩建需求被提上了议程.市场需求的变化,同时也是对各级网络系统.平台供应商提出了更高

高校流控管理经验分享:流量管理 疏导为先

随着P2P类应用越来越强烈的加密趋势,传统的基于应用协议数据特征的识别方式往往难以奏效,这就要求协议识别引擎能够对流量行为进行综合分析,根据统计特征.连接相关性等方面表现出来的蛛丝马迹判断应用的类型. 随着教育信息化进程的不断加深,我国已建成规模庞大的教育网络,为高校提供了优越的接入条件.然而,日新月异的互联网应用吞噬着越来越多的带宽,校园网内终端接入数量也始终处于高速增长的态势,对高校网络的运维提出了新的挑战.在这种情况下,如何更合理地管理流量,为教科研任务提供更好的保障,成为各高校信息中心负

流控PANABIT 12在ESX里安装小结

专门拿个好机器作PANABIT,太可惜. 拿个差机器嘛,又会成为网络短板. 那就拿个好机器,加ESX,即作流控,又作其它虚拟机用途. 算 是两全其美,不用担心半夜三更,或是隔三叉三重启.. 一,在ESX中分两个交换机出来.实体网卡作成混杂模式.企业带宽一 般就几十M,不太影响. 二,PANABIT机器的两个网卡分连两个交换机. 三,PANABIT网桥模式,透明连接,不影响VPN,NAT这些的... 四,LOOK,IT手中又多一个利器了..且连续运行几个月,都OK的...可以按计划维护啦.  

MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件

原文  MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件 UI 前沿技术 WPF 中的多点触控操作事件 Charles Petzold 下载代码示例 就在过去几年,多点触控还只是科幻电影中表现未来主义的一种重要手法,现在俨然已经成为主流的用户界面技术. 多点触控显示屏现在成了新型智能手机和 Tablet 计算机的标准显示屏. 此外,它还可能在公共场所的计算机上普及,例如 Microsoft Surface 率先开发的网亭或桌面计算机. 实际存在的唯一不确定因素是多点触控在常规台式