串口中硬件流控和软件流控

流控的概念

发送端数据发送速度过快,导致接收端的缓冲区数据还没有被读出而发送端发送过来的数据覆盖了原有缓冲区的数据而提出的一种流量控制方法;

主要为了解决常用的串口通信中,由于缺少时钟线,当速度不匹配、处理能力不匹配时容易出现数据丢失的情况。

硬件流控

在这里插入图片描述

(1)当DeviceA为发送端的时候,决定DeviceA能不能发送数据的是接收端DeviceB的RTS,在接收端DeviceB我们一般设置一个缓冲区,然后设置2个标志位,分别为ok,和no,ok一般为缓冲区大小的25%,no为缓冲区大小的75;如果当前缓冲区的数据量小于ok那么DeviceB就将RTS置为高电平从而让DeviceA中的RTS为高电平,表示DeviceA可以发送数据给DviceB;如果当前缓冲区的数据量大于no那么就将RTS置为低电平从而让DeviceA中的RTS为低电平,表示DeviceB不可以再继续发送到数据DeviceB;

(2)当DeviceB为发送端的时候,决定DeviceB能不能发送数据的是接收端DeviceA的RTS,在接收端DeviceA我们一般设置一个缓冲区,然后设置2个标志位,分别为ok,和no,ok一般为缓冲区大小的25%,no为缓冲区大小的75;如果当前缓冲区的数据量小于ok那么DeviceA就将RTS置为高电平从而让DeviceA中的RTS为高电平,表示DeviceB可以发送数据给DviceA;如果当前缓冲区的数据量大于no那么就将RTS置为低电平从而让DeviceB中的RTS为低电平,表示DeviceB不可以再继续发送数据到DeviceA;

软件控制流

软件流控是以特殊的字符来代表从机已经不能再接收新的数据了,在硬件不变的情况下(无CTS/RTS),当接收端缓冲区达到预设最大值时接收端的TX会主动发送一个字符到发送端来表示停止发送,发送的特殊字符本质也是发送了一次数据起到流控的作用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值