在RS485通信系统中,当传输线的长度超过一定值或者总线中的RS485设备数量增多时,信号会逐渐衰减,可能导致总线稳定性降低甚至无法使用。此外,复杂的外部环境如电磁感应等也容易影响RS485通信的质量。那么,有什么好的解决办法吗?
为了解决这个问题,让我们先来了解一下几个关键概念。
信号串扰:这是指两条信号线之间的耦合现象。当信号线之间的空间距离较近时,可能出现电感和电容之间的耦合,从而互相干扰。电容耦合会产生耦合电流,而电感耦合则会产生耦合电压。在电路设计中,这是一个非常棘手的问题。
针对RS485发送端波形噪声干扰大的问题,下图展示了一种常用的解决方案的示意图。RS485的发送、接收和使能控制引脚通过10欧姆电阻直接连接到MCU端口上。
该电路方案是目前市面上比较常见的RS485方案,具体实现如下:
在空闲期间,使能控制引脚(485EN)为低电平,MCU处于接收状态;
在准备发送数据之前,MCU会将485EN引脚拉高,此时RS485芯片(U25)处于发送状态;
数据发送完成后,485EN重新置为低电平,U25处于接收状态。
该方案的关键在于准确地控制485EN引脚的电平高低时机,否则可能会出现数据丢失的问题。
问题发现及解决过程
在硬件测试的过程当中,我们发现了一个问题。在RS485发送端的DI信号波形存在着大量的毛刺。然而应该注意到的是,另一套相同的RS485电路并未出现这个问题。理论上,该电路的设计是没有问题的,因此我们怀疑这个故障可能是由于其他信号的干扰导致的。
为了准确的定位并解决这个问题,我们首先打开了PCB的设计图,对UART6_TX相关的线路进行了深入的查看。从图3和图4中,我们可以清晰地看到,这条线路从MCU延伸出来,通过一个过孔到达第三层,然后直接返回到第一层,最后通过R15电阻与RS485芯片的DI引脚连接。在除与第一层的DCDC_OUT线有一段短距离的平行布线之外,其余部分都没有发现明显的异常。
考虑到 buck芯片在工作时会产生强大的干扰,我们推测是内核DCDC输出的布线对UART6_TX造成了耦合干扰。有人可能会问,这是否可能是RS485芯片的接收端受到其他部分的干扰并传导到之前的发送端呢?为了验证这个问题,我们首先断开了R15电阻。
通过观察,我们发现靠近MCU端的波形和LP点输出电压波形(图7)中仍然存在干扰波形。随后我们又测量了DI端的波形(图8),此时波形中并没有出现干扰。因此,我们基本确定干扰是由前级DCDC_OUT与UART6_TX平行布线部分导入的。
现在,我们已经明确了问题所在,那么需要采取哪些措施来消除这种干扰呢?
针对这个问题,我们采取了以下两种解决方法:
在布线的过程中,对这段平行布线进行了修改,避免了布线的平行排列,同时增加了布线的间距。
在RS485发送端的DE引脚上添加了一个小电容以滤除噪声。由于噪声频率在1.65MHz,而RS485最大频率为110k,频率差异较大,因此很容易进行滤除。通过对比实验,我们发现当在DI引脚处添加不同容值的电容时,会对测试波形产生不同的影响。考虑到需要同时去除干扰并保证信号波形的上升和下降沿质量,我们最终选择了1nF电容。
通过以上解决方法,我们可以有效地消除RS485发送端DI信号中的干扰问题。这种方法可帮助提高RS485通信质量并确保稳定性。请注意,在实际应用中,根据具体情况进行适当调整和优化也是非常重要的。