串口流控(CTS/RTS)使用详解
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四个信号,那么可以使用硬流控或者软件流控。
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线上无数据;
以上内容为网络收集整理,未注出处,侵删。
串口流控(CTS/RTS)使用详解相关推荐
- 串口流控 UART 中 CTS RTS RX TX (串口模组和MCU直接的通信)
串口介绍 串口流控,顾名思义就是流量控制的意思.目的是协调收发双方,使数据不会丢失. 一.硬件介绍: 这个图是MCU和串口模组通信硬件,其中箭头方向为型号输出方向 二.引脚介绍 RTS:(Reques ...
- 串行通信(二):串口流控
串口流控提供了由于某种原因不能进行通讯时阻塞通讯的一种机制,经常采用硬件流控和软件流控两种方式. 一:DB9串口引脚定义: 1. CD ← Carrier Detect 载波检测 2. RXD ← R ...
- 布局中文件中【控件间距参数详解以及单位选择】
注意:例如:android:layout_gravity和android:gravity的区别: android:layout_gravity:此控件相对父控件的相对位置 android:gravit ...
- ASP.NET技巧:GridView控件自定义分页详解第一页
ASP.NET技巧:GridView控件自定义分页详解 日期:2007年9月11日 作者: 查看:[大字体 中字体 小字体] <script src="../gg/info468.js ...
- 【深度好文】Flink SQL流批⼀体化技术详解(一)
持续输出 敬请关注 大数据架构 湖仓一体化 流批一体 离线+实时数仓 各种大数据解决方案 各种大数据新技术实践 持续输出 敬请关注 [珍藏版]数仓平台.推荐系统架构选型及解决⽅案_大数据研习 ...
- C#串口连接的读取和发送详解
C#串口连接的读取和发送详解 一.串口连接的打开与关闭 串口,即COM口,在.NET中使用 SerialPort 类进行操作.串口开启与关闭,是涉及慢速硬件的IO操作,频繁打开或关闭会影响整体处理速度 ...
- Flink/Blink 原理漫谈(二)流表对偶性和distinct详解
系列文章目录 Flink/Blink 原理漫谈(零)运行时的组件 Flink/Blink 原理漫谈(一)时间,watermark详解 Flink/Blink 原理漫谈(二)流表对偶性和distinct ...
- 新浪微博怎么推广引流,微博推广引流的三种方法详解
新浪微博怎么推广引流,微博推广引流的三种方法详解,#推广#营销 微博营销有哪些特点?#百收网SEO@千行助推 大家好,上一次内容讲了生意人如何将客户引流到自己的微信上去,受到很多朋友的喜爱,那么这一期 ...
- 51单片机串口通信发送以及接收代码详解1
#include <reg51.h> //实验现象:单片接收电脑发送的字符串,并发回给PC端的代码.//函数声明 void uart_init(void); void uart_seng_ ...
最新文章
- 多模态生物识别有什么优势
- C++实现通过UDP传输文件
- sql基础教程亚马逊_针对Amazon,Apple,Google的常见SQL面试问题
- jquery.validate验证简介
- Oracle11g 统计信息——统计信息自动收集任务
- Python装饰器几个有用又好玩的例子
- mysql/mariadb 安装开启spinx引擎
- mysql gridview_DateGridView控件与mysql交互
- 【springBoot】之快速构建一个web项目
- Keil4 新建工程 和 烧录程序
- 生活大爆炸第五季 那些精妙的台词翻译
- 绘制一张好看的散点图及pearson和spearman相关性分析的选择
- Poison Frogs! Targeted Clean-Label Poisoning Attacks on Neural Networks 论文阅读、复现及思考
- 中东多国与卡塔尔断交或为黑客入侵所致? FBI协助调查
- Java3d获取坐标_java-使用带有xzyz坐标和jzy3d的3d表面图
- 什么是两化融合贯标?对企业有什么好处?
- 1分钟快速了解MindMapper 与MindManager间的不同点
- mysql的复杂查询
- 我为公司干了三年,结果薪资不如刚来的应届生
- PLC远程监控助力设备售后运维