串口硬流控原理验证RTS与CTS

物理连接(交叉连接)
主机的RTS(输出)信号,连接到从机的CTS(输入)信号。
主机的CTS(输入)信号,连接到从机的RTS(输出)信号。
主机发送过程:
主机查询主机的CTS脚信号,此信号连接到从机的RTS信号,受从机控制。如果主机CTS
信号为有效(低),表示从机的接收FIFO未满,从机可以接收,此时主机可以向从机发送
数据。并且在发送过程中要一直查询CTS信号是否为有效状态。一旦无效,则终止发送。
那主机的CTS信号什么时候会无效呢?
从机在接收到主机发送的数据时,从机的接收模块的FIFO如果满了,则会使从机RTS无效,
也即主机的CTS信号无效。主机则查询到CTS无效时,主机发送中止。
此过程可以由硬流控完成。我们只要设置开启硬流控,设置FIFO大小。RTS信号和CTS
信号由控制器代码查询和设置。
主机接收过程:
主机如果接收FIFO未满,则使主机RTS信号有效,也即从机的CTS信号有效。此时从机
如果要发送,发送前会查询从机的CTS信号,如果为有效,则开始发送。并且在发送过程
中移植查询从机CTS信号的有效状态,如果无效则中止发送。是否无效由主机的RTS信号
决定。主机如果FIFO满了,则使主机RTS信号无效,也即从机CTS信号无效。主机接收
中止。
理论验证:
1、 主机发送验证:
向主机串口丢数据,看TX线上是否有数据。
理论上,遥控主机CTS信号为无效时,TX线上无数据;遥控主机CTS信号为有效时,TX线上有数据;
2、 主机接收验证:
从机向串口丢数据,主机看RX线上是否有数据。
理论上,如果主机使RTS信号为有效时,RX线上有数据;如果主机使RTS信号为无效时,RX线上无数据;
串口硬流控原理验证RTS与CTS的更多相关文章
- sentinel 集群流控原理
为什么需要集群流控呢?假设需要将某个API的总qps限制在100,机器数可能为50,这时很自然的想到使用一个专门的server来统计总的调用量,其他实例与该server通信来判断是否可以调用,这就是基 ...
- stm32串口USART 硬件流控 --学习笔记
流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口.流控的定义.大家一定了解,RS232 中的"RS"是Recommend Standard 的缩写,即&qu ...
- USART 硬件流控
流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口.流控的定义.大家一定了解,RS232 中的"RS"是Recommend Standard 的缩写,即&qu ...
- 【STM32学习笔记】USART 硬件流控
流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口.流控的定义.大家一定了解,RS232 中的"RS"是Recommend Standard 的缩写,即&qu ...
- RTS与CTS的含义
====================================我是分割线首先介绍下网上看到的================================================= ...
- RTS与CTS的含义【转】
转自:http://www.cnblogs.com/sunyubo/archive/2010/04/21/2282176.html 一.RS232标准中的RTS与CTS RTS,CTS------请求 ...
- [tty与uart]UART中的硬件流控RTS与CTS
转自:http://blog.csdn.net/zeroboundary/article/details/8966586 在RS232中本来CTS 与RTS 有明确的意义,但自从贺氏(HAYES ) ...
- UART中的硬件流控RTS与CTS DTR DSR DTE设备和DCE设备【转】
中低端路由器上使用disp interface 查看相应串口状态信息,其中DCD.DTR.DSR.RTS及CTS等五个状态指示分别代表什么意思? DCD ( Data Carrier Detect 数 ...
- UART中的硬件流控RTS与CTS【转】
转自:http://blog.csdn.net/zeroboundary/article/details/8966586 5/23/2013 5:13:04 PM at rock-chips insh ...
随机推荐
- python 图像处理(从安装Pillow开始)
python2.x及以下用的是PIL(图像处理库是 PIL(Python Image Library)),最新版本是 1.1.7 可在http://www.pythonware.com/produc ...
- 【python】自学笔记
参考文献 1.环境安装 1.1 python 工作环境 2.7.14 1.2 pycharm community2018.1.1 4 x64 2.第一行代码 2.1 python交互模式, >& ...
- 链表的C/C++实现
一个链表实现,函数声明放在 list.h 头文件汇总,函数定义放在list.cpp 中,main.cpp 用来测试各个函数. 1.文件list.h // list.h #ifndef __LIST_H ...
- sleep,yield,join,notify,wait,notifyAll区别
1. Thread.sleep(long) 和Thread.yield()都是Thread类的静态方法,在调用的时候都是Thread.sleep(long)/Thread.yield()的方式进行调 ...
- ehcache、redis应用场景比较
应用场景: ehcache是Hibernate中默认的CacheProvider,直接在jvm虚拟机中缓存,速度快,效率高:但是缓存共享麻烦,集群分布式应用不方便. . 缓存数据有两级:内存和磁盘, ...
- C# 多线程初级汇总
异步委托 创建线程的一种简单方式是定义一个委托,并异步调用它 委托是方法的类型安全的引用 Delegate类还支持异步地调用方法.在后台,Delegate类会创建一个执行任务的线程 投票,并检查委托是 ...
- WebAPI框架里设置异常返回格式统一
直接上代码 /// <summary> /// 消息代理处理,用来捕获这些特殊的异常信息 /// </summary> public class CustomErrorMess ...
- codeforces 889A
A. Petya and Catacombs time limit per test 1 second memory limit per test 256 megabytes input standa ...
- idea和eclipse的区别
使用基于IntelliJ的IDE,都会对project和module的关系比较糊涂.用简单的一句话来概括是: IntelliJ系中的Project相当于Eclipse系中的workspace.Inte ...
- eclipse 安装报错
14 11:17:13] ERROR: org.eclipse.equinox.p2.transport.ecf code=1002 Unable to read repository at http ...