问题:485差分信号不对称
遇到485差分信号不对称的问题时,通常是在RS485设备测试信号时(总线未接从机)时出现,发现RS485的输出差分信号相对于GND存在不对称性。具体表现为A、B相的信号未完全覆盖整个0-3.3V区间,如下图1所示:可以明显观察到RS485信号A的低电平未达到GND,而RS485信号B的高电平未达到VDD。
查阅芯片手册后发现,芯片内部A、B相对地的等效阻抗大于98kΩ,典型值为200kΩ(典型值未在芯片手册中标明,需向原厂查询确认),如下图2所示。由于内部对地电阻是对称的,外部电路的上下拉也应该是对称的,那么为什么会测出不对称的结果呢?
图 1 RS485网络信号波形
图 2接收器输入阻抗值
解决过程
总线上的电压是分压的结果,如下图3示意:
图 3 添加了总线偏压电阻后的DC路径
是不是跟总线上的负载有关?带着这个猜想试着断开负载:先将总线上负载去掉(电路上去掉R21,R22)。测试出来如下图4所示,改善不大,基本没看出来有什么变化,还是不对称。
图 4 RS485总线AB相去掉0R电阻
其他没有别的东西了,挺奇怪,假设芯片内部A,B相标注的输入阻抗值是准确的,那么总线输出一定是对称的?难道是上下拉电阻的问题?问题是上下拉电阻是一样大啊,不可能是这个问题吧,带着试试看的心里去掉了上下拉电阻R19、R25,再次测量总线信号,如下图5所示,波形基本对称了,解决了。看来是外部上下拉电阻问题。
我理解错了,以为只要是内外电阻、上下拉电阻一样,信号就会对称。其实不然,对于RS485 总线来说:当强上拉或强下拉时,采到的信号是不对称的,举一个极端一点的例子:A用0R强上拉到VDD,那么A发1,可以输出高电平,没问题,但是当A发0时,是无法输出低电平的,这是上下拉电阻阻值造成的不对称,对于B也如此。就像MCU的GPIO一样,同一个GPIO口,它的推拉电流能力也不一样。这是造成测试出来差分信号不对称的原因。
另外一种不对称可能是由不同厂家的RS485芯片造成的,因为不同厂家的485芯片驱动能力略有差异。如果RS485网络中主从是不一样厂家的芯片,就有可能出线总线电平不对称的情况出线。
图5 RS485 AB总线断开0R+去掉上下拉电阻
有细心的小伙伴发现上面的波形好像在高低电平期间不是很平坦,这个在我们测试信号的时候经常会遇到,也很容易忽略,这其实是使用示波器之前未进行校准导致的,校准完成之后复测信号,波形图如下图6,非常完美。
图6 RS485 AB总线断开0R+去掉上下拉电阻+已校准探头
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !