Help with RS485 Full Duplex Enable/Disable Driver Pin and Collision Detection

I made a device and wrote some code to emulate another device on a RS485 bus. Silly me, I used 8 pin transceivers that did not have enable pins. haha So when more than 1 device is connected, the only one that is able to talk is my device. The strange thing is, it used to work, I even shipped some units. Not sure how it ever worked. Not sure why they even have versions without enable pins.

So I need to make a version 2 using enable pin on the transceiver chip to enable the driver. Luckily I have working examples to mimic, 2 different manufacturers, I will attach a couple of pictures. I assume all the components are for filtering and protecting.. Who needs those? haa Note, one manufacture used 3.3v version, the other used 5V... The 3.3 chips have 5V tolerance built in I believe.

Since this is full duplex, I read in datasheet that it is OK to leave the Receiver enabled at all times, that is the Master talking to the Slaves channel, it is the driver enabling/disabling that is going to be new for me.

I've done so much googling and reading datasheets I am questioning things I have done on my version 1 board and how I arrived at those things, but that is not important now.

First, what is the difference between a RS485 transceiver and say a Quad Differential EIA-485 Line Driver (MC75172B, MC75174B )? Same thing right?

Second, how does one handle collision detection on Full Duplex? The packet structure includes an address byte. The problem is that the bus I am connecting to has some devices that are pretty chatty. I assume collision detection is paramount? I read somewhere that it is easier on Full Duplex than it is Half Duplex? Why? Is it because the Master will send a packet to the slave's address and WAIT for a period of time for a response from that address? It must be.

Third, the enable/disable pin.. There isn't much I noticed in datasheets about this other than High to enable and Low to disable. No resistor of any kind? With the receiver pin always high, a low on the driver looks like it can also trigger the chip to go into shutdown mode (??)

Fourth, does anyone know of a library I could use for RS485 Full Duplex? It seems one's I've found are for Half Duplex.

From the datasheet I've read it looks like different RS485 transceiver manufacturers have different ways of handling transient voltages

Will be using MAX3803ECSD

Thanks for helping me get this straight in my head.

The device in the second picture is the one I am emulating. But I chose to use the chip in the first picture due to the fewer parts (filters?) ...

Yes, the device in the second picture has the 120ohm resistors, it is the end of the bus. Watch, I will probably forget to re-add those.

If anyone can identify all those components I'll make note of them.

There's a lot about RS485 in your post but the second picture says RS422 in the bottom right corner?

Yeah, I noticed. It uses 2 pairs of wires, both pictures would be on the same bus.
The second picture could be better... Should I fix? I added a bigger pic, but it seems to still scale down. just fyi.

Eddiie:
Yeah, I noticed. It uses 2 pairs of wires, both pictures would be on the same bus.
The second picture could be better... Should I fix? I added a bigger pic, but it seems to still scale down. just fyi.

Full duplex is impossible with RS-485, therefore no collision problem. Full duplex on RS422 requires two pairs of wires, as you have found out. Also no collision problems. Just data handling problems.
Paul

Curses. So it is RS422, full duplex. Ok... That helps.
No collision problems!

Waiting on parts delivery, working this out in the meantime. Thank you.

...Am I right to need the enable pins? To electrically remove myself from the TX side when not TX'ing?
Is bit banging a pin for the enable/disable fast enough or is there a register I should be setting that is faster?
I think it is only talking at 9600 baud with maybe 40 bytes max.

Sure hope this is the right path.

Eddiie:
...Am I right to need the enable pins? To electrically remove myself from the TX side when not TX'ing?
Is bit banging a pin for the enable/disable fast enough or is there a register I should be setting that is faster?
I think it is only talking at 9600 baud with maybe 40 bytes max.

Sure hope this is the right path.

The reason for 4 wires, two pairs, is so you can do full duplex. You can TX anytime and RX any time on the other pair of wires. So can the device on the other end of the wires.
Paul

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.