免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5317 | 回复: 0
打印 上一主题 下一主题

关于UART的CTS/RTS [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-11 22:40 |只看该作者 |倒序浏览

关于UART的CTS/RTS
2008-03-29 15:28
RTS (request to send) 请求发送
谈这个问题之前我们先介绍另一个概念,DCE(Data Communication Equipment数据通讯设备)速度。它是指两个Modem之间即电话线之间的传输速度,我们所说的56K指的就是这个速度。而DTE(Data Terminal Equipment数据终端设备)速度是指从本地计算机到Modem的传输速度,如果电话线传输速率(DCE速度)为56000bps,Modem在接收到数据后按V.42 bis协议解压缩56000×4=115200bps,然后以此速率传送给计算机,由此可见56K猫(使用V.42bis)的DTE速度在理想状态下都应达到115200bps。
可用CTS/RTS或Xon/Xoff流量控制(Flow control)
从上边的介绍我们已经了解到DTE与DCE速度之间存在很大差异,这样在数据的传送与接收过程当中很可能出现收方来不及接收的情况,这时就需要对发方进行控制,以免数据丢失,这个过程就是所谓的流量控制。控制的方式有两种,Xon/Xoff和CTS/RTS。前者由软件产生控制码,并将控制码加入到数据流中,Xoff表示停止发送,Xon表示继续发送,此种方法通常用于2400bps左右的低速猫。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信号,表明A要向B发送若干数据,B收到RTS后,向所有基站发出CTS信号,表明已准备就绪,A可以发送
CTS和RTS是串行通讯中流控制的两个管脚,本身成对出现。一般连接方式如下图所示:

图2 UART流控制示意图。
具体地说,就是当接收方(UART2)认为可以接受UART数据时,将RTS置为有效位。发送方(UART1)的CTS管脚接收到此信号后,才将数据进行发送。一般来说,当UART数据接收缓存大于两个字节空余时,就可以将RTS置为有效接收。当然,OD2101的UART接收缓冲区具有64位的字节,用户可以按照自己数据流量的需求定义RTS。
一、远距离通信
第1和第2中情况是属于远距离通信(传输距离大于15m的通信)的例子,故一般要加调制解调器MODEM,因此使用的信号线较多。注意:在以下各图中,DTE信号为RS-232-C信号,DTE与计算机间的电平转换电路未画出。
1、采用Modem(DCE)和电话网通信时的信号连接:
若在双方MODEM之间采用普通电话交换线进行通信,除了需要2~8号信号线外还要增加RI(22号)和DTR(20号)两个信号线进行联络,如图1所示:

图1
DSR、DTR:数传机(DCE)准备好、数据终端(DTE)准备好,只表示设备本身可用。
首先,通过电话机拔号呼叫对方,电话交换台向对方发出拔号呼叫信号,当对方DCE收到该信号后,使RI(振铃信号)有效,通知DTE,已被呼叫。当对方“摘机”后,两方建立了通信链路。
若计算机要发送数据至对方,首先通过接口电路(DTE)发出RTS(请求发送)信号。此时,若DCE(Modem)允许传送,则向DTE回答CTS(允许发送)信号。一般可直接将RTS/CTS接高电平,即只要通信链路已建立,就可传送信号。(RTS/CTS可只用于半双工系统中作发送方式和接收方式的切换。
当DTE获得CTS信号后,通过TXD线向DCE发出串行信号,DCE(Modem)将这些数字信号调制成模拟信号(又称载波信号),传向对方。
计算机向DTE“数据输出寄存器”传送新的数据前,应检查Modem状态和数据输出寄存器为空。当对方的DCE收到载波信号后,向对方的DTE发出DCD信号(数据载波检出),通知其DTE准备接收,同时,将载波信号解调为数据信号,从RXD线上送给DTE,DTE通过串行接收移位寄存器对接收到的位流进行移位,当收到1个字符的全部位流后,把该字符的数据位送到数据输入寄存器,CPU可以从数据输入寄存器读取字符。
2、采用专用电话线通信:在通信双方的MODEM之间采用电话线进行通信,则只要使用2~8号信号线进行联络与控制。不需要电话机、振铃信号RI和DTR信号,其信号线的连接如图2那样。

图2
二、近距离通信:
当通信距离较近时,可不需要Modem,通信双方可以直接连接,这种情况下,只需使用少数几根信号线。最简单的情况,在通信中根本不需要RS-232C的控制联络信号,只需三根线(发送线、接收线、信号地线)便可实现全双工异步串行通信,即是这里要讨论的第一种情况。
无Modem时,最大通信距离按如下方式计算:
RS-232C标准规定:当误码率小于4%时,要求导线的电容值应小于2500PF。对于普通导线,其电容值约为170PF/M。则允许距离L=2500PF/(170PF/M)=15M
这一距离的计算,是偏于保守的,实际应用中,当使用9600bps,普通双绞屏蔽线时,距离可达30~35米。
1、零Modem 的最简连线(3线制)
图3是零MODEM方式的最简单连接(即三线连接),图中的2号线与3号线交叉连接是因为在直连方式时,把通信双方都当作数据终端设备看待,双方都可发也可收。在这种方式下,通信双方的任何一方,只要请求发送RTS有效和数据终端准备好DTR有效就能开始发送和接收。

图3
(1)RTS与CTS互联:只要请求发送,立即得到允许
(2)DTR与DSR互联:只要本端准备好,认为本端立即可以接收(DSR、数传机准备好)。
2、零Modem标准连接:
如果想在直接连接时,而又考虑到RS-232C的联络控制信号,则采用零MODEM方式的标准连接方法,其通信双方信号线安排如下1-2-3-4-5顺序所演示的那样。
无Modem的标准联线(7线制)如图所示:
从中可以看出,RS-232C接口标准定义的所有信号线都用到了,并且是按照DTE和DCE之间信息交换协议的要求进行连接的,只不过是把DTE自己发出的信号线送过来,当作对方DCE发来的信号,因此,又把这种连接称为双叉环回接口。
双方的握手信号关系如下(注:甲方乙方并未在图中标出):
(1)当甲方的DTE准备好,发出DTR信号,该信号直接联至乙方的RI(振铃信号)和DSR(数传机准备好)。即只要甲方准备好,乙方立即产生呼叫(RI)有效,并同时准备好(DSR)。尽管此时乙方并不存在DCE(数传机)。
(2)甲方的RTS和CTS相连,并与乙方的DCD互连。即:一旦甲方请求发送(RTS),便立即得到允许(CTS),同时,使乙方的DCD有效,即检测到载波信号。
(3)甲方的TXD与乙方的RXD相连,一发一收。







本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/28158/showart_1120742.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP