| Carl Friedrich Gauß Faculty | Department of Computer Science

Implementation of a FTDI-based GPIO expansion board

SupervisorRobert Hartung
ProfessorProf. Dr.-Ing. Lars Wolf
IBR GroupCM (Prof. Wolf)
TypeProject Thesis, HiWi Job
Implementation of a FTDI-based GPIO expansion board


For various hardware-based projects it is often required or comes in handy to have access to GPIOs or busses, such as SPI or I2C. Those can be used for debugging or testing some other hardware in a prototype manner.

While well-known microcontroller platforms such as Arduino, or single-board computer platforms such as the popular Raspberry Pi offer a number of easy accessible GPIOs, these platforms also have drawbacks:

  1. They are a separate piece of hardware that are needed.
  2. Bringing software to the Raspberry Pi is sometimes hard or impossible due to the ARM architecture

To provide a simple and usable GPIO expansion board for any computer, a general purpose, hardware platform that allows easy access to GPIOs and bus systems is desired.


Your task is to use the FT2232H chip from FTDI and implement drivers to use this chip as an interface for SPI, I2C, UART, as well as GPIOs. The FTDI chips are commonly used on various platforms for serial communication over USB. However, the chips offer many more functions. In particular, the FT2232H has 4 seperate IO Channels, with 8 pins each that can be used for the aforementioned protocols. Two of them can be used for UART, and two others offer a special function for I2C, SPI or JTAG communication.

Your task is to implement a library that configures the FTDI, in order to use the protocols I2C and SPI. Additionally, GPIOs should be made available. If possible, a low-level python library should be implemented, that makes the use of the GPIOs even easier. For reference, an implementation of the I2C interface exists, that can possibly adopted. The GPIO extension board's hardware is a custom PCB that will be manufactured in advance. Note that this task can be both worked on as a project thesis and as a student research assistant (HiWi).


In case of any questions please contact Robert Hartung


The following skills are helpful for the execution of this thesis (not all of them are required!):
  • C
  • Python
  • Driver
  • FTDI


last changed 2019-05-14, 16:52 by Robert Hartung