|USB to JTAG, and JTAG to JTAG adapters|
Four JTAG and/or SWD ports are provided for compatibility with a variety of development boards: 6-pin ST-LINK, 8-pin LPC-Link, 10-pin JTAG, 20-pin JTAG.
Using one of two plug in modules, the 10-pin is either 0.05" pitch or 0.1" pitch. I plan to include both 10-pin formats on any revisions to this JTAG board so I can easily adapt between the formats.
When used as a USB JTAG adapter, only one of the JTAG or SWD ports is used. Note that pin 1 is consistently in the upper left on this board. Ribbon cables or socket cables are used to connect to the target board. It is useful to have sets of cables that support all these pin-out formats. Cables are quicker and easier than single conductor jumpers between individual connector pins.
An alternate use is to adapt from one pin-out to another when using other JTAG and/or SWD programmers. In this case the mini module can be removed or simply disconnect the USB cable from the computer. The board is only being used to convert pin-outs. For example, I can use a 6-conductor socket to socket cable to connect the ST-LINK port to the ST-LINK socket on my STM32F4Discovery board, and then connect the LPC-Link socket via an appropriate cable to an LPCxpresso board. I have used this method to program and debug my LPCxpresso board for LPC1343 with CooCox IDE.
Multiple JTAG adaptions are possible
- ST-LINK to LPC-Link
- ST-LINK to 10-pin
- ST-LINK to 20-pin
- LPC-Link to 10-pin
- LPC-Link to 20-pin
- 10-pin to 20-pin
- 10-pin (1.27mm) to 10-pin (2.54mm) in future revision
Boards I was able to communicate with either with OpenOCD, ST-LINK, or CoLinkEx using the JTAG adapter(s) board include:
- Netduino Shield Base Beta (STM32F205RE)
- Netduino Plus 2 (STM32F405RG)
- Arduino Due (ATSAM3X8E/AU)
- Simplecortex (LPC1769)
- STM32F4Discovery (STM32F407VG)
- CooCox Embedded Pi (STM32F103RB)
- NGX LPC1830-Xplorer
- Olimex SAM7-P256 (AT91SAM7S256)
- LPCxpresso for LPC1343
Caveats and Warnings. Note that I did not do extensive testing. I am not sure the RESET and RTCK lines are working. Some boards I could only connect to using SWD instead of JTAG. Driver installation and basic use of OpenOCD is not described in this post, so see Getting Started with OpenOCD.
Inspiration and References. Most of the JTAG circuit is gleaned from multiple FTDI specifications regarding the FT2232H, Mini Module, and related MPSSE Basics Application Note AN_135. And the circuit is very similar to the FLOSS-JTAG one shown here.
|Under belly of the JTAG board|