Here is a neat trick I learned today – changing FTDI FT232 interface levels on the fly. An ever popular FT232RL-based USB to serial converter typically comes in two varieties: one is configured for 0-5V logic levels on its TTL pins and the other one for 3.3V. It is usually done by connecting
VCCIOpin of FT232 either to 5V coming from USB VBUS or 3.3V from FT232RL internal regulator. Both Sparkfun’s Basic Breakout and Adafruit’s FTDI Friend are made this way. This power arrangement works quite well for simple situations. For more difficult ones, it is possible to make this circuit more clever with a simple modification.
I’m currently working on a controller with battery backup. If regular 5V disappears, the MCU gets its power from a small lithium battery. Debug messages are sent to a PC via UART and I need to see them in both modes of operation, the most interesting being events which occur during the power switch. For the reference, ithium battery through a Shottky diode gives ~2.9V.
That’s how I handle this: The
VCCIO pin is disconnected from the rest of the circuit and connected directly to a power pin of the MCU. Since voltage on
VCCIO defines the TTL level, the serial communication is functional throughout the whole voltage range of my system. Title picture shows the implementation. I’m using very old Sparkfun “full” FT232RL breakout board, where all pins are available on the side headers. More compact “basic” boards can also be used by simply opening both sides of the power selector jumper and using pad named ‘VCC’ or ‘POWER’ (the pad which is typically used to provide power to the MCU) to connect to MCU power.
I have tested the functionality down to 2.7V and everything works quite nicely. I haven’t checked the datasheet for VCCIO voltage limits but I would imagine it should stop working at about 1.8V. In any case, undervoltage shouldn’t cause any damage to the chip.