Electronic – RS-485 differential signals won’t “cross”

rs485

I have an issue where a certain controller which uses a RS-485 tranceiver (unknown, due to third party device in epoxy resin) sends data on a bus so that signal levels won't cross.

The signal looks like this (yes, I know, measured on oscilloscope with grounded leads connected to device's GND, each channel on bus's A and B).

First data packet is sent from my tranceivers SN65HVD1781A-Q1,
second is sent from a third party tranceivers (which chip I can't know due to epoxy resin fill)

enter image description here

It looks like, my receiver end won't see the signals 'low enough' to register them correctly. Without this TI tranceiver, I can read the third party controller from a dongle easily.

  • This picture was generated using a 150 Ohm termination on my tranceiver side. Although third party insisted using no termination resistor – not sure why.
  • Interesting is that

schematic

simulate this circuit – Schematic created using CircuitLab

a) Third party with rs485 USB dongle (no TI's tranceiver) – receive and send works works.

b) SN65HVD1781A tranceiver with Dongle works (no third party)

c) SN65HVD1781A tranceiver with third party (with or w/o dongle) – has this issue.

So either me or the third party might somehow drives the bus at the same time…

How Could I mitigate this anomaly?


Not a direct solution

On test setup I can't access the DE or nRE pins :/, but yes, seems there's some firmware issues. Started to rewrite the send and receive parts, just to confirm, single send or receive parts are working. Currently everything seems to go positively.

Best Answer

This is a quick guess, but it smells like your transceiver is not releasing the bus. The other transceiver is then fighting against yours when trying to drive the lines to their opposite states. Yours appears to work fine since it doesn't have to fight with anything else on the bus.

Look carefully at your code and see if you properly release the line when done transmitting. Or, sometimes this is done in hardware. Either way, take a close look at this mechanism. It is likely faulty.

Have your device send a message with nothing else connected to the bus. Then afterwards measure the current it takes to short the high line low and the low line high. I suspect you'll find that current is a lot more than it should be according to just the passive bus pullups and pulldowns.