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?