FT2232 breakout board

Maker: Dangerous Prototypes

model: FT2232 breakout board

version: v1.0

usb connector: Mini-B

specifications:

  • USB 2.0 Hi-Speed (480Mb/s)
  • 2 Independent USB to serial ports
  • 2 MPSSE modules with I2C, SPI, and JTAG
  • General purpose IO pins
  • 3.3volts
  • Supported JTAG debugger in OpenOCD, urJTAG, and others
  • Multi-platform support, GPL drivers

The breakout board includes an EEPROM for custom USB descriptors and VID/PIDs. The I/O pins are + 5V tolerant, according to the FT2232H datasheet.

JTAG

first port

ADBUS0 - TCK
ADBUS1 - TDI
ADBUS2 - TDO
ADBUS3 - TMS

second port

BDBUS0 - TCK
BDBUS1 - TDI
BDBUS2 - TDO
BDBUS3 - TMS

async serial (rs-232)

first port

ADBUS0 - TXD
ADBUS1 - RXD
ADBUS2 - RTS# (# = active low)
ADBUS3 - CTS#
ADBUS4 - DTS#
ADBUS5 - DSR#
ADBUS6 - DCD#
ADBUS7 - RI#

second port

BDBUS0 - TXD
BDBUS1 - RXD
BDBUS2 - RTS# (# = active low)
BDBUS3 - CTS#
BDBUS4 - DTS#
BDBUS5 - DSR#
BDBUS6 - DCD#
BDBUS7 - RI#

back to microcontrollers page.

links

Getting Started with OPENOCD Using FT2232H Adapter for SWD Debugging, USB port JTAG programmer, eLinux.org Flameman/blackfin-avr-jtag,

Local links

Bus Pirate,

History

2021-09-17: I re-created this page on my self-hosted web server.

2018-07-20: e1 - config file for OpenOCD

[tingo@kg-elitebook XC6SLX9_mini_board]$ cat ft2232h.cfg
# OpenOCD cfg file for FT2232H
interface ftdi
ftdi_device_desc "FT2232H breakout board"
ftdi_vid_pid 0x0403 0x6010
# channel 1 is for custom purpose by users (like uart, fifo etc)
ftdi_channel 0
# just TCK TDI TDO TMS, no reset
ftdi_layout_init 0x0008 0x000b
#reset_config none
reset_config srst_only
adapter_khz 30000

needed an update

[tingo@kg-elitebook XC6SLX9_mini_board]$ cat ft2232h.cfg
# OpenOCD cfg file for FT2232H
interface ftdi
#ftdi_device_desc "FT2232H breakout board"
ftdi_vid_pid 0x0403 0x6010
# channel 1 is for custom purpose by users (like uart, fifo etc)
ftdi_channel 0
# just TCK TDI TDO TMS, no reset
ftdi_layout_init 0x0008 0x000b
#reset_config none
reset_config srst_only
adapter_khz 30000
transport select jtag

better now.

2018-07-20: e1 - I connected up the FT2232 breakout board to my Fedora laptop lsusb

[tingo@kg-elitebook ~]$ lsusb -d 0403:6010
Bus 003 Device 014: ID 0403:6010 Future Technology Devices International, Ltd FT2232C/D/H Dual UART/FIFO IC

ttys

[tingo@kg-elitebook ~]$ ll /dev/tty[ACU]*
crw-rw----+ 1 root root 188, 0 Jul 20 12:38 /dev/ttyUSB0
crw-rw----+ 1 root root 188, 1 Jul 20 12:38 /dev/ttyUSB1

ok.

2014-05-20: I need to solder pins and / or headers to the board.

2014-05-20: when connected to my FreeBSD workstation, running FreeBSD 8.4-stable:

tingo@kg-core1$ uname -a
FreeBSD kg-core1.kg4.no 8.4-STABLE FreeBSD 8.4-STABLE #0 r253646: Thu Jul 25 10:12:31 UTC 2013     root@kg-core1.kg4.no:/usr/obj/usr/src/sys/GENERIC  amd64

the board shows up like this in /var/log/messages:

May 20 21:33:10 kg-core1 kernel: ugen2.4: <FTDI> at usbus2
May 20 21:33:10 kg-core1 kernel: uftdi0: <Dual RS232-HS> on usbus2
May 20 21:33:10 kg-core1 kernel: uftdi1: <Dual RS232-HS> on usbus2

and a red LED on the board lights up. The board shows these serial devices:

root@kg-core1# ls -l /dev/cuaU* /dev/ttyU*
crw-rw----  1 uucp  operator    0, 179 May 20 21:33 /dev/cuaU0
crw-rw----  1 uucp  operator    0, 180 May 20 21:33 /dev/cuaU0.init
crw-rw----  1 uucp  operator    0, 181 May 20 21:33 /dev/cuaU0.lock
crw-rw----  1 uucp  operator    0, 185 May 20 21:33 /dev/cuaU1
crw-rw----  1 uucp  operator    0, 186 May 20 21:33 /dev/cuaU1.init
crw-rw----  1 uucp  operator    0, 187 May 20 21:33 /dev/cuaU1.lock
crw-rw----  1 root  operator    0, 175 May 20 21:33 /dev/ttyU0
crw-rw----  1 root  operator    0, 176 May 20 21:33 /dev/ttyU0.init
crw-rw----  1 root  operator    0, 178 May 20 21:33 /dev/ttyU0.lock
crw-rw----  1 root  operator    0, 182 May 20 21:33 /dev/ttyU1
crw-rw----  1 root  operator    0, 183 May 20 21:33 /dev/ttyU1.init
crw-rw----  1 root  operator    0, 184 May 20 21:33 /dev/ttyU1.lock

usbconfig says

root@kg-core1# usbconfig -d ugen2.4
ugen2.4: <Dual RS232-HS FTDI> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

usb device description

root@kg-core1# usbconfig -d ugen2.4 dump_device_desc
ugen2.4: <Dual RS232-HS FTDI> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0200
  bDeviceClass = 0x0000
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0040
  idVendor = 0x0403
  idProduct = 0x6010
  bcdDevice = 0x0700
  iManufacturer = 0x0001  <FTDI>
  iProduct = 0x0002  <Dual RS232-HS>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001

usb current config

root@kg-core1# usbconfig -d ugen2.4 dump_curr_config_desc
ugen2.4: <Dual RS232-HS FTDI> at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON


 Configuration index 0

    bLength = 0x0009
    bDescriptorType = 0x0002
    wTotalLength = 0x0037
    bNumInterfaces = 0x0002
    bConfigurationValue = 0x0001
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x0080
    bMaxPower = 0x00fa

    Interface 0
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0000
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0002
      bInterfaceClass = 0x00ff
      bInterfaceSubClass = 0x00ff
      bInterfaceProtocol = 0x00ff
      iInterface = 0x0002  <Dual RS232-HS>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0000
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0002  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0000
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0002
      bInterfaceClass = 0x00ff
      bInterfaceSubClass = 0x00ff
      bInterfaceProtocol = 0x00ff
      iInterface = 0x0002  <Dual RS232-HS>

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0083  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0000
        bRefresh = 0x0000
        bSynchAddress = 0x0000

     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0004  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0200
        bInterval = 0x0000
        bRefresh = 0x0000
        bSynchAddress = 0x0000

that's it for now.

2014-05-20: This afternoon, I picked up the package at my local PIB, RIMI Trondheimsveien. The package contained two items; 1 x FT2232 breakout board, 1 x Bus Pirate (ordered separately, but from the same seller).

2014-05-19: got a pickup note from the Postal service.

2014-05-12: got a notification that the board was shipped.

2014-05-11: from a seller on eBay, I ordered a FT2232 breakout board for USD 29.- shipping included. NOK 178,84 according to payment processor.