485通信电路设计中的bug及解决方案

485通信是单片机电路设计常常碰到的,最近在485通信电路设计中碰到了一个大坑来记录一下,希望给各位老师有所帮助,少走弯路。先上电路原理图:
485电路原理图
在该设计中使用了一个三极管控制485的发送和接收的转换,网上有很多这样的巧妙设计,看起来非常精妙,确实也解决了很多问题,简化了程序设计中还要单独用GPIO管脚来控制收发转换的麻烦。该电路在前几年的一个产品中使用了好几年,感觉也没有任何问题,当然为了总线上挂更多的用户,我把R156~158三个电阻都去掉了,感觉还是好用的。不过在使用中发现上更高的波特率存在不稳定的情况,9600下是完美的。
在最近的一个电路设计中再次使用了该电路,必须使用高的波特率250000,发现存在问题,上图看一下
485波形
正常应该是4us的波形宽度,实际测得是1us,严重误差导致无法正确识别数据
用示波器看一下
在这里插入图片描述
上图可见,在有120欧姆的终端电阻的情况下获得的波形,由于控制收发存在的时间滞后问题,波形出现问题。

尝试拆了R156的120欧姆电阻,发现不能解决波形宽度的问题,后怀疑的是采用三极管直接控制收发的问题引起了,测试去掉三极管,短路三极管的BE脚,失去控制,处于发送状态来测试一下,确实得到完美的波形。
在这里插入图片描述
这个问题几乎解决了我好几年前做的电路板在高波特率有故障的问题。
在这里插入图片描述
上图是在没有120欧姆终端电阻的,并且短路三极管BE脚的情况下测得的看似完美的250000波特率485信号。
回头我再测试一下老电路板在高波特率下的表现是否一致。

还得表扬一下csdn,居然在写一半的情况下,由于电脑死机,重启后,一半的内容还在。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值