This document describes some prototype USB-to-JTAG interfaces I built
with the FTDIChip FT2232C device. The primary purpose was to develop
a USB-connectable JTAG interface for the Open On-Chip Debugger
One very useful feature of the FTDIChip FT2232C devices is that it can drive
a fast synchronous serial interface like SPI or JTAG. To do that, channel one
of the two-channel FT2232C has to be switched to "MPSSE" mode. The maximum
clock frequency to achieve is about 6 MHz.
The other channel of the FT2232C is available for arbitrary other tasks. A
typical usage is to establish a UART connection to a microprocessor target
while channel one at the same time serves a JTAG connection.
Note that all the JTAG interfaces built with the FT2232C lack the
adaptive clocking feature, i.e. the RTCK (return clock) JTAG signal offered
by some ARM controllers, e.g. the Oki 67Q4xxx, is not supported.
Please see also my OpenOCD page:
This was the very first demonstrator to show that a JTAG port can be
driven with a FT2232C chip (I think it was in 2004). I mounted a ready
to use FT2232M module by DLP Design on a
prototyping PCB and did the wiring by hand. You can buy these modules
e.g. at Elektronikladen or
Photography of the first prototype using a FT2232C DIL module (USBJTAG-1)
My second prototype is a PCB with about 7 x 6 cm size with the following
components on board:
FT2232C with 93C56 EEPROM
Step up/down regulator to guarantee 5.0 Volt from 4.5 to 5.5 USB Voltage.
RS-232 Level Shifter (MAX3241)
ADuM1401BRW I-Coupler for JTAG port level shifting and electrical isolation.
RS-232 connector D-SUB9
Be aware, the design has some flaws:
The I-Coupler does not work at highest speed (ca. 6 MHz). It can only be
used with 3 MHz and slower. The reason is, that the couplers have a rather
large propagation delay of about 50 nsec.
The I-Coupler can only be used for 3.3V and 5V targets. Future target
voltages, especially 2.5 and 1.8V are not supported.
The reset signals SRST and TRST are not 3-state signals. Depending on the
schematics of the target this can cause problems.
USBJTAG plugged into an extension board
Nearly all signals of the FT2232C can be accessed on the bottom board.
Joern Kaipf's OOCD-Link
[2006-02-26] During Embedded World 2006 I came into contact with Joern Kaipf.
He designed a JTAG interface with MAXIM level shifters which supports a target
voltage range from 1.2 to 3.6 Volt. The following photography shows this
One year later I met Joern at Embedded World 2007. He now also has built a
version of the OOCD-Link adaptor which directly uses the FT2232 signals to
drive the target. This works for targets running with 3.3V and 5V. A nice
additional feature is the 10-pin header which carries the UART signals of
channel B. The adaptor is called "OOCD-Link-S". Please see the following
Joern will give the PCB files to anyone who is interested in building
such an adaptor. His E-mail address is joern (at) joernline.de. See
also Joern's homepage http://www.joernonline.de.
The commercial adaptors
The following adaptors are all based on my original design using the
FT2232. However the commercial adaptors have a differing pin usage and
have much better support for a wide target voltage range than my
Amontec JTAGkey and JTAGkey-Tiny
Amontec sells a USB-to-JTAG interface also based on the FT2232C.
It does not use the I-Coupler but much faster buffer devices specialized for
level shifting (but not for electrical isolation). Target voltages down to
1.8V are supported. Please see the following link to the "JTAGkey":
Note that the JTAGkey uses a wiring of the FT2232 signals different from
Due to the rather high price for JTAGkey Amontec later designed a cheaper
JTAG adaptor, the JTAGkey-Tiny. I recommend to buy this adaptor
because it is really "tiny" and its price is reasonable. It directly
fits into a standard 20-pin JTAG header. On the side opposed to the
JTAG header it has a Mini-USB connector with 5 pins.
Olimex manufactures and sells many variants of reasonably priced ARM7
and ARM9 board. If you consider to start with ARM controllers you
should go to http://www.olimex.com. They also
have the following JTAG adaptors supported by OpenOCD:
Powered by ScribeFire.