我一直在使用与PC进行RS232通讯的设备。由于他们定义了相对于器件的TX和RX引脚,因此有些困惑。在他们的定义中,它们用来表示TX是从设备发送数据的引脚。在我看来,这应该标记为RX,因为它是计算机接收到的引脚。
引脚应如何定义?它们是相对于每个设备还是相对于“控制器”?
我一直在使用与PC进行RS232通讯的设备。由于他们定义了相对于器件的TX和RX引脚,因此有些困惑。在他们的定义中,它们用来表示TX是从设备发送数据的引脚。在我看来,这应该标记为RX,因为它是计算机接收到的引脚。
引脚应如何定义?它们是相对于每个设备还是相对于“控制器”?
Answers:
如果我们快速回顾一下最初使用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),并且在某些地方有短跳线电缆可用于链接各种连接器插针。
与许多使用信号名称的类似总线的配置不同,串行通信传统上使用功能名称作为引脚。因此,如果设备通过某个引脚进行传输,则将其标记为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引脚。
不幸的是,对于工程师而言,这是两片草皮之间的难题。
没有真正的逻辑解决方案,这两种方法都具有逻辑意义。
我尝试用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串行端口。这减少了过去的全部免费。
RXD>
的箭头指向远离引脚的方向,这意味着从该引脚发出信号-我当然希望它是输出而不是输入!