I have a USB dongle which converts TTL UART signal from a microcontroller to USB level signal using level converter. I has six pins Vcc, GND, RTS, CTS, TXD, RXD. My microcontroller has two pins for UART which are RX and TX. my microcontroller is Atmega16L and the USB dongle is RN-SRL-PRO3V-DGL from Roving Networks.

I need to know how to connect micro to USB dongle. Is it RXD connected to RX and TXD connected to TX. or is it the other way around (RXD to TX and TXD to RX).

Any help is much appreciated. Thanks

  • \$\begingroup\$ In my experience the connector is labeled from the PC point of view. The RX is the PCs receive channel. A scope is a good way to see which is TX or RX. TX is being actively driven and RX will be open. \$\endgroup\$
    – kenny
    Commented Jun 1, 2012 at 1:13
  • \$\begingroup\$ yeah i had put it on the scope i found that the TX pin on the microcontroller is always high. I found that really strange. Is that normal? \$\endgroup\$ Commented Jun 1, 2012 at 1:18
  • \$\begingroup\$ @DavidNorman Write a small test code that transmits one byte (something like 0xA5) in a loop. Then, if you have configured the UART correctly, you'll see this byte on the TX pin with the oscilloscope. \$\endgroup\$ Commented Jun 1, 2012 at 1:53
  • \$\begingroup\$ I have done something similiar by using a serial Emulator. The problem is when I send something through the emulator its not detected at the TX pin of the dongle. I presume I did something wrong and now the dongle is not working. But the LEDs on the dongle still work. \$\endgroup\$ Commented Jun 1, 2012 at 2:00
  • 2
    \$\begingroup\$ This is just wording, but I wouldn't call it a "level converter" that just implies you are changing the level of the signal, but the IC is doing a lot more than that. \$\endgroup\$
    – Kellenjb
    Commented Jun 1, 2012 at 2:20

2 Answers 2


If the Dongle output is TTL and no RS232 converter IC is expected between the dongle and target controller then positive logic is usually used.
The TX line from the dongle = RX line into target will be high when idle. The dongle rx line = target tx line expects a high = +5V in idle state. Start bits are 0V and stop bits are 5V. The dongle TX line = target RX should be "stiff enough" to drive say a 1kohm load and still return say 4V+ when idle. Loading the dongle rx line with a 1k to ground or +5V should pull the line to the appropriate level.

If the Dongle output is true bipolar RS232 (+/- relative to ground) and negative logic is used then the TX line from the dongle = RX line into PC etc should be negative when idle. The RX line of the dingle = TX line of target expects a low = say -5V to -12V when idle. Start bits are positive wrt ground. Stop bits are negative wrt ground.

To make the dongle work you may need to loop back RTS to CTS.

  • \$\begingroup\$ so simple words. I'm getting a logic high from the TX pin in idle mode from the micro so thats normal rite? \$\endgroup\$ Commented Jun 1, 2012 at 3:55
  • \$\begingroup\$ @DavidNorman - Yes. \$\endgroup\$
    – Russell McMahon
    Commented Jun 1, 2012 at 4:24
  • \$\begingroup\$ sweet you're the man. why is this stuff so hard \$\endgroup\$ Commented Jun 1, 2012 at 5:59
  • \$\begingroup\$ Do i still need to loopback RTS to CTS on the dongle even if im using 'no hardware flow control'? \$\endgroup\$ Commented Jun 3, 2012 at 22:57
  • \$\begingroup\$ You MAY get away without joining RTS & CTS when no flow control or software flow control is used, and may not. Because: The "no hardware flow control" comment may come from a higher level and nobody may have told the hardware. ie if the whole system was designed and implemented by one competent designer then you'd expect not to have to join them. If you cannot be sure if this is the case (but can guess with fair certainty that it's not) then joining them may be needed. [This is "so hard" because it 'grew like topsy' and the 'standard' has been rerereinterpreted thousands of times.] \$\endgroup\$
    – Russell McMahon
    Commented Jun 4, 2012 at 0:44
USB-Dongle-TXD pin is output ---> copper ---> input RXD pin of Atmega.
USB-Dongle-RXD pin is input ---< copper ---< output TXD pin of Atmega.

I checked with datasheets for Prolific and Atmega. Both chips have TXD as output and RXD as input.

  • \$\begingroup\$ Thanks Rocket Surgeon. I have the exact connection with the micro but still no communication. The baud rate and the settings on the micro are exactly the same as the dongle. What should i do with the RTS and CTS pins on the dongle? right now I shorted them. \$\endgroup\$ Commented Jun 1, 2012 at 2:01
  • \$\begingroup\$ Yes CTS-RTS should be shorted to each other. Do the same for DTR-DCD \$\endgroup\$
    – user924
    Commented Jun 1, 2012 at 2:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.