Electronic – Why the M25P16 SPI Flash is not responding to Read ID command


I have interfaced M25P16 with PIC32MX795F512L. MISO and CS is pulled up to VCC with 10k resistor.
I am sending the 0x9f (MSB first) command for reading device ID and after that 20 dummy bytes are transmitted for generating clock for receiving bytes. But I'm getting unexpected noise pulses on MISO pin as shown in image below.

I have selected clock mode as 1 (i.e. CPOL = 0 and CPHA = 1). I'm sampling input in middle of clock.
One more thing HOLD# and W# are directly connected to VCC(3.3 V). Do I need to make changes in W# and HOLD# states?

Best Answer

I not sure if this problem was solved, I had exactly the same problem as you two days ago and nothing on the internet I found helped, it seems everyone had a unique problem expect yours...

After 2 days of debugging I found the solution, its very simple.. the chip 3.3V tolerant (power supply and input signals.. they NOT 5V tolerant!), if your input signals is NOT 3.3v i.e (Input CLOCK, CS, MOSI, MISO) the flash chip will not respond.

All I did was use a level translation using a 74HC4050, it is always a good test to make sure communication is 100% by sending a device id request to the chip, then proceeding to working with memory writes and reads.

Funny, after two days of exceeding the input signals with a 5V input the chip still works, maybe internally some sort of (undocumented) protection clamp was active.

I hope this helps.