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


80

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

Answers:


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

有多种处理方法,因为标准中从来没有内置任何协议。您可以使用设备实施的任何临时“标准”。

仅根据名称,RTS / CTS似乎很自然。但是,它与日积月累的需求背道而驰。这些信号是在终端批量发送一个充满数据的屏幕时创建的,但是接收器可能尚未准备好,因此需要进行流量控制。后来问题被扭转了,因为终端无法跟上来自主机的数据,但是RTS / CTS信号的方向错误-接口不是正交的,并且没有相应的信号反过来。设备制造商会尽最大努力进行调整,包括使用DTR和DSR信号。

编辑

为了增加更多细节,它的两级层次结构必须“正式”都发生,以便进行通信。该行为在原始CCITT(现为ITU-T)标准V.28中定义。

在此处输入图片说明

DCE是在终端和电话网络之间连接的调制解调器。在电话网络中,还有另外一台设备,它们分别连接到数据网络。X.25。

调制解调器具有三种状态:电源关闭,就绪(数据集就绪为true)和已连接(数据载波检测

在连接调制解调器之前,终端无法执行任何操作。

当调制解调器要发送数据时,它将引发RTS,并且调制解调器通过CTS授予请求。当其内部缓冲区已满时,调制解调器降低CTS。

如此怀旧!


1
很好总结。然后出现了“软”流量控制xOn / xOff。
n8wrl

注意:在80年代中期以后,DTR / DSR不如RTS / CTS普遍。Linux内核从未支持DTR / DSR:到Linux内核支持DTR / DSR时,232串行已过时。
大卫

8
@david这些信号不仅限于RS232,而且也用于TTL UART。这些远不是过时的。
glglgl

因此,就DTE(计算机)和DCE(调制解调器)而言,RTS / CTS确保DCE(调制解调器)不会被数据淹没,而DTR / DSR确保DTE(计算机)不会被数据淹没。那是对的吗?
skinnedKnuckles

@skinnedKnuckles在我所能记忆的范围内是正确的。自从我不得不担心这些东西以来已经有很多年了。
马克·兰瑟姆

30

它们之间的区别在于它们使用不同的引脚。说真的,就是这样。它们之所以存在,是因为最初不应该将RTS / CTS当作一种流控制机制。半双工调制解调器用于协调谁在发送和谁在接收。RTS和CTS经常被误用于流量控制,因此成为标准配置。


1
我完全忘记了半双工。我隐约记得在组合线打印机/读卡器上看到的效果。感谢您的回答。
Mark Ransom

现在superuser.com确实存在,它告诉我们,在询问时,Linux内核不支持DTR / DSR信令。superuser.com/questions/345005/…。这就说明了另一个差异:DTR / DSR信令不太常见/智能调制解调器未使用。
大卫

1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.