RS-232 vs RS-485: the electrical story
Both come out of a UART, both get called “the serial port”, and both have survived every technology that was supposed to replace them. But electrically RS-232 and RS-485 are built on opposite philosophies: one moves a voltage referenced to ground, the other moves a difference between two wires and barely cares where ground is. That single design decision explains every practical difference between them — distance, speed, node count and noise immunity.
The same bits, three electrical layers
Figure 1 — One byte, three wire formats. Note that RS-232 is logically inverted: a “1” is a NEGATIVE voltage.
Three things in this picture surprise people the first time:
- RS-232 logic is inverted. A logic “1” (mark, the idle state) is −5…−15 V; a logic “0” (space) is +5…+15 V. This is why you can’t wire an MCU pin straight into a 232 port — the transceiver (MAX232 and friends) both shifts the level and inverts it.
- RS-232 has a forbidden zone. Anything between −3 V and +3 V is undefined. The fat noise margin was the point in 1960 — but it costs big voltage swings, which is exactly what limits speed and distance.
- RS-485 doesn’t care about absolute voltage. The receiver looks only at the sign of (A−B), with a threshold of just ±200 mV. The driver guarantees at least ±1.5 V across the pair under full load — leaving more than a volt of margin for attenuation and noise.
Why differential wins in a noisy plant
Industrial noise — contactor arcs, VFD output cables, welding equipment — couples into cables. The trick of RS-485 is the twisted pair: both conductors run through the same fields, so the noise appears identically on both wires. The receiver subtracts one from the other, and the noise subtracts itself out.
Figure 2 — Common-mode rejection at work. The spike rides on both wires; the difference doesn’t see it.
The same mechanism handles a problem RS-232 fundamentally cannot: ground potential difference. Two cabinets 300 m apart never sit at the same earth potential — volts of difference are normal, and during faults much more. RS-232 is a ground-referenced signal, so that difference adds directly onto the data. RS-485 receivers are required to work over a −7 V…+12 V common-mode range, so the shifted ground simply slides both wires together and the difference survives. (Beyond ±7 V you reach for isolated transceivers — standard practice on anything that leaves the building.)
The numbers side by side
| RS-232 | RS-485 | |
|---|---|---|
| Signaling | single-ended vs GND | differential (A−B) |
| Driver levels | ±5…±15 V | ≥ ±1.5 V into 54 Ω |
| Receiver threshold | ±3 V | ±200 mV |
| Logic sense | inverted (1 = negative) | non-inverted (1 = A > B) |
| Common-mode tolerance | none — ground is the reference | −7 V … +12 V |
| Topology | point-to-point | multidrop bus |
| Devices | 1 driver, 1 receiver | 32 unit loads (up to 256 with ⅛-UL parts) |
| Distance | ~15 m | 1200 m |
| Speed | ~115.2 kbit/s practical, 1 Mbit/s short | 10+ Mbit/s short, 100 kbit/s at 1200 m |
| Duplex | full (separate TX/RX) | half on 2 wires, full on 4 (RS-422 style) |
| Extras | handshake lines (RTS/CTS/DTR…) | none — data pair only |
Figure 3 — The rate–length trade. RS-485’s curve is bounded by cable loss and reflections; RS-232’s box is bounded by its own slew-rate limits.
The speed–distance curve is worth internalizing: RS-485 holds ~10 Mbit/s out to a dozen meters, and the classic rule of thumb is rate × length ≤ 10⁸ bit·m/s beyond that. RS-232 was never meant to leave the desk: its high-swing, slew-limited drivers top out around 115.2 kbit/s over a few meters of cable.
RS-485 only works if you wire it right
A differential bus is a transmission line, and it collects three classic installation mistakes:
Figure 4 — Daisy chain, terminate both ends, bias once, carry the common. The star goes in the bin.
- Termination. One 120 Ω resistor at each physical end of the bus — two total, nowhere else. Unterminated ends reflect every edge back down the cable; over-terminated buses load the drivers down. Short, slow buses (a few meters at 9600) often forgive missing termination, which is exactly why the habit breaks on the first long installation.
- Fail-safe biasing. When no driver is enabled, the pair floats and receivers amplify noise into garbage characters. A pull-up on A and pull-down on B (560–720 Ω at one node, usually the master) holds the idle difference above +200 mV so every receiver reads a clean mark. Many modern transceivers have “full fail-safe” receivers that make this optional — check the datasheet before, not after, the commissioning trip.
- Topology. Daisy chain, always. Every long stub or star branch is an unterminated transmission line that reflects. And run the signal common — RS-485 is differential but not magic; the common-mode range still has to be respected, and a third conductor (or the shield, grounded at one end) is what keeps both nodes inside it.
One more half-duplex detail that bites firmware people: driver-enable turnaround. On a 2-wire bus the master must drop DE right after the last stop bit, or it tramples the slave’s reply. Do it in the UART’s transmit-complete interrupt (not “TX register empty” — that fires a full character early), or pick a transceiver with automatic direction control.
Which one for which job?
RS-232 is still the right answer for a debug console, a bench instrument one meter away, or legacy equipment — it’s full-duplex with zero direction-control headaches, has hardware handshake lines if you need them, and every USB adapter on earth speaks it.
RS-485 is the right answer the moment any of these words appear: multiple devices, another cabinet, another building, VFDs nearby, “the cable runs in the tray with the power wiring.” Distance, multidrop and common-mode tolerance are exactly what it was designed for — it’s why Modbus RTU, PROFIBUS and DMX512 all ride on it.
The shortest version: RS-232 connects two things on a desk; RS-485 connects a plant.