|   |
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Home
|
Small serial EEPROMs are commonly used in modern electronic equipment for storing non-volatile data.
They used in equipment like: TV sets, VCRs, Satellite receivers and even cell phones.
There they are mainly used for storing tuning and calibration data.
The hereby presented EEPROM programmer is a cheap tool to assist in programming these EEPROM devices.
The total costs for the hardware are very low.
The programmer is capable of programming the following devices:
It may also be possible to program the 2401, a 128 bytes EEPROM, but I never had one to verify that myself.
The programmer operates as a DOS command line interpreter. This means that the program is started from the DOS prompt, where the program name is followed by one or more parameters. The program inspects these parameters, completes its task and returns to the DOS prompt. The biggest advantage of such a program is that it is quite easy to write. The biggest disadvantage is that it is somewhat user-unfriendly. The user should be familiar with MS-DOS. But there is nothing wrong with being familiar with MS-DOS, not even in the Windows age. It enriches your view on the (computer) world. The interface is to be connected to one of the LPT ports of the PC. The program will automatically detect its presence, so the user does not have to point it out to the program. The general syntax for the program is: EEPROM command [filename] This line is to be typed behind the DOS prompt. The parameter command must always be given, and consist normally of only one character. More characters are allowed but will be ignored until the next white space or end of line. The filename parameter is optional, depending on the command that is given.
The filename can consist of drive letter, path name, file name and extension.
If the drive letter and/or path name are omitted, the current drive and/or path is used to point to the file name.
When you want to read the contents of the EEPROM the program checks to see if the output file already exists before it is created and written to. If the file does exist, the program warns the user and asks if that file may be overwritten. The old contents of that file will be lost forever if the user allows it to be overwritten!
The programmer is capable of recognizing the connected device type up to devices of 2 kb. Unfortunately it can not detect, nor read or write devices with a larger capacity like the 24C64, 24C128 or 24C256. The recognition takes place in a predefined order.
I²C devices are detected first.
At the same time the size of an I²C device is determined.
The size of the IC is measured in the number of memory banks that produce an acknowledge.
Each bank consists of 256 bytes which are all addressed by the same I²C address.
If no I²C bus IC is detected, the program will check if an external OSCAR5 programmer is connected. If it is, the program will verify if a card is inserted in it. The programmer will use this card if it is found, and the lights on the OSCAR5 programmer will be controlled as well. If the OSCAR5 programmer could not be found either, the program will check if a separate OSCAR5 card is connected. If it is, this card will be used.
If none of the above devices are detected, it will leave only one possibility, the NVM3060.
This is an IM-bus IC from Intermetall (Micronas) with a capacity of 512 bytes.
The presence of this IC is checked.
The program will terminate with an error if no EEPROM can be found at all.
Warning: The EEPROM programmer is intended for EEPROMs up to 2 k bytes. Larger EEPROMs differ too much to be detected automatically. Data in I²C EEPROMs larger than 2 k may be destroyed when an attempt is made to read them!
eeprom r [drive:][path\]filename[.ext] The letter r tells the program to read the contents of the EEPROM and copy its contents to the file with the name filename. This file name may be preceded by the drive letter and/or path. The extension is also optional. The user is warned and prompted if a file with the same name already exists. If the user allows the program to continue, the original contents of the file will be lost and will be substituted by the contents of the current EEPROM. The file automatically gets the same size as the EEPROM. The EEPROM data is saved as a binary file.
eeprom w [drive:][path\]filename[.ext] The letter w tells the program to write the contents of a binary file to the EEPROM. The filename may be preceded by the drive letter and/or path. The extension is also optional.
The user is warned if the size of the EEPROM does not match the size of the file, but programming continues anyway.
The first part of the EEPROM is filled if the file size is shorter than the EEPROM size.
The first part of the file is programmed to the EEPROM if the file size is longer.
A device does not have to be empty before programming.
eeprom v [drive:][path\]filename[.ext]
The letter v tells the program to verify the contents of the EEPROM.
The contents of the EEPROM are compared to the contents of the binary file.
At the end the number of differences is displayed.
A warning is displayed when the file size and EEPROM size are different. Again this can be caused by the wrong IC type or by an IC that pretends to have more memory than it actually has.
eeprom e The letter e tells the program to erase the contents of the EEPROM. An erased EEPROM will contain all $FF. This command needs no file name to know what to write to the EEPROM. Warning: The EEPROM will be erased without any warnings!
eeprom i The letter i tells the program to show an inventory of the I²C-bus. This command does not need a file name. The inventory shows all acknowledged even addresses on the I²C-bus in hexadecimal notation.
Every time the program stops it passes an ERRORLEVEL code to MS-DOS. This code is mainly meant for batch files that call the programmer software. Here are the possible ERRORLEVEL codes:
The interface is to be connected to one of the LPT ports of the PC. These ports contain enough output and input lines to control the EEPROM programmer.
All supported devices need a data and a clock line.
The data line must be bi-directional, this means that the line must be able to send and receive data.
Furthermore the line must be of the open-collector type, so the EEPROM can pull this line low if the PC leaves it high.
Unfortunately the LPT port of the PC does not meet these requirements.
But there is a simple solution to this problem.
With the aid of a simple silicon signal diode in series with one of the outputs it is possible to imitate an open collector output.
Connecting the other end of the diode to the data line of the devices and an input pin of the LPT port it enables the PC to read back the actual contents of the data line.
Two extra outputs are needed for the IM-bus EEPROMs. Besides the Data and Clock lines, an Ident and Reset line are needed. These two lines are also directly connected to 2 output pins of the LPT port. All the above lines are individually equipped with their own pull-up resistors and protection resistors.
The interface is powered by a 9V block battery and must be switched on and off.
A somewhat complex circuit is responsible for that.
This circuit became so complex to avoid unintended switching of the power when the computer is switched on or off.
This would only drain the batteries.
One transistor gets its base-current through a resistor that is tied to the +5V of the interface. This transistor can tell the state of the power supply of the interface to the PC. A small jumper wire, connecting one output of the LPT port to one input, completes the circuit. It enables the program to recognize the interface.
The complete circuit easily fits into a compact housing, in which the 9V battery also should fit.
Use a ZIF socket or good quality normal IC sockets for the programmable devices.
A small piece of pad board is sufficient to fit the whole circuit.
Many of the 10k pull-up resistors can be integrated in one single resistor network.
Who ever is this Oscar5 you keep talking about? Is he related to Johnny 5, the living robot?
No, it is a tool, designed by Nokia CE, to copy settings between TV sets and analog satellite receivers.
It is a small blue box with 3 buttons and 4 LEDs on it.
This box can be connected to a TV set or satellite receiver and all settings data can be copied to an OSCAR5 Smart Card that is inserted in the blue box.
Later you can clone such a TV or satellite receiver with the complete settings that are stored on the Card.
Unfortunately the incompatibility between the many different software versions of the TV sets made Oscar 5 die silently. |