• 串口(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
  • Powered by JishiGou 4.7.4 © 2005 - 2024 Cenwor Inc.