[updated with final, working waveform at end of question]
Teensy is configured to user Serial2 for that connection. And if I connect a CP2102 on Serial2, I do get proper serial communication at 19200 baud 8N1. This confirms the pins are correct, and the UART is functioning.
Serial from the remote device arrives over three conductors; Ground, Tx, Rx.
I connect all three to the level shifter and find this nice clean waveform across Ground and TX (RS232 Pin 2) which is labelled on the shifter schematic as RS-OUT >
When I use Vcc=3v3 from the Teensy, I see this waveform on the Rx line (JP2 Position 4)>
And while my scope can decode the serial data, my Teensy is not recognising the serial data.
The only obvious thing I can see wrong is the DC offset..
Should this kind of TTL waveform work directly into a UART? Do I need to pull up or down for proper TTL levels??
Have I wired it incorrectly? (This RS232 cable works when I connect to a USB<>RS232 dongle and plug it into a computer.)
Yes, I had wired it incorrectly; The DB9 pinouts needed to be swapped for TX/RX.
With the correct voltage swing applied at the correct places in the shifter, logic levels are what they should be.
Note that the above screen grab is 5v/div.
This one is a closer look at 1v/div.
The teensy is now happily reading from that TTL signal.
Scope is the Rigol DS1054Z, and it's configured for Cat5 Ethernet connected to a Mac. Screen captures are thanks to a Python project that I installed with
$ pip install ds1054z[savescreen,discovery]. Then getting the screen captures is simply:
$ ds1054z save-screen 10.0.0.6 ds1054z-scope-display_2016-07-20_20-31-00.png
The RS232 decoding is accessed through the [Math] button near the channel selection buttons. You need to change the [Polarity] option of the decoder when monitoring the TTL result from the shift circuit.
I was powering this with VCC=5V, and produced RX-I logic levels accordingly. Teensy is happy with 5V TTL, but it produces 3V3 logic levels for output.
5V VCC demands TX-O be driven with 5V TTL signal. The TX and RX lights flickered just fine, but no RS232 TX signal was generated.
Switching to VCC=3V3, the shifter detected the TX logic levels correctly, and produced the expected RS232 TX signal.