TX和RX相对于什么?


11

我一直在使用与PC进行RS232通讯的设备。由于他们定义了相对于器件的TX和RX引脚,因此有些困惑。在他们的定义中,它们用来表示TX是从设备发送数据的引脚。在我看来,这应该标记为RX,因为它是计算机接收到的引脚。

引脚应如何定义?它们是相对于每个设备还是相对于“控制器”?


6
除了发送方以外,我从未见过TX / RX。这样TX是发送部分发送的引脚,而RX接收的引脚。我从未遇到过像您建议的命名。
Morten Jensen '18

13
RS232引脚命名有点特殊,因为它们根据DTE(数据终端设备)和DCE(数据通信设备)进行了定义,并造成了一些混乱。DCE的数据输出在RX引脚上,输入在TX引脚上,DTE相反。从理论上讲,连接器的性别应该告诉您什么,实际上,足够多的制造商弄错了这一点,使它的可靠性不那么可靠。以前,您有理由购买带有不同性别的D9和D25的小盒子,并使用一套小跳线和一些公共信号线上的LED来购买。
Dan Mills

1
今天是你的生日,我没有收到礼物。
ctrl-alt-delor

1
如果@MortenJensen是从发送方的角度命名的,那么两者都应称为TX。
user253751 '18

2
@TerryCarmen对于DCE而言不是正确的,在DCE中,引脚名称和数据流向按照标准颠倒了。DTE Tx-> DCE Tx和DTE Rx-> DCE Rx,是的,很奇怪,很糟糕,但这就是事实。
丹·米尔斯

Answers:


23

如果我们快速回顾一下最初使用RS-232标准的方式,可能会更容易理解。

注意:以下所有针号均指原始的25针D型连接器;在以后的PC上使用的9针连接器上,编号已更改。

背景

DTE =数据终端设备-在过去,通常是终端或打印机,或模仿它们的设备。

DCE =数据通信设备-在过去,这通常是调制解调器或其他WAN接口。

原始25针D连接器上的针2(在标准中称为“传输数据”,“电路BA”,“ V24.103”)应为 DTE DCE的数据。

原始25针D连接器上的针3(在标准中称为“接收数据”,“电路BB”,“ V24。104”)应为 DCE DTE的数据。

这意味着连接终端和调制解调器的电缆是“直通”的-终端(DTE)上数据起源的电缆一端的针脚2,另一端连接到调制解调器(或类似设备)的针脚2。接收数据的电缆(DCE)的一端。然后,调制解调器使用通信链路将该数据发送到该链路另一端的任何设备。

引脚3“接收的数据”是相反方向的数据信号-由引脚3上的调制解调器(DCE)发送,并由引脚3上的终端(DTE)接收。

因此,您可以看到,已发送内容和已接收内容的标签是从DTE(即终端)的角度来看的。当典型的连接在DCE和DTE之间时,所有这些都有意义。

但是,这些天我们正在使用的设备(即使当它们不使用RS-232而是使用TTL或其他电压UART协议接口时)通常都是有效的DTE(调制解调器除外)。将一个DTE上的引脚2(这是输出)连接到另一台配置为DTE的设备的引脚2(另一个输出)上,这是没有意义的(并且在使用逻辑电平信号时,甚至可能导致硬件损坏)。这是使用“交叉”或“零调制解调器”(即无调制解调器)电缆的地方。

你的问题

我一直在使用与PC进行RS232通讯的设备。由于他们定义了相对于器件的TX和RX引脚,因此有些困惑。在他们的定义中,它们用来表示TX是从设备发送数据的引脚。在我看来,这应该标记为RX,因为它是计算机接收到的引脚。

引脚应如何定义?它们是相对于每个设备还是相对于“控制器”?

从上面的背景信息中,您可以看到如果他们的设备充当DTE(大多数情况是,除非是调制解调器或其他WAN接口),否则其标签是正确的。在一块DTE上,标有“已传输数据”的插针(25针连接器上的插针2)确实发送数据。(并且,如上所述,在一块DCE(例如调制解调器)上,称为“传输数据”的引脚(其25引脚连接器上的引脚2)实际上是输入,该输入从DTE接收信号。)

PC的串行端口也将配置为DTE(除非它具有非常不寻常的串行端口-不适用于此端口,因为您知道它是否确实适用)。

因此,您要将DTE设备(您提到的该设备)连接到DTE设备(PC),即“ RS-232术语”中没有DCE,即没有调制解调器,而“空调制解调器”或“交叉” RS-232该DTE设备上的RS-232“发送数据”(可能是您提到的它们标记为TX的那个引脚)中的任何一个都将是输出,需要将其连接到RS-232“接收到的”。 PC(也是DTE设备)上的“数据”针脚,它是输入(显然,从另一个方向进行数据传输则相反)。

尽管这似乎并不适用于您,但我只想补充一下:为了使生活变得更加复杂,一些制造商试图通过有效地标记其DTE设备(就像是DCE一样)来“提供帮助”。他们将数据输入引脚标记为Tx,以便用户仅将来自外部设备的“ Tx”(如果是DTE,将是从那里输出的数据)连接到设备上标记为“ Tx”的引脚(他们知道这是的输入)。因此,他们可以说“只需将设备上的Tx连接到我们设备上的Tx”即可。他们认为自己正在尝试提供帮助,但是这样的标签常常只会增加混乱。

正如丹·米尔斯(Dan Mills)在评论中提到的那样,我们许多与RS-232一起成长的人都度过了欢乐时光,必须使用他所描述的“分线盒” 来连接具有稍微不同的RS-232实现的各种设备。这些接线盒带有LED,可显示正在主动驱动哪些信号(这可以使您快速查看设备是配置为DTE还是DCE:引脚2是在该设备上驱动的吗?是=它是DTE),并且在某些地方有短跳线电缆可用于链接各种连接器插针。


如果不起作用,通常的做法是交换电缆一端的针脚2和3上的连接(这对DE-9和DB25连接器均有效)
Peter Bennett

2
真正。在这个特定问题的背景下,它是RS-232(不是逻辑电平信号),没有提到硬件握手,那么尝试交换引脚2和3(因为不小心连接两个RS-232输出应该不会导致永久损坏)。不幸的是,涉及硬件握手时,事情变得复杂了(因为问题可能出在那些信号的各种配置中)。然后,交换插针2和3可能无法解决问题,或者可能无法解决唯一的问题。这带回了突破盒的记忆并分析了文档中没有的内容。
SamGibson

1
哦,是的,RTS / CTS / DSR / DTR ...如此之多,甚至很多,甚至在您开始玩有趣的事情之前,例如一端需要软件流控制,而另一端则希望RTS / CTS。是的,文档总是很烂。我对USB(主要是三种类型的废话插件,也大多是废话软件堆栈)一无所知,但回想'232完全是另一种水平。
丹·米尔斯

8

与许多使用信号名称的类似总线的配置不同,串行通信传统上使用功能名称作为引脚。因此,如果设备通过某个引脚进行传输,则将其标记为Tx。如果收到,则标记为Rx。显然,您将一个设备的Tx与另一设备的RX连接,反之亦然。

确切地说,您所谈论的设备中也包含“计算机”,这基本上就是MCU。为什么一台计算机要规定另一台计算机的引脚的名称,特别是考虑到通信的双向异步特性?

特殊情况是所涉及的设备是直通型的,例如旧的调制解调器或现代的FT232转换器。他们没有使用Tx / Rx引脚与计算机通信,而是使用它们将计算机的通信进一步传递到了线路下。因此,它们的引脚以信号通过来命名。

更新:这是几个例子来说明这一点。

如今,可能有数百万人正在使用Arduino,甚至有些人甚至对它的工作原理一无所知。他们将Tx连接到Rx,将Rx连接到Tx,将Gnd连接到Gnd,他们很高兴。他们通常没有意识到的是,他们在技术上正在创建null调制解调器,这允许两个MCU相互通信。

现在,这些人有时想向其Arduino添加USB连接。它们将适配器或转换器芯片上的TX连接到TX,RX连接到RX。请注意,通常将它们命名为“ TX-IN”和“ RX-OUT”以避免混淆。同样,似乎很明显但很少有人想到的是,从技术上讲,该USB适配器是一种直通设备。RX引脚上的“说”不是来自适配器本身,而是来自线路另一侧的设备。你猜怎么着?它在某处连接到TX引脚。


这是不正确的。该标准指定了DTE和DCE(两者相互通信),而TX / RX是从其中之一的角度指定的(我忘了哪个)。这些细节已经丢失多年了,标签的使用变得如此模糊,以至于即使是经验丰富的电气工程师也会犯错。
史蒂夫

SamGibson的回答非常好。
史蒂夫

2
@Steve“细节丢失了”?!RS232的规范遍布整个网络!之所以为DTE端指定名称TX / RX,是因为DTE和DCE 不在这些引脚上“互相交谈”,因此它们使用多个控制信号。调制解调器和计算机之间无话可说。调制解调器只是将那些信号通过。但是您可以使用null调制解调器连接两个DTE,那么您在哪里看?他们都是计算机,他们正在互相交谈,这正是OP问题中描述的情况。
Maple

从DTE到DTE当然有效。我很惊讶您在答案中没有包含有关DTE和DCE的任何信息,这在理解您的答案为何正确方面大有帮助。我想当我说您的答案不正确时会说错话,但这会在这里引起其他误解-通过“丢失细节”,我的意思是大多数工程师甚至都不会考虑这个问题,而只是“尝试直到正确为止” ”,或用DTE信号名称标记DCE设备。而且,不包括该细节将使这一点永存……
史蒂夫(Steve)

1
@Steve我故意避免提及DTE / DCE,因为您不能不讨论很多重要但与问题控制信号等无关的内容而去那里。无论如何,我已经用一些示例更新了答案,以使事情更清楚。
Maple

6

它们通常是相对于设备的,因为RS232设备没有“主/从”或“客户端/服务器”关系。SPI协议具有主/从体系结构,因此将其分别标记为“ MISO”(主输入从输出)和“ MOSI”(留给学生练习)。那是在设备级别;我不能说说个别电路设计师可能会选择什么作为网络名称。


它们确实具有“ DTE / DCE”关系,但是正如@Maple所描述的那样,它们在那里停了下来。实际上,一些深厚的历史可以解释他们的所作所为。
gbarry

这个答案虽然准确地描述了人们目前对待RS-232的方式,但从技术上来说是错误的(如@gbarry指出了DCE / DTE)。
史蒂夫

4

不幸的是,对于工程师而言,这是两片草皮之间的难题。

没有真正的逻辑解决方案,这两种方法都具有逻辑意义。

我尝试用IN / OUT和/或箭头指示方向来标记引脚,PCB,IC布局,连接表,软件。在原理图等上使用单词“ TX-out”,“ RX-in”,“ CTS-out”,“ RTS-in”。这完全解决了歧义。[我通常认为TX和RX应该正确命名,即TX应该是输出]。

这是信号越过隔离栅的pcb。注意箭头,以便有人对其进行调试或尝试安装连接器时会清楚地知道信号的前进方向。

在此处输入图片说明

控制信号甚至更糟。(以及电气方向,它们也具有逻辑控制方向)

控制信号具有明确列出功能的文档:“ CTS(输出)向计算机发出信号,表明设备已准备好接收数据”

有时两种方式同时具有意义:我有一个芯片,其中RX和TX分别用各自的功能正确命名(从芯片角度)。但是,握手引脚的名称分别为CTS和RTS,与它们将连接的PC引脚相匹配,因为这是软件和状态指示灯所​​指的。

近年来有所帮助的是,让设备使用DE9F连接器,该连接器通过mf直通电缆直接连接到PC串行端口。这减少了过去的全部免费。


1
您所显示RXD>的箭头指向远离引脚的方向,这意味着从该引脚发出信号-我当然希望它是输出而不是输入!
配管

@pipe如果考虑相对于连接器而言芯片在电路板上的位置,那么对于没有文档的从事该产品工作的人员来说,它一点也不歧义。箭头准确表示信号流。[有趣的语言点:与“ out” /“ in”不同,箭头仅在空间上下文中具有内在含义]
Henry Crun
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.