Electronic – TTL to 232 with no conversion

rs232ttl

I was reading a blog about someone's application to ingest a TTL signal to a device and got perplexed.

The author connects what appears to be a 3.3V TTL signal directly to a RS232 port (and it apparently works!). Shouldn't it just read 0 and undefined since 232 is 1: [-3,-25] and 0: [3,25]? Does the undefined maybe count as a change that essentially acts as not 0?

Am I missing some simplification or principle?

The blog is here

Best Answer

Many (if not most?) RS232 receivers actually will accept unipolar signals not reaching officially valid logic levels.

However RS232 line drivers and receivers have by tradition essentially always been inverting, so if you want to use this trick with an MCU or whatever following usual conventions, you need an inverter. (A very few UARTs have a mode bit which applies inversion)

Way back when, for casual experiments I'd sometimes use the 1489 line receiver which did not require the extra supplies, but then lacking those supplies, for the transmit path just use a TTL NAND gate, which had only minimal differences from the pinout of a 1488 anyway.

Utilizing beyond-specification behavior is the kind of thing you can do for personal experiments in tame electrical environments where unreliable operation isn't the end of the world. It's not something you do in a product, or where failure has consequences.

Keep in mind that charge-pump RS232 level shifters have been inexpensive for decades now. And with most computers not having actual RS232 ports any more, unless you are dealing with equipment it's typically simpler to just get a "logic-level USB-UART cable" (as commonly sold for Arduino/pi projects) to connect to your PC, than a "USB-RS232 Serial" adapter. The former typically has a header or discrete wires, the latter a 9 pin D-shaped connector shell.