Microchip pic16f877 to FTDI USB interface

This is a simple design that interfaces a PIC 16F877 microcontroller to the USB bus using the FTDI FT245 USB FIFO device. It has been designed using a simple single sided PCB with only one surface mount device, the USB chip itself. All schematics, PCB layouts and software are available for download

This work is licensed under a Creative Commons Attribution 3.0 Unported License.

Update, May 2nd 2011.
A datalogger design is in progress based around this PCB design is currently in development.
You can also use the FTDI UM245R USB to FIFO module and a breadboard to implement this design.

This design uses the old, FT245BM device, which has been surpassed by the newer FT245R device. The FT245R incorporates the
configuration EEPROM, oscillator and USB config/pullup resistors, thus simplifying the design. Any new designs should use the updated device.

I have published details of my design based around the FT232R,USB to serial device with a PIC16F88 built-in.


fifo-interfaceDesign overview
Accessing the USB device using a PIC
The hardware design
PCB layout
V1 to V2 PCB
First tests of assembled PCB
Configuring the USB device under windows
The PIC software required
Installing the drivers
Setting up hyperterminal
More example software
Design overview

As stated in the introduction the design uses the FTDI FT245BM USB FIFO device. This part handles all the details of
communicating via the USB bus, all it needs is a simple, 1KBit serial EEPROM to hold some USB configuration
information and you are ready to go.

The FT245 has the following interface to the microcontroller (taken from the databook)

D0 to D7 comprise the 8 bit data bus interface, in this design it connects to
PORT D of the PIC micro controller.

RD# and WR are the Read and Write pins of the device, they connect totwo
output pins on PORT C of the PIC microcontroller Both signals are active low.

Finally, RXF# is the RX FIFO flag, when logic 0, it indicates there is data to be
read from the device. TXE is used to indicate that it is possible to write to the FIFO
device, logic 0 indicates it is OK to write data. Both of these signals connect to input
pins of PORT C of the PIC microcontroller.

Accessing the USB device using the PIC

For the PIC to talk to this device is reasonably straightforward. To write data, you set PORTD as outputs,
present a byte of data on D0-D7, toggle WR from high to low, wait a bit then toggle WR high. The data gets
latched into the device on the rising edge of WR. Finally set PORT D as inputs (high impedance state)

To read data, set PORT D as inputs, toggle RD from high to low, wait then read the 8 bits of data presented on D0-D7. Toggle RD to high to
complete the cycle.

The FT245 data sheet provides the full timing for the device but even with a 20 MHz PIC, as used in my design, an external cycle takes 200ns,
4x the minimum 50ns cyles in the device data sheets, there will be no timing issues.

The hardware design

Before going into any further detail, I present the schematic of my design below, click to enlarge.

Schematic PIC USB

It is fairly straightforward, the USB interface is copied from one of the FTDI example designs and the PIC interface is straightforward enough.
Note: the FTDI USB to FIFO interface could also be implemented using the FTDI UM245R module, if you want to avoid any SMT soldering.

PCB layout

Note: The PCB design files in Eagle CAD and Gerber format are available for download

My principle design aims for this project were that the software is simple enough and that the hardware could be built on a single sided PCB.
The USB device is mounted on the solderside of the PCB and tracks very easily to the PIC microcontroller.

For more Detail: Microchip pic16f877 to FTDI USB interface


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us: