We are using a Beaglebone Black with the Osso Cape (https://github.com/nexlab/Osso) for comunicating with other equipment using a 485 connection and Modbus RTU.
The driver enable (DE) pin of the cape's DS485 chip is tied to the GPIO 2_24, while the RO and DI pins were tied to the UART1 RX and TX respectively.
We haven't write any code to act on the GPIO2_24 at all, other than a cape overlay that sets it as output and pin Mode GPIO.
We were troubleshooting some communication problems when we noticed something strange: Using an oscilloscope, we saw that the driver enable (DE) pin was always high, but somehow the Beaglebone was able to normally send requests and receive correctly responses from the other equipement.
Normally I would expect that the 485 comms only worked with the DE pin HIGH when transmitting and LOW when finished, to avoid driving the bus when other equipment respond.
In other capes we used, this was controlled using UART4 RTS, but I could not explain why it seems to work in this case.
Is there any explanation on why it works with the DE always on?
EDIT: The datasheet (http://www.ti.com/lit/ds/symlink/ds485.pdf) says:
Due to the multipoint nature of the bus, contention between drivers may occur. This will not cause damage to the
drivers since they feature short-circuit protection and also thermal shutdown protection. Thermal shutdown
senses die temperature and puts the driver outputs into TRI-STATE if a fault condition occurs that causes
excessive power dissipation which can elevate the junction temperature to +150°C.
Maybe the chip senses contention and goes to high-impedance state, then being able to receive the response from the other equipment?
Best Answer
It is quite possible that the state with the driver always on would allow communications to work in both directions due to the overall current limit and effective output impedance of the driver.
You do want to correct this however because the driver in this condition will be under unnecessary stress and drawing way more current from your power sources than necessary. A stressed driver chip may very well have a shortened life. The correction of course is to devise the programming necessary to drive the GPIO to turn off the driver once transmission is complete.
Turning off the driver at the correct time can, in some cases, require some careful work. Due to the fact that the sending UART port will spend time sending the last loaded data bytes after the final data is loaded there is a need to comprehend when sending is complete. Some considerations...