朋友调试电路时,遇到了一个RS485的电路只能发不能收的问题。刚开始,他觉得既然发送已经有数据了,说明串口转RS485芯片就已经正常工作了,由此证明硬件没有问题了,因为硬件就是一个串口转RS485芯片,没有什么复杂的电路。所以他就一口咬定硬件没有问题了,至于为什么RS485发送正常,而接收有问题,他觉得就是软件没有调好。每次跟老板汇报工作,他也是这样跟老板说,然后老板每次都催软件工程师,结果软件工程师压力很大,每次都很卑微地向老板表示已经很努力地排查软件了,然后每天也加班加点地排查。

可是几天过去了,软件工程师仍然是没有解决问题。搞得软件工程师已经心灰意冷,豁达地做好了随时卷铺盖走人的准备。

后来,朋友跟我聊起这件事,引起了我的注意,觉得事情很有蹊跷,就赶紧叫朋友把电路发给我看一下。不看不知道,一看吓一跳,朋友用的串口转RS485的芯片是半双工的,而他的电路接法就是只能发送数据,而不能接收数据。如下图所示。

低压电路接法图解(朋友不知道半双工和全双工)(1)

​从图中可知,他把RS485芯片的DE接高平,RE接低电平了。但由于RS485芯片是半双工的,如果使能了发送模式,接收模式就不起作用了,所以就出现了只能发送不能接收的问题。

那么,电路应该要怎么设计才能实现正常发送数据和正常接收数据呢?有两种方式,一种是需要软件控制实现,另外一种是纯硬件实现。

方式一,软件控制实现。

低压电路接法图解(朋友不知道半双工和全双工)(2)

方式二,纯硬件实现。

低压电路接法图解(朋友不知道半双工和全双工)(3)

我如实地跟朋友说了,朋友惭愧不已,赶紧去和软件工程师解释清楚,并且承诺要请他吃饭赔罪。最后,朋友按照我说的方法改好电路后,电路就可以正常发送了。

,