DTR/DSR和RTS/CTS硬件流控有什么区别?什么时候使用每一个?为什么我们需要不止一种硬件流控制?:)
3 回答
- DTR - 数据终端就绪
- DSR - 数据集就绪
- RTS - 请求发送
- CTS - 清除发送
有多种做事方式,因为标准中从来没有内置任何协议。您使用您的设备实施的任何临时“标准”。
仅从名称来看,RTS/CTS 似乎是天作之合。然而,它与随着时间的推移而发展起来的需求背道而驰。这些信号是在终端批量发送一个充满数据的屏幕时创建的,但接收器可能还没有准备好,因此需要流量控制。后来问题会被逆转,因为终端无法跟上来自主机的数据,但 RTS/CTS 信号方向错误 - 接口不是正交的,并且没有相应的信号去往另一个方向。设备制造商尽其所能进行调整,包括使用 DTR 和 DSR 信号。
编辑
要添加更多细节,它是一个两级层次结构,因此“正式”两者都必须发生才能进行通信。该行为在原始 CCITT(现为 ITU-T)标准 V.28 中定义。
DCE 是连接终端和电话网络的调制解调器。在电话网络中是另一台设备,它分离到数据网络,例如。X.25。
调制解调器具有三种状态:已关闭、就绪(Data Set Ready为真)和已连接(Data Carrier Detect)
在调制解调器连接之前,终端不能做任何事情。
当终端想要发送数据时,它会提高 RTS,调制解调器会使用 CTS 授予请求。调制解调器在其内部缓冲区已满时降低 CTS。
好怀旧!
它们之间的区别在于它们使用不同的引脚。说真的,就是这样。它们都存在的原因是 RTS/CTS 原本不应该是一种流量控制机制。它是用于半双工调制解调器来协调谁在发送和谁在接收。RTS 和 CTS 经常被误用于流量控制,以至于它成为标准。
一个重要的区别是,如果主机指示某些 UART(尤其是 16550)将 DSR 设置为非活动状态,它们将立即停止接收字符。相反,如果 CTS 处于非活动状态,仍会接收字符。我相信这里的意图是 DSR 表示设备不再监听,因此发送任何进一步的字符是没有意义的,而 CTS 表示缓冲区已满;后者允许一定量的“打滑”,其中流控制线在 DTE 对其进行采样和传输下一个字符之间改变了状态。在(相对)较新的支持硬件 FIFO 的设备中,在 DCE 将 CTS 设置为非活动状态后,可能会传输许多字符。