With USB interfaces on microcontroller devices a USB connection always adds significant cost to the design. An ATMega328P costs $3.12 whereas the FT232RL, an old time favorite of makers, costs $4.50 in singles. This makes adding a USB UART interface to your project fairly cost prohibitive. Some products get around this by offering a USB UART “dongle” that is reusable across other boards and products (see the Prop Plug). To help reduce cost the Arduino platform switched from the FT232RL to a ATMega8U2 with the release of the Arduino Uno (The current Uno uses a ATmega16U2). The ATMega8U2 is almost a whole dollar cheaper then the FT232RL. This solution however requires quite a bit of extra hardware and another crystal on the board which increases the cost of the solution a bit. We can do better then this though.
For most microcontroller devices you only need a simple UART bridge. The FT232RL is overkill for most applications it is used in. The less complex FT230X only runs $2.04 in singles and uses less external components then Arduino’s ATmega8/16U2 solution. The FT230X is essentially a cut down FT232RL with added USB battery charge detection. It won’t give you all the serial interface signals (DTR, RI, DSR, DCD) or as many CBUS I/O but it will work for most projects.
The FT230X only requires a couple caps and resistors to get it up and running. It may require some programming with FTDI’s FT_PROG which we will cover in a future blog post. Below is the bare bone requirements to use the FT230X. This is based off of page 22 of the FT230X datasheet. One of the interesting features of the FT230X is it has built in ESD protection for around 2.5kV to 3kV (see page 5 of this datasheet) which is adequate for most embedded solutions.
The above circuit is for a USB powered device up to 100mA and 3.3V I/O on a microcontroller. This has to include the FT230X which draws around 8mA under normal operation. R1 and R2 are for edge rate control on the USB signal. Capacitors to ground can be connected to the D- and D+ USB lines but are not completely necessary. L1 is an inductor to help keep noise off the 5V bus. The RTS# signal from the FT230X should be tied to the reset signal on the microcontroller being used though a small cap like C4. This signal can be set to be either active high or low depending on how your microcontroller’s reset signal functions.
Next week we will take a closer look at FTDI’s FT_PROG software to program the EEPROM on the FT230X to expand the FT230X’s functionality.