Nearly all computer projects need a ROM of some type. To date I have used PROMs. It works but the fear of making a mistake in the programming of the PROM, makes the process unpleasant. Enter the Flash RAM, re-programmable as if it was RAM (well nearly). Well actually they still need a programmer for simple systems. So I had a look at programming in-circuit. Here is a concept were an Arduino can be plugged in the "board" and the Flash RAM reprogrammed in-circuit:
The main problem here is that the diodes will slow down the normal operation of the Flash RAM.
Okay, how about a programmer? Unfortunately the Arduino does not have enough output pins. So we need a Mega 2560 or a port expander. Looking at port expanders four options are:
- use two Arduinos connected by an I2C bus
- use a PCF8574 port expander (which also uses an I2C bus)
- use a serial to parallel chip such as the 74HC595
- use a 74HC374 (a tri-state 8 x flip-flip)
The PCF8574 has the advantage that the port is bi-directional, but this feature is not needed here. Here a strip-board version of the PCF8574:
The other design of interest is the 74HC374:
The 74HC374 design will be much faster and has just enough outputs to fully program a 32k x 8 bit Flash RAM. So the clear winner.
Strip Board Programmer
I knocked up a strip-board programmer:
While this is not too bad, it may make a good PCB project.
The other problem is the Nano memory capacity. To date I have been storing the programming data in code. The nano only has 32k Flash and we want to program a 32k Flash RAM. A bit of a tight fit! I suppose I could just program 50% at a time. The other options are to use a different Arduino product (a Mega 2650 for example) or to load the programming data from the serial console at program time (i.e. program the Flash RAM 64 bytes at a time as the data is received).
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.