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 引脚说明

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)使用详解相关推荐

  1. 串口流控 UART 中 CTS RTS RX TX (串口模组和MCU直接的通信)

    串口介绍 串口流控,顾名思义就是流量控制的意思.目的是协调收发双方,使数据不会丢失. 一.硬件介绍: 这个图是MCU和串口模组通信硬件,其中箭头方向为型号输出方向 二.引脚介绍 RTS:(Reques ...

  2. 串行通信(二):串口流控

    串口流控提供了由于某种原因不能进行通讯时阻塞通讯的一种机制,经常采用硬件流控和软件流控两种方式. 一:DB9串口引脚定义: 1. CD ← Carrier Detect 载波检测 2. RXD ← R ...

  3. 布局中文件中【控件间距参数详解以及单位选择】

    注意:例如:android:layout_gravity和android:gravity的区别: android:layout_gravity:此控件相对父控件的相对位置 android:gravit ...

  4. ASP.NET技巧:GridView控件自定义分页详解第一页

    ASP.NET技巧:GridView控件自定义分页详解 日期:2007年9月11日 作者: 查看:[大字体 中字体 小字体] <script src="../gg/info468.js ...

  5. 【深度好文】Flink SQL流批⼀体化技术详解(一)

    持续输出 敬请关注 大数据架构  湖仓一体化  流批一体 离线+实时数仓  各种大数据解决方案  各种大数据新技术实践 持续输出  敬请关注 [珍藏版]数仓平台.推荐系统架构选型及解决⽅案_大数据研习 ...

  6. C#串口连接的读取和发送详解

    C#串口连接的读取和发送详解 一.串口连接的打开与关闭 串口,即COM口,在.NET中使用 SerialPort 类进行操作.串口开启与关闭,是涉及慢速硬件的IO操作,频繁打开或关闭会影响整体处理速度 ...

  7. Flink/Blink 原理漫谈(二)流表对偶性和distinct详解

    系列文章目录 Flink/Blink 原理漫谈(零)运行时的组件 Flink/Blink 原理漫谈(一)时间,watermark详解 Flink/Blink 原理漫谈(二)流表对偶性和distinct ...

  8. 新浪微博怎么推广引流,微博推广引流的三种方法详解

    新浪微博怎么推广引流,微博推广引流的三种方法详解,#推广#营销 微博营销有哪些特点?#百收网SEO@千行助推 大家好,上一次内容讲了生意人如何将客户引流到自己的微信上去,受到很多朋友的喜爱,那么这一期 ...

  9. 51单片机串口通信发送以及接收代码详解1

    #include <reg51.h> //实验现象:单片接收电脑发送的字符串,并发回给PC端的代码.//函数声明 void uart_init(void); void uart_seng_ ...

最新文章

  1. 多模态生物识别有什么优势
  2. C++实现通过UDP传输文件
  3. sql基础教程亚马逊_针对Amazon,Apple,Google的常见SQL面试问题
  4. jquery.validate验证简介
  5. Oracle11g 统计信息——统计信息自动收集任务
  6. Python装饰器几个有用又好玩的例子
  7. mysql/mariadb 安装开启spinx引擎
  8. mysql gridview_DateGridView控件与mysql交互
  9. 【springBoot】之快速构建一个web项目
  10. Keil4 新建工程 和 烧录程序
  11. 生活大爆炸第五季 那些精妙的台词翻译
  12. 绘制一张好看的散点图及pearson和spearman相关性分析的选择
  13. Poison Frogs! Targeted Clean-Label Poisoning Attacks on Neural Networks 论文阅读、复现及思考
  14. 中东多国与卡塔尔断交或为黑客入侵所致? FBI协助调查
  15. Java3d获取坐标_java-使用带有xzyz坐标和jzy3d的3d表面图
  16. 什么是两化融合贯标?对企业有什么好处?
  17. 1分钟快速了解MindMapper 与MindManager间的不同点
  18. mysql的复杂查询
  19. 我为公司干了三年,结果薪资不如刚来的应届生
  20. PLC远程监控助力设备售后运维

热门文章

  1. 02.Win10诸多坑之windows search服务启动失败
  2. 基于AI视觉技术构建柔性生产数字化车间
  3. input中鼠标点击清楚按钮之后的聚焦回input的方法
  4. 也许孤独是冥冥中的命中注定
  5. android 判断手机系统语言是否是简体中文的最新方法
  6. Arduino休眠模式和看门狗以及中断详解
  7. 2021年广东省专业技能大赛——大数据技术与应用 真题题目及解析(1)
  8. Java Eclipse JRE 1.8.0_25下载
  9. 遇到面试心情总是很紧张该怎么缓解
  10. 【ps-course 网页设计】抠图