打印

请问怎么平衡板内串口通信和外部485通信的关系?

[复制链接]
2884|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hubo450|  楼主 | 2007-1-14 09:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   就是板子上有两个89S52(假设叫U1,U2),之间通过串口通信交换数据,而且其中一个89S52(U1)通过MAX488与外部进行通信,这样就有一个接收数据的问题,比如U2给U1发数据,而且同时外部通过485总线也给U1发数据,这样就有问题,请问一般这中是如何解决的?我想到的办法是如图所示,不过觉得还是有问题,请高手点播一下,谢谢。
https://bbs.21ic.com/upfiles/img/20071/200711493812401.jpg

相关帖子

沙发
maychang| | 2007-1-14 11:50 | 只看该作者

这样U1仍然不能同时接收

实际上,只能分时使用,或者U1与U2之间改用其它通讯方式,例如并行通讯。
AVR单片机比较好,除有UART外,一般还有SPI接口和I2C接口,都可以用于两芯片之间的通讯,而且速度快。
一定要用51单片机,而且不能占用太多口线的话,参考程序匠人的博客,用一条线即可实现两芯片通讯,当然比较慢。

使用特权

评论回复
板凳
a12345678| | 2007-1-15 17:05 | 只看该作者

RE

可以分为2种情况来讨论:
1。 如果U1不仅在板内是主机,而且对于板外也是主机;同时U2和外部接口都必须是接到查询命令后才发送数据的从模式。这时,楼主的设计可以实现,不必更改。
2。 如果不能满足上述条件中的任何一条,U1必须更改为双串口模式。若串行通讯速度不超过9600bps,则可以直接用IO口模拟一个串口,这样U1就可以用一个89S52,否则需要更换为带双串口的单片机。

使用特权

评论回复
地板
hubo450|  楼主 | 2007-1-15 20:18 | 只看该作者

看来真的考虑双串口或者模拟了

考虑到监控的实时性,U1是作为从机的,它只接受到要求它发在发;而外部由于485总线上要挂好几台,所以每一台也应该都是作为从机,上位机来控制发送的权利。

使用特权

评论回复
5
mugenwon| | 2007-1-16 12:42 | 只看该作者

软件加硬件

不如这样:两个89s52之间就用uart口。另外u1直接用2个io口,最好加多一条线(用中断最好)。这样可以达到目的。
但是,软件通讯协议,你要仔细研究。如何协调好uart和这个模拟的485通信口,是比较麻烦的。我们刚刚搞了个用485来通讯的机器,但是协议制定就用了2星期。

使用特权

评论回复
6
hubo450|  楼主 | 2007-1-17 19:19 | 只看该作者

您这个建议很不错,不过还有一个疑问

 就是我用的485芯片是MAX488,在收的时候,如果用两个IO线是可以,但是如何知道外部发数据了那?是不断的扫描吗?

使用特权

评论回复
7
hubo450|  楼主 | 2007-1-17 19:35 | 只看该作者

又研究了一下MAX488,发现其实换成MAX485就没问题

  MAX488是双工,但是又没有控制输入输出的使能脚,所以才麻烦;而MAX485虽然是半双工,但是有RE,和/R/E分别控制输出和输入,这样的话只要板内另外一个CPU在开始与接口CPU通信的时候把使能端设置一下,让输入输出不通就是了。

使用特权

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

本版积分规则

12

主题

39

帖子

1

粉丝