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:
Arduino Mega 2560
Arduino Mega ADK
Non-Arduino Mega compatible board
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:
Download "EEPROM_Programmer_Gerber.zip" from the "Files" section below
Visit jlcpcb.com with a browser
Create a new account or log into your existing account
Click "Order now" in the toolbar
Click "Add Gerber File"
Upload "EEPROM_Programmer_Gerber.zip" that you downloaded in step 1
Click "Save to Cart" and continue the checkout process
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:
Components
The PCB is populated with the following thru-hole components:
28-pin socket (ZIF or regular)
2 x 18 pin header
1 x 8 pin header
1 x 6 pin header
1 μF capacitor
LED
300 ohm resistor
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:
Download "EEPROM_Programmer_x.y.z_Setup.exe" from the "Files" section below
Run "EEPROM_Programmer_x.y.z_Setup.exe" (admin privilege not required)
Step through the install process
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:
If connected, unplug the Arduino Mega from the USB port of the Windows PC
If using an ZIF socket, move the lever to the "open" position (typically lever up)
Insert the EEPROM into the socket, ensuring that the circular notch is at the top, nearest the "reset" button
If using a ZIF socket, move the lever to the "closed" position (typically lever down)
Plug the Arduino Mega into the USB port of the Windows PC
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:
2864 (8K)
28128 (16K)
28256 (32K)
28512 (64K)
These EPROM (Erasable Programmable Read-Only Memory) devices can be read (but not written):
2764 (8K)
27128 (16K)
27256 (32K)
27512 (64K)
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:
0000 - 1FFF
2000 - 3FFF
4000 - 5FFF
6000 - 7FFF
8000 - 9FFF
A000 - BFFF
C000 - DFFF
E000 - FFFF
Files
These file types are supported:
Intel HEX (.hex)
Motorola SREC (.s19)
Raw binary (.bin)
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:
Download "Sample_0000_to_1FFF.hex" from the "Files" section below
Select the type of EEPROM from the "Device" drop-down
Select the start address "0000" from the "Address" drop-down
Ensure the status is "Ready"
Click the "Write" button
Select the "Sample_0000_to_1FFF.hex" file you downloaded in step 1
The file will be written and the status will return to "Ready".
To write your own file to an EEPROM:
Select the type of EEPROM from the "Device" drop-down
Select the target system EEPROM start address from the "Address" drop-down
Ensure the status is "Ready"
Click the "Write" button
Select an existing .hex, .s19, or .bin file
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:
Select the type of EEPROM from the "Device" drop-down
Select the target system EEPROM start address from the "Address" drop-down
Ensure the status is "Ready"
Click the "Verify" button
Select an existing .hex, .s19, or .bin 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:
Select the type of EEPROM from the "Device" drop-down
Select the target system EEPROM start address from the "Address" drop-down
Ensure the status is "Ready"
Click the "Read" button
Select the type of file from the "Save as type" drop-down
Specify the new filename and click "Save"
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