UART中RTS和CTS流控学习总结

UART中RTS和CTS流控学习总结

一、流控定义

流控:数据在两个串口之间进行通讯,常常会出现丢失数据的现象,比如当接收端数据缓冲区满了,而发送端还有数据发送过来,本质原因是速度不匹配,处理能力不匹配。

流控就是为了解决这个速度匹配的问题,它的含义非常简单,当接收端处理数据处理不过来时,就向发送端发送不在接收信息,当发送端接收到这个信号之后,就会停止发送,直到收到可以继续发送信号在继续发送。

流控的方式有两种,一种是硬件流控,一种是软件流控,一般UART只有RX、TX两个信号,要流控的话只能是软流控;如果有RX,TX,CTS,RTS 四个信号,则多半是支持硬流控的UART。

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

**CTS (Clear ToSend,发送允许)**为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。翻译为“Clear ToSend”,可以理解为清除发送,因为CTS是对方的RTS控制己方的CTS是否允许发送的功能。

二、硬件流控过程分析

如下图,设备A和设备B的TX、RX、CTS、RTS、GND连接

在这里插入图片描述

  • 设备A要发送数据给设备B

1、设备A拉低自己的RTS,告诉设备B已准备好发送数据

2、此时设备B检测到自己的CTS被拉低,得知设备A准备发送数据,若设备B未准备好,就不拉低自己的RTS;若设备B已经准备好接收,也将自己的RTS拉低,对应A的CTS拉低,此时设备A、设备B可以正常通信了

  • 设备A正在给设备B发送数据

1、设备A发送数据太快,设备B接收缓冲区快要满了,此时设备B拉高自己的RTS引脚,对应设备A的CTS引脚被拉高

2、设备A发现自己的CTS引脚被拉高,停止发送,等待自己的CTS再次拉低后再发送数据

软件流控之后有空再学习——20230726

  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

studyingdda

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值