USART硬件流控制概念以及原理(硬件控制流以及软件控制流)

news2025/1/22 8:29:03

USART 数据流控制 也就是 USART_HardwareFlowControl

一、流控制的作用

这里讲到的 “流”,指的是数据流;在数据通信中,流控制是管理两个节点之间数据传输速率的过程,以防止出现接收端的数据缓冲区已满,而发送端依然继续发送数据,所导致数据丢失

二、工作原理

当接收端的数据缓冲区已满,无法处理数据来时,就发出 “不再接收” 的信号,发送端则停止发送,直到发送端收到 “可以继续发送” 的信号再发送数据。计算机中常用的两种流控制分别是硬件流控制(RTS /CTS、DTR /DSR等)和软件流控制(XON /XOFF)

RS232的简化连线法

 其中通信的顺序是

A端的 DTR(数据设备就绪)发出信号, 当 B端准备好后,B端的 DTR(数据设备就绪)向 A端的 DSR(通讯设备就绪)发出信号。 接下来就可以通过 RTS(请求发送)和 DTR(允许发送)来控制通信。

三、进一步简化(也就是以 RTS /CTS为主)

从上面的流程可以看到,硬件流控制主要是 RTS /CTS和 DTR /DSR来控制,但是,人嘛,能懒就懒,因此现在很多时候都只是用 RTS /CTS告诉对方自己是否可以进行通讯,而直接跳过了 DTR /DSR的就绪状态检测

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

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

在使用 RTS /CTS时,它们都是低电平有效,因此,需要注意的有两点,一点是电平变化,第二点是信号传递(RTS /CTS无时无刻不在传递信号,也就是RTS /CTS的高低电平),一般在上位机中一旦打开串口,RTS会拉置高电平,然后等待数据发送,使得低电平有效,RTS 信号在数据没有被读取之前都是保持在高电平状态,我们可以看到在 Start 之前都是高电平,这也就是告诉发送端,数据还没有被拿走,请发送端等待,一旦数据被 DMA 或者 CPU 从 DR 寄存器读取之后,RTS 就释放高电平,变为低电平,这时候发送端如果想发送数据的话就可以直接发送了。

当 Data 2 还在 TX 线上进行发送的时候,如果此时在 CTS 信号上检测到了高电平,即使在 Data 2 的 STOP 位发送完之前写入了 Data 3,在当前的字节发送完之后是不会马上发送新写入的数据的,而是要等待,直到在 CTS 管脚上检测为低电平后,TX脚上才会开启 Data 3 的 Start 信号。

RTS信号是发送端向接收端发送信号,表示发送端已经准备好发送数据,而CTS信号是接收端向发送端发送信号,表示接收端已经准备好接收数据。这两个信号在不同的方向上进行控制,所以需要在发送端和接收端各有一个。

在一般来说,在发送端,当发送缓冲区满时,发送端就会发送RTS信号让接收端不能再接受数据,在接收端接收完数据后,就发送CTS信号告诉发送端可以继续发送数据。

值得注意的,并不是说硬件流控制就单纯的依靠硬件,它还需要软件去处理识别,因为硬件流控制所做的只是给出信号电平,真正的控制发送使能还得看软件的处理

四、软件流控制

软件流控制(Software flow control)是在计算机数据链路中的一种流控制方法,特别适用于 RS-232串口通信;它是采用特殊字符来传输带内信令,特殊编码字符称作 XOFF与 XON(分别表示 “transmit off” 与 “transmit on”)。因此,也被称作 “XON /XOFF流控制”;

使用 ASCII字符集,XOFF一般为字节值 19(十进制),XON为字节值 17

值得注意的是:是接受方把 XON /XOFF信号发给发送方来控制发送方何时发送数据的,这些信号是与发送数据的传输方向相反的

它的处理主要是:接收方利用 XON信号告诉发送方,我已经准备好接受更多的数据了,利用 XOFF信号告诉发送方停止发送数据,直到接受方发送 XON信号告诉发送方我再次准备好了。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/527236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ResNet 论文理解含视频

ResNet 论文理解 论文理解 ResNet 网络的论文名字是《Deep Residual Learning for Image Recognition》,发表在2016年的 CVPR 上,获得了 最佳论文奖。ResNet 中的 Res 也是 Residual 的缩写,它的用意在于基于 残差 学习,让神经网…

真实业务场景使用-门面模式(外观)设计模式

1.前言 最近接到要修改的业务功能,这个业务增删改查很多功能都需要校验时间,比如: 1.失效时间不能超过自己父表的失效时间, 2.失效时间不能是当前时间 3.失效时间不能早于生效时间 类似这样的不同的判断还有很多,…

软考A计划-真题-分类精讲汇总-第十章(程序设计语言)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

【GO 编程语言】切片与Map

切片与Map 文章目录 切片与Map一、切片 Slice1.定义切片2.make 函数创建切片3.切片扩容与遍历4.在已有数组上创建切片5.切片是引用类型7.深拷贝、浅拷贝 二、Map1.Map 初始化2.map 的使用3.map 的遍历4.map 结合 slice 一、切片 Slice 1.定义切片 Go 语言切片是对数组的抽象。…

设置ELK集群账号密码

一、设置ELK集群账号密码 切换到es用户 主节点生成证书 cd /home/es/elasticsearch-7.6.2/bin ./elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass "" 将主节点证书发给其他两个节点 修改配置文件,启用x-pack:cat /…

Linux指令运行原理和权限

Linux指令运行原理和权限 一.命名行解释器二.权限1.用户分类2.什么是权限3.增删权限4.更改权限的拥有者5.三个概念1.权限掩码2.目录权限3.粘滞位 三.权限总结 一.命名行解释器 那么命令行解释器存在的意义:1.进行命令的解释。2.保护os,对于非法的请求&am…

TimesNet:用于一般时间序列分析的时间二维变化模型

摘要 时间序列分析在天气预报、异常检测和动作识别等广泛应用中具有极其重要的意义。本文重点研究时间变量建模,这是广泛分析任务的共同关键问题。以前的方法试图直接从一维时间序列完成此操作,由于错综复杂的时间模式,这极具挑战性。基于对…

使用flask获取树莓派摄像头监控视频

目录 1、安装flask库 2、使用flask打开网页传输视频 2.1 在树莓派终端桌面上,新建一个flask文件夹 2.2 在flask文件夹里面,新建一个template文件夹和app.py文件 2.3 在template文件夹里面,新建一个index.html文件 2.4 使用flask运行代码…

【半小时入门vue】最容易理解的vue入门方式

半小时入门vue 前言(!important)学习vue的前提什么是vue?vue的引入方式实例化一个对象和创建一个对象实例化一个vue对象模板语法1.插值表达式2.v-text和v-html指令3.v-bind指令4.v-on指令5.v-model指令6.v-if和v-show指令7.v-for指…

AD-STM32

AD-STM32 ADC (Analog-Digital Converter) 模拟-数字转换器A DC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 12位逐次逼近型ADC,1us转换时间 输入电压范围: 0-3.3V,转换结果范围: 0~409518个输…

MySQL内幕揭秘:探索MySQL调优指南,解锁MySQL的强大功能

1、MySQL大事记 1994年:Michael Widenius和David Axmark创建了MySQL AB。 1995年:MySQL从最初的beta版本发布,成为一款开源软件。 1997年:MySQL发行版本3.21,并成为了第一个支持多个存储引擎的数据库管理系统。 2000年…

uniapp 地图组件(map)的使用总结

总结一下本次在uniapp中使用map遇到的一些问题 文章分别是基础 定位图标 获取自身经纬度 通过经纬度获取当时城市信息 首先先看成品 首先引入map组件 <template><view class"content"><map style"width: 100%; height: 90vh;" :layer-…

通过云函数搭建内地可用的OpenAI代理(腾讯云centos系统)

需求&#xff1a; 大陆内地云服务器无须搭梯子&#xff0c;无须NGINX反向代理访问openAI。 背景&#xff1a; 平时工作环境是局域网&#xff0c;不方便分享给朋友用&#xff0c;即使不是局域网也不可能一直开着自己的电脑啦&#xff0c;于是想着给弄到云服务器上。 一般来说&…

diff命令和vimdiff命令

文章目录 diff命令基本用法选项示例 vimdiff命令命令格式选项说明常用操作 diff命令 diff命令是一个文本比较工具&#xff0c;用于比较两个文件的内容&#xff0c;它会逐行比较两个文件的内容并输出它们之间的差异。下面是diff命令的常用选项和用法&#xff1a; 基本用法 比…

数据信息汇总的7种基本技术总结

数据汇总是一个将原始数据简化为其主要成分或特征的过程&#xff0c;使其更容易理解、可视化和分析。本文介绍总结数据的七种重要方法&#xff0c;有助于理解数据实质的内容。 1、集中趋势:平均值&#xff0c;中位数&#xff0c;众数 集中趋势是一种统计测量&#xff0c;目的…

RFID系统简介:优点、应用与发展前景

一、介绍RFID系统 RFID系统全称是Radio Frequency Identification&#xff0c;是一种通过电磁场自动识别标记&#xff08;Tag或RFID标签&#xff09;并读取相关数据的技术。与条形码技术相比&#xff0c;RFID系统最大的特点就是可以自动识别、无须接触扫描&#xff0c;并且可以…

MySQL报错:Got an error reading communication packets

error reading 关闭连接 通常一旦连接建立&#xff0c;MySQLD端的线程会堵塞在poll上&#xff0c;而poll的就是连接socket的fd&#xff0c;等待读取命令&#xff0c;也就是读取MySQL net packet的header。同时如果是poll timeout超时则设置为SOCKET_ETIMEDOUT 这就是我们平时说…

ResNet 原论文及原作者讲解

ResNet 论文摘要1. 引入2. 相关工作残差表示快捷连接 3. 深度残差学习3.1. 残差学习3.2. 快捷恒等映射3.3. 网络体系结构普通网络 plain network残差网络 residual network 3.4. 实施 4. 实验4.1. ImageNet分类普通的网络 plain network残差网络 residual network恒等vs.快捷连…

ribbon的使用

什么是ribbon Ribbon是Netflix公司提供的一个基于HTTP和TCP的客户端负载均衡工具。 Spring Cloud Ribbon是基于Netflix Ribbon 实现的一套客户端的负载均衡工具&#xff0c;Ribbon客户端组件提供一系列的完善的配置&#xff0c;如超时&#xff0c;重试等。通过Load Balancer获取…

随笔:mysql的主主同步

背景&#xff1a; nginx负载均衡和双击热备下&#xff0c;要求支持mysql的test库的主主同步&#xff0c;同时需要豁免特定的三张配置表。 实现步骤&#xff1a; 1. 查看防火墙是否是关闭状态。systemctl status firewalld 2. 修改配置&#xff0c;增加以下内容。vi /etc/my.cnf…