DTR / DSR和RTS / CTS流量控制有什么区别?

时间:2009-06-05 18:21:26

标签: serial-port protocols

DTR / DSR和RTS / CTS硬件流控制有什么区别?什么时候使用?为什么我们需要不止一种硬件流控制? :)

3 个答案:

答案 0 :(得分:57)

  • DTR - 数据终端就绪
  • DSR - 数据集就绪
  • RTS - 要求发送
  • CTS - 清除发送

有多种方法可以做,因为标准中没有任何协议。您可以使用您的设备实施的任何特殊“标准”。

根据名称,RTS / CTS似乎很自然。然而,它是随着时间的推移而产生的需求的倒退。这些信号是在终端批量发送满屏数据的时候创建的,但接收器可能没有准备好,因此需要流量控制。之后问题将被逆转,因为终端无法跟上来自主机的数据,但RTS / CTS信号的方向是错误的 - 接口不是正交的,并且没有相应的信号反过来。设备制造商尽可能地进行调整,包括使用DTR和DSR信号。

答案 1 :(得分:28)

它们之间的区别在于它们使用不同的引脚。说真的,就是这样。它们都存在的原因是RTS / CTS原本不应该成为流量控制机制;是半双工调制解调器来协调谁发送和谁接收。 RTS和CTS被误用于流量控制,因此它成为标准。

答案 2 :(得分:-1)

一个重要的区别是,如果某些UART(特别是16550)的主机指示主机将DSR设置为无效,则它们将立即停止接收字符。相反,如果CTS处于非活动状态,仍将接收字符。我相信这里的意图是DSR指示设备不再侦听,因此发送任何进一步的字符都是没有意义的,而CTS则指示缓冲区已满。后者允许一定量的“打滑”,其中流控制线在DTE对其进行采样与下一个要传输的字符之间改变状态。在(相对)较晚的支持硬件FIFO的设备中,在DCE将CTS设置为非活动状态之后,可能会传输许多字符。