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

[复制链接]
4592|18
 楼主| djtloveic 发表于 2010-5-27 16:03 | 显示全部楼层 |阅读模式
先把图发上,232转485的图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 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电阻,上拉下拉也不用接看看我这个,多简单:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
457878 发表于 2010-5-27 16:42 | 显示全部楼层
你后面所说的就不是电路问题啦,第一次能正常接收说明物理层基本正常,查你的程序吧:
 楼主| djtloveic 发表于 2010-5-27 17:02 | 显示全部楼层
谢谢457878的回复
我用的485芯片是MAX485,不接上拉下拉的话不能通讯。
不知我的电路这样连接正不正常?程序是232的程序,如果不用485,把MCU的TXD和RXD直接和MAX232连接的话收发都正确,中间加上485转换就不行了。
457878 发表于 2010-5-28 10:31 | 显示全部楼层
本帖最后由 457878 于 2010-5-28 10:39 编辑

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

还有:不太明白你的意思,有用【485转232的转换器】吗?
lqq615 发表于 2010-5-28 12:48 | 显示全部楼层
max487EPA不带ESD保护功能,MAX487EEPA才带
lqq615 发表于 2010-5-28 12:51 | 显示全部楼层
另外,你的上下拉反了,应该是A上拉,B下拉
chunyang 发表于 2010-5-28 13:27 | 显示全部楼层
楼主的接口电路设计不对,关于逻辑偏置,一方面要注意偏置方向(如楼上所言),另一方面要在终端电阻存在的前提下用欧姆定律和200mV门限进行计算取值,单点偏置即可,你的取值选择显然不对。再有,隔离电阻的阻值也过大了,20欧即可,也可以不加,那些串在信号/方向控制回路里的小电阻也都不需要,你根据什么要加?保护么?那是在想当然了。另外晶体管基极电阻要减小,以确保任何B值下晶体管均工作于开关态。
 楼主| 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版主,我的电路该怎么改进啊,那几个电阻的取值该怎么取?谢谢~
sytu_chyq 发表于 2010-5-28 13:49 | 显示全部楼层
在终端电阻存在的前提下用欧姆定律和200mV门限进行计算取值
===========================================
请教:
上下拉1K,终端电阻120,这样AB两端电压就是5/(1000+1000+120)=283ma么
而485处于接收状态,AB电压又一直大于200ma,这样不会一直接收高电平么
my1693 发表于 2010-5-28 15:59 | 显示全部楼层
空闲时就是高电平
sytu_chyq 发表于 2010-5-29 09:36 | 显示全部楼层
上面写错了

5/(1000+1000+120) * 120=283mv
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电平标准",可以看到你想要的。
 楼主| djtloveic 发表于 2010-5-31 21:56 | 显示全部楼层
谢谢457878的指点
电路连接现在应该是正确的,MCU的UART<--->MAX485<--->MAX485<--->MAX232<--->PC(232)
现在好像找到点头绪了,程序和电路都有问题,程序中串口收发都用中断,用这个电路,在接收过程中要是不发送数据,接收正常,一组数据接收过程序中若有发送,接收就不正常(但同样的程序直接转232则不会出现这样的问题),还有,要是波特率太高了也会出错,我试过19200还正常,38400就又乱了,看来485那部分电路还得再改善一下,我再好好研究一下。
再次谢谢各位的帮忙~
luffy59704331 发表于 2010-6-1 14:43 | 显示全部楼层
在接收过程中要是不发送数据,接收正常,一组数据接收过程序中若有发送,接收就不正常

232 是双向的,可485的半双工
 楼主| djtloveic 发表于 2010-6-3 14:47 | 显示全部楼层
谢谢 luffy59704331
仔细看了下手册,果然这样,自己太不细心了
这下终于搞明白是怎么回事了
xuqj4490 发表于 2010-9-12 21:38 | 显示全部楼层
在终端电阻存在的前提下用欧姆定律和200mV门限进行计算取值
===========================================
请教:
上下拉1K,终端电阻120,这样AB两端电压就是5/(1000+1000+120)=283ma么
而485处于接收状态,AB电压又一直大于200ma,这样不会一直接收高电平么
==================================
我同样有这样的疑问,以200mV为门限进行计算取值加入偏置后,AB间的电压差不会一直大于200mV吗?这个的原理到底是怎样的呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

113

帖子

0

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