今天硬件提出与CPLD通信时候,需要将通信引脚配置为流控,有点懵逼,马上百度一波。这里简单做个记录。

1 关于流控

首先,我们需要知道什么“流”,这里“流”是指数据流。当两个硬件设备在通信时候,通信的数据就像流体一样,在两者之间“流动”。
       流,既分方向,也分快慢。在两个设备正常通信时,由于处理速度不同,就存在这样一个问题,有的快,有的慢,在某些情况下,就可能导致丢失数据的情况。如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。
       流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据的丢失。PC机中常用的两种流控制是硬件流控制(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续/停止)。

2 流控方式

2.1硬件流控

硬件流控制常用的有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设备接收)类似。

2.2 软件流控

软件流控和硬件流控都方式一样,只是实现方式不同而已。在通信过程中,软件流控通过在数据流中插入Xoff(特殊字符)和Xon(另一个特殊字符)信号来实现。A设备一旦接收到B设备发送过来的Xoff,立刻停止发送;反之,如接收到B设备发送过来的Xon,则恢复发送数据给B设备。同理,B设备也类似,从而实现收发双方的速度匹配。

3 串口定义

最后,由于我使用的是DB9串口,因此,我们可以再看看其引脚定义,对以上概念也会更加清晰。

       由上图,我们可以知道,如果串口只接了RX、TX两个信号,那么要流控的话只能使用软流控;如果接了RX,TX,CTS ,RTS四个信号,那么可以使用硬流控或者软件流控。

关于串口通信流控控制相关推荐

  1. STM32的串口硬件流控(RS232/RS485)

    流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口.流控的定义.RS232 中的"RS"是Recommend Standard 的缩写,即"推荐标准 ...

  2. 用VC开发串口通信dll控件

    VC串口通信技术网<VC串口上位机编程方法简介>介绍了串口编程的常见方法,其中就有使用串口dll控件的方法,dll是一种动态链接库,使用起来非常方便. 本文利用VC编程工具,对Window ...

  3. Labview 串口通信之——PC控制云台方向

    一.项目需求: 1.      完成上位机与下位机的串口通信 2.      上位机电脑给下位机发送16进制指令,控制摄像机云台的各个方向. 3.      该程序用Labview开发 二.开发过程: ...

  4. stm32中断方式的串口通信——上位机控制串口收发

    文章目录 前言 一.什么是串口通信 二.什么是中断--STM32 1.中断的概念 2.STM32下NVIC的介绍 3.中断优先级的介绍 4.外部中断的介绍 三.串口通信keil工程文件 1.新建工程模 ...

  5. ARM9的系统时钟和串口(非流控 + 非FIFO + 查询方式)

    实验的目的: 设置系统时钟,并在串口上输入一个字符,单板接收后将它的ASCII值加1后,从串口输出. 实验的源程序: /**************************************** ...

  6. arduino串口监视器显示nan_进阶教程1:Arduino串口通信与电脑控制LED

    本专栏内容经修订后,已在豆瓣阅读集结成书出版: https://read.douban.com/ebook/106875966/​read.douban.com 我是潘,曾经是个工程师.这是为 htt ...

  7. 三菱PLC串口通信的IO控制

    有些时候只是想使用PLC的IO,但又不会写PLC或者不想看懂PLC的通信协议,那么,可以直接使用串口直接发送相应的字符串进行控制IO端口. 串口设置: 波特率 9600 数据位 7 停止位 1 校验和 ...

  8. 易语言和c51通信,51单片机与PC上位机串口通信之LED控制

    #include #define uint8 unsigned char #define uint16 unsigned int uint8 receive_buffer[6];            ...

  9. SPCOMM控件在Delphi7.0串口通信中的应用

    ====================================================== 注:本文源代码点此下载 ================================= ...

最新文章

  1. solr mysql 分词_solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)...
  2. 算法小记 · 字符串翻转
  3. 基于zynq的千兆网udp项目_随时随地感受“沉浸式千兆体验”!海南互联网络迈入“三千兆”时代...
  4. Serekh塞拉赫资源包背后的创作过程
  5. REVERSE-PRACTICE-BUUCTF-5
  6. java 等待唤醒机制,Java线程等待唤醒机制
  7. Linux学习之CentOS(五)----网卡的配置
  8. [Cubieboard] Node.js 在 Lubuntu 上安装指南
  9. 关于银行,有哪些有趣的冷知识
  10. gradle指令linux守护,gradle之gradlew最全指令攻略
  11. tomcat access log pattern
  12. asp.net onclick与onclientclick的区别
  13. Kotlin 区间的一些小注意
  14. 饭店计算机软件系统FIDlLIL,【万迅千里马餐饮管理系统_饭店餐厅管理软件】免费试用_餐饮软件_选软件网...
  15. 图像处理特征提取之(二):Haar特征
  16. android 4.0.3固件,OPPO Find3 android 4.0固件正式发布
  17. 目标检测—DiffusionDet:用于检测的概率扩散模型笔记—DDPM
  18. php图片上传保留第一帧,七牛云上传视频怎么截取第一帧为图片
  19. 计算机电源的功能,电源屏主要功能及工作原理
  20. 远程计算机强迫关闭一个连接,远程主机强迫关闭了一个现有的连接,该怎么办...

热门文章

  1. SPI通信模式是什么?
  2. 第四季度前三星手机将呈现两重惊喜
  3. HCIP(第一天)——HCIA知识概要(一)
  4. 怀念恩师陈省身先生——陈永川
  5. 华师计算机学院男女比例,华中师范大学:专业录取无男女比例限制
  6. Oracle11g:补充日志
  7. 一位九年北漂人生活感触
  8. 嵌入式系统-知识点总结-1
  9. MT 112 Status of a Request for Stop Payment of a Cheque支票止付请求状态
  10. MayaDay5模型模块:摄像机分辨率门渲染