I have some parallel flash chips from old motherboards I want to be able to program. Since the parallel flash chips can't be programmed with SPI or anything like that, it's not straightforward. Also, these chips can be programmed with low voltage, unlike some flash chips that can only be programmed with 12v. And even if they needed 12v, that's a simple modification. If I ever solder this up, I might include that as an option with a switch.
I haven't studied the data sheet for the flash chips in depth yet (maybe that would have been a good first step), but programming the chips consists of putting certain commands on the address and data bus and using the three control pins CE, OE and WR. In total, there are 29 of these pins. 18 address lines, 8 data lines and 3 control lines. I think I can just use some shift registers to reach these, because the Arduino certainly doesn't have enough pins.
So here's something I drew up. I don't know how to use any CAD programs, so I just snapped a pic of my notebook. I hope you all can see it well enough.
I've never used 74HC595's or 74HC165's before, I'm just going on the data sheets. I'm going to have to shift all the data and address bits out then latch them in. A few of the pins (well, 6 of them) won't be used on one of the 595's, but that's OK.
It just occurred to me that it's possible the highest 2 address bits aren't even used when programming. It's just a case of removing one of the 595s if that's the case though. Now that I write all this out, I wish even more that I'd read the flash chip docs better.
In order to read from the address bus, I'm going to have to put the 595 on the data bus into high impedance mode, latch the data into the 165 and clock it out. The ShiftOut and ShiftIn instructions will be really helpful here.
Hopefully, I'll be able to post the image in the reply, see below
So... will this work?
I had originally hoped to put this on a shield, but I think it might be too big for that. Do you think I can cram this onto a prototype shield, including the space a ZIF socket takes up?