打印

第一次弄485,通信不正常,请朋友们指点一下,谢谢

[复制链接]
3508|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
djtloveic|  楼主 | 2010-5-27 16:04 | 只看该作者
MCU和485的连接图:

使用特权

评论回复
板凳
djtloveic|  楼主 | 2010-5-27 16:19 | 只看该作者
我的本意是将MCU出来的232信号通过485转换,再经485转换成232信号和PC通信,按图中的电路连接后,MCU发的数据PC能正确收到,PC发的数据如果一次发一个字节的话MCU接收正常,如果一次发多个字节的话MCU按收就不对了,这是什么原因?电路哪里出错了?弄了好久都没搞定,请朋友们指点一下,谢谢
232的波特率为9600

使用特权

评论回复
地板
457878| | 2010-5-27 16:37 | 只看该作者
既然是专用485芯片,芯片内部肯定有保护,不需要接100R电阻,上拉下拉也不用接看看我这个,多简单:

使用特权

评论回复
5
457878| | 2010-5-27 16:42 | 只看该作者
你后面所说的就不是电路问题啦,第一次能正常接收说明物理层基本正常,查你的程序吧:

使用特权

评论回复
6
djtloveic|  楼主 | 2010-5-27 17:02 | 只看该作者
谢谢457878的回复
我用的485芯片是MAX485,不接上拉下拉的话不能通讯。
不知我的电路这样连接正不正常?程序是232的程序,如果不用485,把MCU的TXD和RXD直接和MAX232连接的话收发都正确,中间加上485转换就不行了。

使用特权

评论回复
7
457878| | 2010-5-28 10:31 | 只看该作者
本帖最后由 457878 于 2010-5-28 10:39 编辑

这点要注意下:你的RE-RD端逻辑跟TXD混为一谈,可能吗?

还有:不太明白你的意思,有用【485转232的转换器】吗?

使用特权

评论回复
8
lqq615| | 2010-5-28 12:48 | 只看该作者
max487EPA不带ESD保护功能,MAX487EEPA才带

使用特权

评论回复
9
lqq615| | 2010-5-28 12:51 | 只看该作者
另外,你的上下拉反了,应该是A上拉,B下拉

使用特权

评论回复
10
chunyang| | 2010-5-28 13:27 | 只看该作者
楼主的接口电路设计不对,关于逻辑偏置,一方面要注意偏置方向(如楼上所言),另一方面要在终端电阻存在的前提下用欧姆定律和200mV门限进行计算取值,单点偏置即可,你的取值选择显然不对。再有,隔离电阻的阻值也过大了,20欧即可,也可以不加,那些串在信号/方向控制回路里的小电阻也都不需要,你根据什么要加?保护么?那是在想当然了。另外晶体管基极电阻要减小,以确保任何B值下晶体管均工作于开关态。

使用特权

评论回复
11
djtloveic|  楼主 | 2010-5-28 13:44 | 只看该作者
谢谢各位朋友

457878说的“有用【485转232的转换器】吗”是怎么回事,我现在的连接是MCU出来的信号经485的A和A和1楼的232转485的图中A和B相连,然后和PC通信,难道232转485和485转232不同?

lqq615和chunyang说的上下拉没有接错啊,就是A上拉,B下拉
一会把隔离电阻去了再试下,本意是用来做保护的
另外请教一下chunyang版主,我的电路该怎么改进啊,那几个电阻的取值该怎么取?谢谢~

使用特权

评论回复
12
sytu_chyq| | 2010-5-28 13:49 | 只看该作者
在终端电阻存在的前提下用欧姆定律和200mV门限进行计算取值
===========================================
请教:
上下拉1K,终端电阻120,这样AB两端电压就是5/(1000+1000+120)=283ma么
而485处于接收状态,AB电压又一直大于200ma,这样不会一直接收高电平么

使用特权

评论回复
13
my1693| | 2010-5-28 15:59 | 只看该作者
空闲时就是高电平

使用特权

评论回复
14
sytu_chyq| | 2010-5-29 09:36 | 只看该作者
上面写错了

5/(1000+1000+120) * 120=283mv

使用特权

评论回复
15
457878| | 2010-5-31 13:28 | 只看该作者
【232转485】和【485转232】不同?
从概念上讲,当然不同,实现手段也不一样,不过从市场角度来看,卖的基本都是双向转换器,如果你的概念不太清楚,那么看看下面的几个转换:
TTL---->485 (max485)
TTL<----485 (max485)
TTL---->232 (max232)
TTL<----232 (max232)
485---->232(Google)
232---->485(Google)

另外啰嗦下:既然原理图是你画的,那么你当然有义务保证它的正确性,而这要求你必须了解它们之间的差异,所以你还是仔细的研究下它们的相关标准吧:Google"485电平标准",可以看到你想要的。

使用特权

评论回复
16
djtloveic|  楼主 | 2010-5-31 21:56 | 只看该作者
谢谢457878的指点
电路连接现在应该是正确的,MCU的UART<--->MAX485<--->MAX485<--->MAX232<--->PC(232)
现在好像找到点头绪了,程序和电路都有问题,程序中串口收发都用中断,用这个电路,在接收过程中要是不发送数据,接收正常,一组数据接收过程序中若有发送,接收就不正常(但同样的程序直接转232则不会出现这样的问题),还有,要是波特率太高了也会出错,我试过19200还正常,38400就又乱了,看来485那部分电路还得再改善一下,我再好好研究一下。
再次谢谢各位的帮忙~

使用特权

评论回复
17
luffy59704331| | 2010-6-1 14:43 | 只看该作者
在接收过程中要是不发送数据,接收正常,一组数据接收过程序中若有发送,接收就不正常

232 是双向的,可485的半双工

使用特权

评论回复
18
djtloveic|  楼主 | 2010-6-3 14:47 | 只看该作者
谢谢 luffy59704331
仔细看了下手册,果然这样,自己太不细心了
这下终于搞明白是怎么回事了

使用特权

评论回复
19
xuqj4490| | 2010-9-12 21:38 | 只看该作者
在终端电阻存在的前提下用欧姆定律和200mV门限进行计算取值
===========================================
请教:
上下拉1K,终端电阻120,这样AB两端电压就是5/(1000+1000+120)=283ma么
而485处于接收状态,AB电压又一直大于200ma,这样不会一直接收高电平么
==================================
我同样有这样的疑问,以200mV为门限进行计算取值加入偏置后,AB间的电压差不会一直大于200mV吗?这个的原理到底是怎样的呢?

使用特权

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

本版积分规则

18

主题

113

帖子

0

粉丝