Electronic – How does “RS485 Pi” 2-wire transceiver connection work

raspberry pirs485

enter image description here

I'm familiar with connecting a RS485 transceiver with a separate DE wire. However, on this pi hat, they used just Rx and Tx, and I'm not quite sure how it works. (or does it work?)

Looks like the transceiver switches to Tx with each transmitted 0, and then immediately goes back to Rx mode? Wouldn't the bus enter some kind of 3-state mode then, instead of sending 1? Or is this some hack with the gate capacitance?

Best Answer

This circuit indeed transmits a zero as a RS-485 zero signal and a one as an idle state.

Most RS-485 receivers have a (built-in or discrete) fail-safe circuit that reads the idle state as "1". So in most cases, this hat will appear to work.

However, without an actively-driven "1" signal, there is no noise margin (which would be the whole point of using a differential bus like RS-485). So when you move your device from the lab bench to the real world, it's much more likely that the transmitted data will be corrupted by noise.

If you know the baud rate of the UART, it would be possible to construct a circuit that detects the start bit and then enables DE for the exact time needed to transmit the entire byte. But in the general case, a RS-485 transceiver requires a separately conntrolled DE/R̅E̅ signal.