打印

求助:两个串口合并为一个的问题

[复制链接]
9447|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zmmhmily|  楼主 | 2008-2-28 14:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现有的情况:
一块电路板, 两个功能, 对应两个串口, 两个上位机软件

功能1 使用串口1, 使用上位机软件1

功能2 使用串口2, 使用上位机软件2

两个串口在电路中都使用了SP232EEN, 串口通过DB9连到电脑上, 同一时刻只能实现两个功能中的一个,及使用相应的上位机.

遇到的问题:
要把两个串口合并成一个, 上位机也使用一个, (两个功能分别有对应的协议),同一个DB9进行, 我在硬件电路中应该如何来实现, 注意些什么? 听说有一个一转二的芯片, 哪位知道啊? 或者用一个PIC单片机也可以,用什么型号的比较经济一些啊??

谢谢各位!

相关帖子

沙发
maychang| | 2008-2-28 15:06 | 只看该作者

在电路板上,两个串口联接到一个设备还是两个设备?

使用特权

评论回复
板凳
zmmhmily|  楼主 | 2008-2-28 15:19 | 只看该作者

回楼上

连接到两个不同的设备, 进行两种不同的测量

使用特权

评论回复
地板
lws| | 2008-2-28 16:39 | 只看该作者

上位机软件也要合二为一

电路板上加个模拟开关切换单片机串口(TTL),通过一个SP232接电脑。如果是3线RS232,用电脑串口的RTS线控制模拟开关切换(需要电平转换)。

使用特权

评论回复
5
zmmhmily|  楼主 | 2008-2-28 16:56 | 只看该作者

回楼上

下位机软件没有原代码不能改变了,加模拟开关还需要一个简单的单片机,哪一个比较经济一些啊?能否推荐一下?

或者能不能用一个芯片直接来控制? 还有什么方法更好一些?

使用特权

评论回复
6
maychang| | 2008-2-28 19:04 | 只看该作者

下位机软件没有原代码不能改变了

Sigh.

使用特权

评论回复
7
xiezonglin| | 2008-2-28 21:12 | 只看该作者

看看我的电路能不能帮你

我的方案是单片机的2个串口的接收端直接并在一起,发射端用二极管连接,如图
https://bbs.21ic.com/upfiles/img/20082/2008228211036798.jpg
此方案在我一个单片机端口连接2个uart设备中成功运行。
其中二极管最好用肖特基二极管,232芯片端可以考虑加上拉

使用特权

评论回复
8
maychang| | 2008-2-28 21:31 | 只看该作者

楼上考虑没有

两个设备同时发送(包括一个设备发送未完另一设备即开始发送情况),怎么办?
虽然楼主说过“同一时刻只能实现两个功能中的一个”,但并没有说一个设备发送完另一个才开始发送,也没有说一个设备接收完毕另一个才开始接收。
另外还需要考虑,上位机如何识别是哪个设备发送的?板上两个设备如何识别上位机是发送给哪个设备的?我们不知道两个设备与上位机通讯协议是否相同而仅靠串口区分。板上的两个设备已不能修改程序,也就是不能改通讯协议。

使用特权

评论回复
9
xiezonglin| | 2008-2-28 21:40 | 只看该作者

如果设备发数据是靠上位机控制就好了

如果设备随时可能发数据的话就算加单片机和模拟开关控制也不大能解决问题

使用特权

评论回复
10
maychang| | 2008-2-28 21:54 | 只看该作者

回楼上

增加设备的话,这个设备必须有三个串口,分别与上位机、设备A和设备B联接。所有数据流都可以在此设备中得到缓冲。或者增加具有一个串口的单片机三片。

使用特权

评论回复
11
xiezonglin| | 2008-2-28 22:35 | 只看该作者

我觉得楼上的方案至少存在2个问题

1.如果设备是主机性质的,就是会主动发数据的,那往往对时序要求很高,经过这么一缓冲,特别是要应答的话很可能要等电脑应答完A设备的数据后增加的设备才能将数据传给电脑,这样产生的延时有些设备可能受不了。
2.这个方案太复杂,成本太高,这是致命的我相信,楼主要2并1应该是要降成本,而且楼主也说希望经济一些。
有3个串口的单片机好像都不便宜,3个单片机那就更贵。

使用特权

评论回复
12
maychang| | 2008-2-28 22:54 | 只看该作者

回楼上

这些问题,尤其是你说的成本问题,我都很清楚。所以我在6楼才无可奈何。
如果可以修改单片机程序的话,只要两片单片机互相联络一下就行。

使用特权

评论回复
13
maychang| | 2008-2-28 22:56 | 只看该作者

还想说两句

增加三片单片机的方案,就算是不计成本,根据楼主“下位机软件没有原代码不能改变了”这句,估计楼主也写不出来这三片的程序。

使用特权

评论回复
14
mikesullen| | 2008-2-28 23:43 | 只看该作者

要看楼主所掌握的资源情况

首先,是否有两个串口使用协议的说明,如果协议中有握手识别,那就好办了,可以用一个单片机模拟3个串口,分别与PC和两个功能模块连接起来,根据接收情况判断出目标功能,再与对应的功能模块上进行转发和接收就OK了。

如果没有协议的详细说明,问题就比较复杂。也可以按上面的方法加一个单片机,不过要再写一个上位机程序,能够选择调用原来的两个上位机程序,在调用时,先发个识别码给下位的单片机,下位的单片机识别到后,就和上面一样控制了。

不过,如果要写一大堆程序,要考验楼主的写程序的能力了。。。

使用特权

评论回复
15
xwj| | 2008-2-29 00:17 | 只看该作者

信号可以简单的相与或切换,但问题是他们的协议必须能够

如果全市自己做的,那好办的很,
如果不是自己做的设备的话,很难说...

使用特权

评论回复
16
zmmhmily|  楼主 | 2008-2-29 10:26 | 只看该作者

顶一下

先感谢各位提供的思路

两个串口使用协议的说明都有, 这样的话是不是只要加一个单片机就可以了??

使用特权

评论回复
17
stycx| | 2008-2-29 22:16 | 只看该作者

用一三极管控制继电器切换两个串口的rx tx,dtr或rts控制三极

使用特权

评论回复
18
freebenben| | 2008-2-29 23:25 | 只看该作者

给个建议。我正在做的。

我现在有个项目里也有类似于楼主的需要。
我是这样做的。
51单片机+SP2338
SP2338是一个串口扩展芯片。
可以把一个串口扩展成三个串口,子串口最高9600bps。
母串口是子串口的4倍波特率。
sp2338.pdf
sp2328.pdf
这个芯片的生产厂家是成都视普科技http://www.sepertech.com
使用这个芯片十分简单。扩展出来的三个串口其中一个给上位机用,另外两个接下位机。
三个串口可以同时收发。数据通过母串口汇集到单片机进行数据融合。


相关链接:https://bbs.21ic.com/upfiles/img/20082/2008229232010195.pdf

使用特权

评论回复
19
freebenben| | 2008-2-29 23:33 | 只看该作者

SP2338还有C51的函数包提供

使用特权

评论回复
20
freebenben| | 2008-3-2 01:59 | 只看该作者

楼上这个方案可以吗?

根据楼主提供的信息。
两个下位机来的信息通过两个子串口送到单片机,单片机把信息直接转发到上位机的子串口,上位机来的信息也通过单片机转发到对应的子串口。
单片机的另一个工作就是判断并防止两个子串口的冲突,即上位机软件1工作时屏蔽子串口2来的信息。上位机软件2工作时屏蔽子串口1来的信息。
器件需要有UART的单片机一片,SP2338或SP2328一片(根据你所用的最高波特率决定),SP232EEN三片(对应两个下位机和一个上位机),电阻电容若干。
总成本大概二十多块钱吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

205

主题

698

帖子

0

粉丝