Right to the point: On a BPI-R3, should connecting the UART debug pins directly to the appropriate pins on a DB9 USB serial adapter (rx->tx, tx->rx, gnd->gnd) work? Because I’m just getting a garbled mess in my serial console. I’ve tried all different baud rates. I’m using a high quality serial adapter (Keyspan Tripp Lite). I’ve tried on Linux and Windows. I assume I’m missing something stupid.

To make matters more annoying, I have a $5 almost certainly counterfeit USB serial adapter with USB on one end and DuPont connectors on the other end and it works fine, so at this point my problem is mostly academic. I would like to know what I’m doing wrong, though.

  • pneumapunk@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year ago

    In addition to the voltages being different between real-RS232 and “TTL”-serial, they’re also swapped. On a DB9 you probably have something approximating RS232, where mark=-9V and space=+9V, but the debug header is likely mark=+3V and space=0V. So even if your inputs can handle a wide voltage range, the sense is inverted, which is why you’ll get garble.

    (For example, when the line is idle it’s at the ‘mark’ voltage and the receiver knows a character is incoming when it transitions to ‘space’ for one period (the start-bit). If mark and space are swapped, the receiver will see ‘space’ most of the time and only detect a character starting when there are some ‘mark’ bits in the middle of a transmitted character. It’ll never actually synchronize correctly with the transmitter.)

    You can figure out what you’ve got with a multimeter and checking what the voltage is on the TX pin when it’s idle.