UART中RTS和CTS流控学习总结

news/2025/1/16 0:03:17/

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


http://www.ppmy.cn/news/981082.html

相关文章

3.安装kubesphere

1.本地存储动态 PVC # 在所有节点安装 iSCSI 协议客户端(OpenEBS 需要该协议提供存储支持) yum install iscsi-initiator-utils -y # 设置开机启动 systemctl enable --now iscsid # 启动服务 systemctl start iscsid # 查看服务状态 systemctl status …

VU3-02

1.一些小点 1.1 npm i -D less (安装less) -D 安装依赖到开发环境中 只在开发中生效 正式打包的时候没有它,只在开发时有效 1.2 父子组件传参 (1)子组件中定义自己的参数和事件 父传子:const props defineProps(["item&quo…

Java三大特性,设计的五大原则的理解

Java三大特性分别是封装,继承,多态。 下面谈谈我对这三个特性的理解: 1.封装 指的是将类的成员变量(属性)和成员方法(方法)隐藏起来,通过使用访问修饰符(如private、public、protected等)来限制外部对类的直接访问,从而…

华为OD机试真题 Java 实现【数据分类】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路1、输入2、输出3、解题思路 五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题&…

nginx吞吐量调优

调整worker_processes和worker_connections: worker_processes:设置为服务器的CPU核心数或更高。例如,如果服务器有8个CPU核心,可以将worker_processes设置为8。worker_connections:设置每个worker进程所能处理的最大连…

腾讯校园招聘技术类编程题汇总

题解&#xff1a;并查集&#xff08;模板&#xff09; #include <iostream> #include<map> using namespace std; int father[2000006]; int rank1[1000005]; void init(int n){for(int i1;i<1e5;i){father[i]i;rank1[i]1;} } int find(int x){if(father[x]x){…

064、故障处理之OMM_TiDB

oom 内存溢出&#xff0c;内存泄漏&#xff0c;相当于TiDB不能用了 TiDB Server OOM对业务的影响 TiDB Server上的业务SQL会失败业务响应时间升高前端体验变差 诊断方法 客户端应用 ERROR 2013(HY000): Lost connection to MySQL Server during query日志 dmesg -T | gr…

Docker Compose容器的快速编排

Docker Compose容器的快速编排 一、Docker Compose简介1、Docker Compose是什么2、Docker Compose三大概念 二、Docker Compose 安装与操作1、环境安装2、YAML文件格式及编写注意事项3、Docker Compose配置常用字段4、Docker Compose常用命令5、Docker Compose文件结构6、删除创…