广场| 话题| 登录| 免费注册
微博原文

物联控制模块:

串口(RS232/RS485)通讯中DTR/DSR

先贴出缩写的含义:
DTR – Data Terminal Ready
DSR – Data Set Ready
RTS – Request To Send
CTS – Clear To Send
对应的相关的其他术语还有:
DCE:Data Communication Equipment,可以理解为:数据的发起发
DTE:Data Terminal Equipment,可以理解为:数据的接收方
RTS/CTS和DTR/DSR,是用的物理引脚是不同的;

而关于DTR/DSR和RTS/CTS共存(没有统一只使用单个的一组硬件引脚(要么用RTS/CTS,要么用DTR/DSR)去实现流控制)的原因是:

背景是:最开始先出现的RTS/CTS,但是设计出RTS/CTS的初衷,即原先的目的,就不是把RTS/CTS去用来当做流控制的

-> 而是用来:去协调两个半双工(工作模式下的)的猫modem之间的通讯

-> 不至于让两个半双工的modem,在通讯时,互相掐架,互相抢占数据通道,互相同时要么都要发送数据,要么都要接受数据,由此而容易导致混乱和(总线上的)数据异常

-> 但是结果,(被设计用于协调两个两个半双工的modem之间的通讯的)RTS/CTS,结果被大家误用,误当做(后来大量出现和使用的,全双工的串口等设备中的)流控制
-> 即,对于都是全双工的两个串口来说:
计算机(上面的串口)     (开发板或其他设备上面的)串口
分别对应着的概念是:
DCE     DTE
此处,分别叫做:
数据发送方     数据接收方
此处,暂且叫做:
串口A     串口B
此时就是:
A打算发送数据到B中
A设置RTS(Request To Send),表示:请求发送(数据到对方)
此时:正常情况下,数据接收方,B不忙的时候,即不是busy的状态,则:
B去设置对应的CTS(Clear To Send):
两种理解,不确定是哪种:
清除(发送者A之前的设置的RTS),表示可以接受数据了
Clear表示OK,清楚,明白,意思是明白对方的意思了,表示对方可以发送数据了
-> 发送者A,就可以直接去发送数据给B了,B也就可以去接受数据,处理收到的数据了;
偶尔特殊的时候,处于忙的状态,即busy,比如忙着处理上次发送的数据呢,所以没空理会你这次还要发的数据:
那么此时就是:不去设置对应的CTS,表示自己忙,来不及处理你将要发送的数据
-> 数据发送者A,见状,就继续检测CTS,直到(数据接受者B,忙清了自己手上的活,有空接受数据了,然后)CTS被接受者B去设置对应的CTS,表示可以接受数据了,然后A才去发送数据给B
DTR/DSR,主要是用来做:建立链接
即:数据发送和接受之前,先要建立A和B的连接,这时候,才用到DTR/DSR

2019年09月06日 10时36分 | 来自 物联控制开发运营 | 评论(0) | 转发(0)
登录后发表评论
发微博 | 返回顶部
广场 | 我的首页 | 手机客户端
Powered by JishiGou