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

[复制链接]
 楼主| hubo450 发表于 2007-1-14 09:39 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;就是板子上有两个89S52(假设叫U1,U2),之间通过串口通信交换数据,而且其中一个89S52(U1)通过MAX488与外部进行通信,这样就有一个接收数据的问题,比如U2给U1发数据,而且同时外部通过485总线也给U1发数据,这样就有问题,请问一般这中是如何解决的?我想到的办法是如图所示,不过觉得还是有问题,请高手点播一下,谢谢。<br />https://bbs.21ic.com/upfiles/img/20071/200711493812401.jpg
maychang 发表于 2007-1-14 11:50 | 显示全部楼层

这样U1仍然不能同时接收

实际上,只能分时使用,或者U1与U2之间改用其它通讯方式,例如并行通讯。<br />AVR单片机比较好,除有UART外,一般还有SPI接口和I2C接口,都可以用于两芯片之间的通讯,而且速度快。<br />一定要用51单片机,而且不能占用太多口线的话,参考程序匠人的博客,用一条线即可实现两芯片通讯,当然比较慢。
a12345678 发表于 2007-1-15 17:05 | 显示全部楼层

RE

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

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

考虑到监控的实时性,U1是作为从机的,它只接受到要求它发在发;而外部由于485总线上要挂好几台,所以每一台也应该都是作为从机,上位机来控制发送的权利。
mugenwon 发表于 2007-1-16 12:42 | 显示全部楼层

软件加硬件

不如这样:两个89s52之间就用uart口。另外u1直接用2个io口,最好加多一条线(用中断最好)。这样可以达到目的。<br />但是,软件通讯协议,你要仔细研究。如何协调好uart和这个模拟的485通信口,是比较麻烦的。我们刚刚搞了个用485来通讯的机器,但是协议制定就用了2星期。
 楼主| hubo450 发表于 2007-1-17 19:19 | 显示全部楼层

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

&nbsp;就是我用的485芯片是MAX488,在收的时候,如果用两个IO线是可以,但是如何知道外部发数据了那?是不断的扫描吗?
 楼主| hubo450 发表于 2007-1-17 19:35 | 显示全部楼层

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

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

本版积分规则

12

主题

39

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部