I'm using these Winbond 256K × 8 CMOS FLASH MEMORY chips in a project and first need to build a Arduino based programmer.
Not finding much on the internet or on the forums for this chip so doesn't look like its widely used for some reason.
http://pdf.datasheetcatalog.com/datasheets2/27/274053_1.pdfLooking at the datasheet I've got a few queries on the method of programming. I'm a bit confused as to how to write data.
The chip needs to be programmed in page write mode.
The W29C020 is written (erased/programmed) on a page basis. Every page contains 128 bytes of
data. If a byte of data within a page is to be changed, data for the entire page must be loaded into the
device. Any byte that is not loaded will be erased to "FF hex" during the write operation of the page.
The write operation is initiated by forcing CE and WE low and OE high. The write procedure
consists of two steps. Step 1 is the byte-load cycle, in which the host writes to the page buffer of the
device.
Step 2 is an internal write (erase/program) cycle, during which the data in the page buffers are
simultaneously written into the memory array for non-volatile storage.
But then it goes on to says software data protection is enabled by default so I need to perform the three-byte command cycle at the beginning of a page load cycle
Looking at the timing waveforms is not making anything clearer

Why are there 3 ways to write to the chip, CE controlled, WE controlled, and page write
Taking a wild guess here but to program 256Kb would the sequence be:
- Write 3 byte sequence
- set address and data lines
- CE low, OE, high, WE high
- Increment address, set data lines
- CE low, OE, high, WE high
- Repeat until 256Kb written
If its any clearer to someone who has used these I would appreciate a flow on how to program these.