当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+去掉上下拉电阻+已校准探头