RS232串口之RTS与CTS作用

目录

为什么需要CTS/RTS?

RTS与CTS的定义

RTS与CTS的连接

硬件连接

1.流控概念

2. 使用方式

a. 硬件流控

b. 软件流控

3. 流控使用

1、UART通信中的流控CTS/RTS

2、那么,什么是CTS/RTS?

3、为什么需要CTS/RTS?

4、参考

4. 数据发送

a. 物理连接(交叉连接)

b. 主机发送过程:

c. 主机接收过程:

d. 那主机的CTS信号什么时候会无效呢?

5. 理论验证:


为什么需要CTS/RTS?

一般来说,只有在半双工通信的情况下需要用到CTS/RTS。

全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高
全双工模式发送者和接受者可以在连接线路上同时发送数据,发送的方向相反。发送和接受同时进行,需要两对电缆。

RS232串口之RTS与CTS作用_串口rts和cts用法_M_qsqsqsq的博客-CSDN博客

 

RTS与CTS的定义


RTS和CTS用于流控,提供了流控信号,但实际的流控功能还是要在软件实现,就是说即使硬件上RTS和CTS做了连线,但软件没有使用这两个信号,则通信就如无流控状态。

RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。
CTS (Clear ToSend,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据

RTS与CTS的连接


设备1的RTS -------- 设备2的CTS
设备1的CTS -------- 设备2的RTS
即交叉连接。

CTS/RTS流控的工作原理如下:

当串口准备好发送数据时,RTS信号一般只会被置高电平一次,也就是只有一个上升沿。这个上升沿会被接收端的芯片检测到,如果当前可以接收数据,接收端发送一个CTS(Clear To Send)信号(该信号一直保持高电平),表示接收端已经准备好接收数据了。如果接收端的缓冲区已经满了,CTS信号会被置低电平,发送端就会停止发送数据,等待接收端的缓冲区有空间可以存放新的数据后再继续发送;
当发送端接收到CTS信号后,发送端的RTS电平会被拉高,开始发送数据;
当发送端发送完数据后,会将RTS信号置为低电平,表示发送数据结束。此时,接收端的CTS信号也会被置为低电平,表示不再需要接收数据;


硬件连接


对于使用流控的RS232通信,设备的CTS如果悬空,可能由于芯片管脚的内部上拉导致持续的高电平,此时该设备将不能对外发送数据。所以对于使用流控的情况下,CTS不应悬空。

在这里插入图片描述

 

串口流控(CTS/RTS)使用详解_rts cts_Crush_u的博客-CSDN博客

1.流控概念


        在两个设备正常通信时,由于处理速度不同,就存在这样一个问题,有的快,有的慢,在某些情况下,就可能导致丢失数据的情况。
如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。
       流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,实现收发双方的速度匹配,防止数据的丢失。
PC机中常用的两种流控制是硬件流控制(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续/停止)。

2. 使用方式


    a. 硬件流控


           硬件流控制常用的有RTS/CTS流控制和DTR/DSR(数据终端就绪/数据设置就绪)流控制。
             RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。
             CTS (Clear ToSend,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。
    
             其他介绍:
           硬流控的RTS 、CTS :RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收;CTS (Clear ToSend,发送清除)为输入信号,有效时停止发送。假定A、B两设备通信,A设备的RTS 连接B设备的CTS ;A设备的CTS连接B设备的RTS。前一路信号控制B设备的发送,后一路信号控制A设备的发送。对B设备的发送(A设备接收)来说,如果A设备接收缓冲快满的时发出RTS信号(高电平)(意思通知B设备停止发送),B设备通过CTS 检测到该信号,停止发送;一段时间后A设备接收缓冲有了空余,发出RTS信号(低电平),指示B设备开始发送数据。A设备发(B设备接收)类似。
    


    b. 软件流控


           软件流控和硬件流控都方式一样,只是实现方式不同而已。在通信过程中,软件流控通过在数据流中插入Xoff(特殊字符)和Xon(另一个特殊字符)信号来实现。A设备一旦接收到B设备发送过来的Xoff,立刻停止发送;反之,如接收到B设备发送过来的Xon,则恢复发送数据给B设备。同理,B设备也类似,从而实现收发双方的速度匹配。

    3. 流控使用


        如果串口只接了RX、TX两个信号,那么要流控的话只能使用软流控;如果接了RX,TX,CTS ,RTS四个信号,那么可以使用硬流控或者软件流控。


RS232 引脚说明

 

1、UART通信中的流控CTS/RTS

UART中的硬件流控RTS与CTS

了解了UART通信基本知识之后,尝试着在TC387上基于EB tresos配置并且使用UART功能。

KimChan:UART通信介绍1 赞同 · 0 评论文章

TC387的文档对于配置过程写的挺详细的,所以实际配置中基本也是基于配置文档的设置去设定各个pin口和属性。不过呢,有一个配置项的功能在UART基础里还没有涉及到。

从文档描述来看,CTS应该是一个可选项(相关代码中还能看到这个和RTS也有关),进行UART通信不是必须设置的。

2、那么,什么是CTS/RTS?

CTS,全称Clear ToSend,允许发送[1],是作为输入信号给到UART,代表可以向对方传送数据。如果CTS设置为低电平时有效,那么当CTS低电平时,允许向对方发送数据。

RTS,全称Require ToSend,允许接收数据,作为UART的输出信号,代表可以从外部接收数据。如果设置的为低电平时有效,那么RTS低电平时,允许接收数据。

RTS与CTS的含义

 

3、为什么需要CTS/RTS?

一般来说,只有在半双工通信的情况下需要用到CTS/RTS。

4、参考

  1. ^Analysis on RTS/CTS Technology of UART Controller Analysis on RTS/CTS Technology of UART Controller - LCD Panel LTD


4. 数据发送


    a. 物理连接(交叉连接)


        § 主机的RTS(输出)信号,连接到从机的CTS(输入)信号。
        § 主机的CTS(输入)信号,连接到从机的RTS(输出)信号。
        ▪ RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。
        ▪ CTS (Clear ToSend,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。
        


    b. 主机发送过程:


        § 主机查询主机的CTS脚信号,此信号连接到从机的RTS信号,受从机控制。
        § 如果主机CTS信号为有效(低),表示从机的接收FIFO未满,从机可以接收,此时主机可以向从机发送数据。
        § 主机在发送过程中要一直查询CTS信号是否为有效状态。一旦无效,则终止发送。
    
   

c. 主机接收过程:


        § 主机如果接收FIFO未满,则使主机RTS信号有效,也即从机的CTS信号有效。此时从机如果要发送,发送前会查询从机的CTS信号,如果为有效,则开始发送。
        § 在发送过程中一直查询从机CTS信号的有效状态,如果无效则中止发送。是否无效由主机的RTS信号决定。
        § 主机如果FIFO满了,则使主机RTS信号无效,也即从机CTS信号无效。主机接收中止。
    


    d. 那主机的CTS信号什么时候会无效呢?


           从机在接收到主机发送的数据时,从机的接收模块的FIFO如果满了,则会使从机RTS无效,也即主机的CTS信号无效。主机则查询到CTS无效时,主机发送中止。
    此过程可以由硬流控完成。我们只要设置开启硬流控,设置FIFO大小。RTS信号和CTS信号由控制器代码查询和设置。 

5. 理论验证:


    a.  主机发送验证:
        § 向主机串口丢数据,看TX线上是否有数据。
        § 理论上,遥控主机CTS信号为无效时,TX线上无数据;遥控主机CTS信号为有效时,TX线上有数据;
    b. 主机接收验证:
        § 从机向串口丢数据,主机看RX线上是否有数据。
        § 理论上,如果主机使RTS信号为有效时,RX线上有数据;如果主机使RTS信号为无效时,RX线上无数据;

RTS与CTS的含义

UART中的硬件流控RTS与CTS

 

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学海无涯_come on

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值