EEPROM Programmer

Overview

This hardware and software reads/writes 28-pin EEPROMs (such as 28C64, 28C128, etc.) using an Arduino Mega and a Windows PC. It is based on the Arduino Mega Flash Programmer project by Eric M. Klaus. This hardware is identical to his design, so the software is compatible between them.

HardWARE

Arduino Mega

The Arduino Mega is ideal for this project, because the 5 volt microcontroller has sufficient I/O lines to connect to the address and data lines of the EEPROM without requiring additional chips.

You need one of:

The Arduino Mega 1280 will also work, but requires an additional step; see the "Load Arduino Sketch" section below.

PCB

To order a printed circuit board from JLCPCB:

This simple circuit could be constructed using a prototype board. But a PCB is more professional, and quite inexpensive. For fabrication and shipping, I paid under $10 US. It was delivered to Canada in about 2 weeks.

If you wish to customize the PCB, here is the project that produced the Gerber file:

EasyEDA project on OSHWLab

Components

The PCB is populated with the following thru-hole components:

I'd recommend using a ZIF (zero insertion force) socket, such as TEXTOOL part number 228-3345. A ZIF socket makes insertion and removal of the EEPROM very easy. If you have difficulty obtaining a ZIF socket or want to reduce cost, you can use a regular 28-pin socket instead. Be aware that a regular socket has a limited number of insertions before becoming unreliable.

Software

Installation

To install the "EEPROM Programmer" Windows app:

The "EEPROM Programmer" app is started at the end of the installation process. In the future, you can start it by selecting the shortcut in the Windows "Start" menu.

Load Arduino Sketch

Initially, the status is "Waiting for Arduino Mega".

Plug the Arduino Mega into the USB port of a Windows PC. If the Arduino had already been connected, disconnect and reconnect it. After a few seconds, the app will display a dialog with the message:

A programming sketch was not detected.

Load the sketch on the Arduino Mega?

Click "OK" to load the sketch. The sketch will load, the LED will start blinking, and the status will change to "Ready".

If you are using an Arduino Mega 1280, the sketch cannot be loaded automatically; download the "EEPROM_Programmer.ino" sketch found in the "Files" section below and use the Arduino IDE to load it.

Insert/Remove EEPROM

To insert an EEPROM:

To remove the EEPROM, reverse the above steps.

This is the safest method. Inserting and removing an EEPROM while connected to a PC incurs a slight risk. When inserting the chip into the socket, not all pins are connected simultaneously, so the address and data lines may be powered momentarily before the chip is powered. You may decide that the risk is low enough that it is not worth the inconvenience of unplugging the Arduino Mega.

Devices

These EEPROM (Electrically Erasable Programmable Read-Only Memory) devices can be read or written:

These EPROM (Erasable Programmable Read-Only Memory) devices can be read (but not written):

EPROMs require a supply voltage greater than 5 volts to be written, and can only be erased by exposure to ultraviolet light. In contrast, EEPROMs require only 5 volts to be written or erased, and have largely replaced EPROMs because of this. I use "EEPROM" elsewhere for simplicity, but this really should be "EPROM or EEPROM" (in the context of read operations).

Addresses

The software assumes that the EEPROM will be used with a computer that has at most 16 address lines (A15 thru A0), so the EEPROM is located somewhere in the 0000-FFFF address space. For example, a 2864 has 13 address lines which connected to the lower address bus lines (A12 thru A0). The upper address lines (A15 thru A13) are used to select whether the EEPROM is enabled, which gives 8 possible address ranges:

Files

These file types are supported:

Intel HEX and Motorola SREC files specify address information; only 16-bit addresses are supported. Raw binary files contain no address information, so a dialog will ask you to specify the start address.

Write

To write the sample file to an EEPROM:

The file will be written and the status will return to "Ready".

To write your own file to an EEPROM:

A  dialog will display the file address range and the EEPROM address range before the write commences. Typically, the file address range lies within the EEPROM address range. The file address range may be larger than the EEPROM address range; for example, when a 16K file is written to two 8K EEPROMs. In this case, a warning is displayed that not all of the file will be written to the EEPROM. If there is no overlap between the address ranges, an error is displayed.

The entire EEPROM address range is written, with unused bytes set to 0xFF.

Verify

To verify that an EEPROM matches a file:

A dialog is displayed with the number of bytes that differ between the file and the EEPROM.

Read

To read an EEPROM to a file:

The entire EEPROM address range is read to the file.

Source Code

This Visual Studio 2022 project is written in C# using a Windows Forms user interface:

EEPROMProgrammer project on GitLab

Files