2023-10-02 03:02 PM
I am trying to use the M95020 (M95020-WMN6TP to be exact) to replace older 2K SPI EEPROMs. Comparing everything in the data sheets seems to imply it should be a good replacement, with most tolerances higher than the old EEPROM.
Yet for some reason, some addresses fail to write. It seems like the issue is consistent, like address 0x04 and 0x06 do not write. When reading those addresses back they are still in whatever state they were before, whether they're read by the SPI device or even with an external programmer.
Everything is 5V in circuit and I believe the clock is only 100kHz. I've looked at signals closely with a scope, tweaked capacitor values, and compared timings to the data sheet, but I can't find anything to cause this. All the signals look clean, good rise and fall times, and no noticeable noise. I even tried multiple chips from two different suppliers to rule out bad parts. Someone else tried with the same setup and encountered the issue as well. Hold and Write Protect are pulled up with a 10k resistor to VCC.
Here is address 0x04, which fails to write:
Here is address 0x06, which also fails to write;
Here is address 0x05 which writes just fine.
Here is the full event table:
Time | MOSI |
1.000000e-07 | 06 |
2.349700e-03 | 02 00 1F |
5.059400e-03 | 06 |
7.409000e-03 | 02 01 FF |
1.011500e-02 | 06 |
1.246470e-02 | 02 02 FF |
1.529390e-02 | 06 |
1.763990e-02 | 02 04 51 |
2.033090e-02 | 06 |
2.267690e-02 | 02 05 00 |
2.536780e-02 | 06 |
2.782890e-02 | 02 06 00 |
3.051620e-02 | 06 |
3.286220e-02 | 02 07 32 |
3.561050e-02 | 06 |
3.796010e-02 | 02 08 FF |
4.076830e-02 | 06 |
4.311420e-02 | 02 03 26 |
2023-10-02 04:05 PM - edited 2023-10-02 04:09 PM
Your write signals look fine. Show the corresponding read function immediately following a write and/or corresponding code.
Note that a write will fail if one is already in progress. Given your every-other failure scheme, I bet this is what is occurring. I don't see any checking for the WIP bit.