Add W27C512

This commit is contained in:
Tom Nisbet 2022-12-22 13:11:10 -05:00
parent 7d5ab86275
commit 195f94f9a0
3 changed files with 24 additions and 9 deletions

View File

@ -93,6 +93,7 @@ bool PromDevice27::burnByte(byte value, uint32_t address)
// Burn a byte to the chip and verify that it was written.
//
// This uses a dedicated WE or PGM chip that operates on TTL levels and is active LOW.
// Overwrite burning is supported.
bool PromDevice27::burnByteWE(byte value, uint32_t address)
@ -140,10 +141,16 @@ bool PromDevice27::burnByteWE(byte value, uint32_t address)
// Burn a byte to the chip and verify that it was written.
//
// This uses an active LOW program pulse on the CE line and a verify operation with CE
// HIGH. Overwrite is not supported, but could be added is a chip is found that needs it.
// Chips that use this mode require a programming voltage on the PGM pin and possibly on
// other pins as well.
// Chips that use this mode require a programming voltage on the PGM or VPP pin and
// possibly on other pins as well The above applies to the W27C257 EEPROM. The W27C512
// is a bit more difficult because it does not have a dedicated VPP or PGM pin. Instead,
// the programming voltage is applied to OE to put the chip in programming mode and OE is
// then switched LOW for the verify operation. Because the voltage switch would require
// additional hardware, this code does not support verify-after-write for the W27C512 chip
// and will instead just do a single write cycle.
//
// VCC may also have a non-standard voltage in program mode. Be sure to separate the
// PROM's VCC line from system VCC if a non-standard voltage is used.

View File

@ -49,7 +49,8 @@ PromDevice28C prom(32 * 1024L, 64, 10, true);
//PromDevice27 prom(32 * 1024L, E27C_PGM_WE, 1000L, 25, 3); // 27C256 with SEEQ intelligent programming
//PromDevice27 prom(2 * 1024L, E27C_PGM_WE, 50000L, 1, 0); // 2716 with single 50ms write
//PromDevice27 prom(512 * 1024L, E27C_PGM_WE, 100L, 11, 0); // 27C040 with Atmel rapid programming
//PromDevice27 prom(32 * 1024L, E27C_PGM_CE, 100L, 25, 0); // 27C257/27E257 with 100uS program pulse on CE
//PromDevice27 prom(32 * 1024L, E27C_PGM_CE, 100L, 25, 0); // W27C257/W27E257 with 100uS program pulse on CE
//PromDevice27 prom(64 * 1024L, E27C_PGM_CE, 100L, 1, 0, false); // W27C512 with single 100uS program pulse on CE, no verify
PromDevice27 prom(256 * 1024L, E27C_PGM_WE, 20L, 1, 0, false); // SST27SF020 with single 20us write, no verify
#elif defined(PROM_IS_SST39SF)

View File

@ -163,7 +163,7 @@ The 8755 build of TommyPROM also has a circuit to control the 25V programming pu
|SST39SF040|Microchip |Flash |SST39SF|All SST39SF0x0 supported|
|SST28SF040|SST |Flash |SST39SF|All SST28SF0x0 supported|
|SST27SF020|SST |Flash |27 |12V continuous for pgm/erase|
|WE27C257 |Winbond |EEPROM |27 |Continual 12V or 14V for program/erase|
|W27C257 |Winbond |EEPROM |27 |Continual 12V or 14V for program/erase|
|AT29C010 |Atmel |Flash |28C |Only with 128 byte or less sector size|
|8755A |Intel |EPROM |8755A |Requires 25V pulses to program|
@ -208,21 +208,27 @@ the newer 28C EEPROMs, these chips do not automatically erase before writing to
location. Instead, the entire chip is erased by applying 12V to _VPP_ and _A9_ and then
pulsing _WE_.
#### 27C257
#### W27C257 and W27C512
The Winbond WE27C257 and WE27E257 appear to be identical 32Kx8 EEPROMs. The 27C version
has been tested.
The Winbond W27C257 and W27E257 appear to be identical 32Kx8 EEPROMs. The 27C version
has been tested. The Winbond W27C512 is a 64Kx8 EEPROM with no dedicated _VPP_ pin.
These EEPROMs have a _VPP_ pin that needs a constant 12V during programming. Unlike the
The 257 EEPROMs have a _VPP_ pin that needs a constant 12V during programming. Unlike the
newer 28C EEPROMs, these chips do not automatically erase before writing to a location.
Instead, the entire chip is erased by applying 14V to _VPP_ and _A9_ and then pulsing
_CE_.
Unlike the 257 chips, the W27C512 does not have a dedicated pin for the programming
voltage and instead uses the OE pin to place the chip in programming mode. The verify
operation requires that the OE pin be switched to _LOW_ and there is no hardware support
for this, so the current code supports the 512 chip by doing a single write cycle with no
verify.
Because the chips use a constant high voltage for programming instead of a pulse, an
external power supply and two diodes can be used to supply either 5V or 12V to the
pins for programming and erasing.
Note that the WE27x257 chip are almost a drop-in replacement for the 28C256. The _WE_,
Note that the W27x257 chip are almost a drop-in replacement for the 28C256. The _WE_,
_VPP_, and _A14_ pins are the only differences. For reading, the _VPP_ pin should be
connected to 5V.
@ -241,3 +247,4 @@ for chips with the 256 byte buffer.
|Model |Manufacturer |Type |Module |Notes|
|:--- |:--- |:--- |:--- |:--- |
|M27C4001 |ST Micro |EEPROM | |VCC=6.5V, VPP=12.75V to pgm|
|W27C512 |Winbond |EEPROM |27 |Continual 12V or 14V for program/erase,VPP on OE|