Arduino Parallel Flash Programmer

This page describes my Arduino Flash Programmer, which supports the 39F flash family. This product line was decided on because these flash chips are available in DIP-32 package which fits into a breadboard easily. The actual supported devices are:

  • 39F040 (512Kx8)
  • 39F020 (256Kx8)
  • 39F010 (128Kx8)

The parts needed to build this programmer are the following:

  • 4x 74HC595
  • 1x 74HC165
  • 1x Arduino Uno
  • 1x a 40 or 32 pin socket (ZIF is a good choice here)
  • 6x 100nf capacitors
  • 1x 22 pin male header
  • 1x 6 pin female header
  • 3x 1KΩ resistors
  • 3x leds (choose the colours as you wish)

You can build your programmer on a breadboard, or you can choose to make it a bit more robust and use a protoboard and some wires. I chose to make mine with some protoboard and some enamelled copper wire with a diameter of ~0.2 mm which i put through the protoboard to guide them. The circuit is quite simple but a little bit tedious to build because of the many address wires.

flash programmer schematic

The Arduino sketch used to program and read the flash is long but simple and consists of four parts:

  1. The low level IO functions
  2. The low level read and write functions
  3. The special command functions
  4. The command parser

The communication parser accepts 9 commands over Serial at 115200 baud which are listed on the top of the arduino sketch below. After some time, I also wrote the Flash Programmer Client which provides file functions in order to be able to use this programmer efficiently.