In looking for a 64K x 8 Parallel EEPROM, one of the most available chips is the 27SF512. Google would indicate this is commonly used by auto enthusiasts to replace chips in various cars. I have found dedicated programmers that cost up to hundreds of dollars, but I don't really want to do that. I would like to program it from my computer via an Arduino on a serial connection.

From the datasheet:

The programming mode for SST27SF512 is activated by asserting 11.4-12V on OE#/VPP pin, VDD = 4.5-5.5V, and VIL on CE# pin. These devices are programmed byteby-byte with the desired data at the desired address using a single pulse (CE# pin low for SST27SF512 and PGM# pin low for SST27SF010/020) of 20 µs. Using the MTP programming algorithm, the Byte-Programming process continues byte-by-byte until the entire chip has been programmed.

I get that I need to apply high voltage to the VPP pin, and that CE then becomes a clock pin of some kind. I just have no idea what the MTP programming algorithm is.

Best case I can just put the address I want to write and the data on the appropriate pins and put CE low to store the data. It appears that maybe I have to write every byte in sequence though. Thats ok too, but I have failed to find any firm details on the exact protocol to use.

It also looks like I need to fully erase the chip to all 1's before any programming, but that seems much more straightforward.

I would like to make sure I understand what I'm doing before I shell out for a batch of chips.

  • \$\begingroup\$ If you do implement this, please write it up somewhere - it'd be really neat to see an Arduino EEPROM programmer design. \$\endgroup\$ Jul 27, 2011 at 4:33
  • \$\begingroup\$ Will do. I don't have the parts yet, but I will definitely post a blog link once I get it all wired up. \$\endgroup\$
    – captncraig
    Jul 27, 2011 at 18:01
  • \$\begingroup\$ The hard part is how are you going to get 64K of data onto your arduino? I was doing something similar but around 1MB and I ended up skipping the arduino and repurposing the printer port on an old desktop computer. \$\endgroup\$
    – NickHalden
    Jul 27, 2011 at 20:50
  • \$\begingroup\$ @JGord Presumably by streaming it via the Arduino's USB serial interface. \$\endgroup\$ Jul 28, 2011 at 0:37

3 Answers 3


Please check page 15 through 18 of the datasheet. You'll find some Diagrams which explain the procedures involved quite good. Also there are timing diagrams on page 12 and 13.

For example, to erase the chip you have to do the following:

  1. Set A9 and OE#/VPP to 12V
  2. Hold CE# low for at least 100ms
  3. Remove 12V from A9 and OE#/VPP
  4. Wait a moment (1µs)
  5. Check all addresses for 0xFF (If this fails, there was some problem with the erase operation)

For programming you do the following:

  1. Set OE#/VPP to 12V
  2. Set Byte Address on A0-A15
  3. Set data on D0-D7
  4. Pulse CE# low for 20µs
  5. Go back to 2. for more data
  6. Remove 12V from OE#/VPP
  7. Wait a moment (1µs)
  8. Check all written data

The data sheet has all you need to be able to program it.

Check out page 17 where it gives you a nice flow-chart to show you how to do it.

The timing diagram on page 13 is also very useful.

The "MTP" algorithm is the algorithm for this chip - a "Many Time Programmable" chip. Where it says "The MTP programming algorithm" it just means "The algorithm we use for this chip".


The programming algorithm is on page 16 of the data sheet. It looks quite straightforward, and you shouldn't have any problems implementing it on your Arduino.

  • \$\begingroup\$ I stink at reading datasheets. That looks like it is as simple as I could hope for. Thanks. \$\endgroup\$
    – captncraig
    Jul 26, 2011 at 21:56
  • \$\begingroup\$ @CMP - And still you'll have to learn how to read them. Otherwise you'll be asking (trivial) questions here for the rest of your life, and even then many answer will refer you to the datasheet. (Yes, I know, I'm a document maniac. What can I say? :-)) \$\endgroup\$
    – stevenvh
    Jul 27, 2011 at 5:06
  • \$\begingroup\$ Ok. I'll be more careful. But you guys are incredibly helpful. \$\endgroup\$
    – captncraig
    Jul 27, 2011 at 18:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.