3

Checking out online stores for a USB/TTL adapter, I came across a wide range of products, and I'm having a hard time selecting the one which would achieve the highest data rate. I was comparing datasheets of the chips I have seen so far, to understand which baud rates are supported:

  • FT232R (FTDI): 183 to 3M baud, including 250k, 500k and 1M, 128 RX / 256 TX FIFO
  • PL2303 (Prolific): 75 to 1.2M baud, not including 250k, 500k and 1M, 256 RX / 256 TX FIFO
  • CP2102 (Silicon Labs): 300 to 921600 baud, including 250k and 500k, 576 RX / 640 TX FIFO
  • CH340G (WCH): 50 to 2M baud, not including 250k, 500k and 1M, unknown FIFO size

As explained here, 500k, 1M and 2M are particularly important, because those are the highest baud rates supported with 16MHz crystals. Moreover, data transmission becomes CPU-limited above 500k, so real data rates are practically the same with all three baud rates.

Am I right to assume that in order to get the highest data rate, I essentially have to stay away from PL2303, and prefer FT232R adapters, the other two chips being in the middle? Or are there other factors that I didn't take into account which may affect my choice?

  • 2
    If you really want a high data rate then you should use an Arduino that supports USB natively so you can bypass the bridge entirely. – Ignacio Vazquez-Abrams Dec 8 '16 at 1:18
  • @IgnacioVazquez-Abrams, the 32u4 for example does support USB – Dat Ha Dec 8 '16 at 1:28
  • 1
    @IgnacioVazquez-Abrams Obviously, the question makes no sense for boards with native USB support. If I were to use Atmega32u4, why would I be shopping for a UART adapter? – Dmitry Grigoryev Dec 8 '16 at 8:31
  • At higher data rates the quality of the connection between the UART bridge and the main MCU becomes a factor. I have had reliable communication between FT232 and a PIC32 at 3Mbaud with both chips on the same board and properly routed traces. With separate boards I struggle to get reliable communication at 2Mbaud with 1Mbaud being about the limit. – Majenko Dec 8 '16 at 10:15
  • 1
    @DmitryGrigoryev Thanks for adding the FIFO size. It is actually important to understand how data flows. The USB signalling/protocol is not each character and it has its own "baudrate". Buffering allows bursts of packages and reduction of the signaling overhead (upstream), and helps even out bit-rate (downstream). – Mikael Patel Dec 9 '16 at 11:08
2

Here's my experience with the above chips over the last two years:

FT232R is the fastest, works well with any baudrates. UART adapters with it are sometimes more expensive than alternatives.

PL2303 is good if you don't plan to go faster than 115200. Additionally, it has the strongest 3.3V reference (available on some adapters as 3.3V output) which can be abused as a 3.3V 20mA power supply. Other chips will refuse to work if you draw more than 5mA from the 3.3V reference.

Prolific is currently fighting against clones by making their up-to-date drivers incompatible with non-original chips, so if your adapter won't work in Windows with code 10, take a look at this page.

CP2102 which looks great in theory didn't work well for me (in Windows 10, with driver v10.1.3). Bulk data transfers at 115200 were in some cases 4 times as slow compared to other chips.

CH340G has a sketchy-looking windows driver, but otherwise works quite well and is often the cheapest option available. Unfortunately, it lack the intermediate baud rates, and getting 2Mbps UART link to work may be hard sometimes. Arduino clones which have this chip on-board do work at 2Mbps without issues (the ones I have seen do, anyway).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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