将两个串口连接成一个串口
Posted
技术标签:
【中文标题】将两个串口连接成一个串口【英文标题】:Connect two serial port into one serial port 【发布时间】:2016-10-26 09:20:23 【问题描述】:我想把两个串口连接成一个串口。假设有A、B、C三个系统。
A、B 和 C 使用串行通信(RS232 端口)相互连接,如星形连接。 所以,情况就是这样。 当系统 C 向系统 A 和系统 B 发送数据时,它将同时发送到两个系统。但是当系统A或系统B发送数据时,系统C没有收到。
所以我想知道如何通过串口设备与其他串口设备(多设备)进行通信。
【问题讨论】:
那行不通。 RS-232 是一种点对点协议。您可以使用多点协议,例如 RS-485。见embedded.com/design/connectivity/4023975/… 【参考方案1】:这根本行不通。您必须将两条 TX 线连接到一条 RX 线,但 RS-232(与以太网不同)不是共享介质协议,无法检测 TX 冲突(当两个设备尝试同时通话时)。
您需要在中间实现一个设备,将它收到的内容转发给其他设备。即使这样,它也必须知道其他设备正在使用的协议以防止消息中断(例如,仅在换行符处停止)。
【讨论】:
【参考方案2】:是的,这绝对可行,至少在某些限制下/在明确定义的电压条件下。
保持 C:TX 的接线 --> A:RX 和 B:RX
对于另一个方向,通过使用带有二极管和电阻器的“半双工”布线方案,将 A+B TX 数据组合为 C:RX 引脚的一个信号,例如如图所示Lammert Bies' circuit for Half duplex RS232 spy / monitor / sniffer cable 或在此Spy Cable circuit。恕我直言,如果 A 和 B 在 RS232 电压规格中很好,这两种变体都应该可以正常工作。
限制:A 和 B 不能同时发送数据,即只能“半双工”。如果 A 和 B 同时发送,您将收到未定义/垃圾数据。
顺便说一句,还有其他*** posts that confirm this works。检查那里收到两个赞成票的第二个答案。
【讨论】:
二极管/电阻器解决方案已记录在案并已投入使用,即使在工业级设备中也如此:bb-elec.com/Products/Serial-Connectivity/…。当然,如果您对电子产品有普遍的反感,请分别。二极管/电阻器,并认为它们像谷仓一样狡猾 - 可能完全远离整个 RS232/RS422/RS485 区域。【参考方案3】:您可以将它们连接成一个环:Atx->Brx,Btx->Crx, Crtx->Arx 然后每个设备都必须转发消息而不是为它。这不需要任何狡猾的 diody/resistory hokum pokum。
这种方法的一大好处是它不会对节点不同时进行通信设置任何限制:-)
【讨论】:
【参考方案4】:在此配置中它无法工作,因为串行通信 (RS232) 可以提供两个设备之间的通信,而不是更多!
TX| -> |RX
device1 | - | device2
RX| <- |TX
要解决此问题,您必须使用其他协议,如 RS485 或其他。
【讨论】:
以上是关于将两个串口连接成一个串口的主要内容,如果未能解决你的问题,请参考以下文章