Problem with imp003 spi flash

we are developping a imp003 new based device with a 512MB spi flash (N25Q512A13GF840E, Micron Technology Inc.).

The board was designed following the sample schemes found in the “Designing Hardware with the imp003” document, but we initially left the HOLD_L and WP_L pins unconnected (not pulled-up/down as in the sample scheme).

We assembled 3 boards and they all present the same problem. The boards behave as follows:

  • when powered up the led color start flashing the “SPI Flash Error” code (long red, short amber, long off)
  • during the boot no activity is present on the MISO pin of the flash
  • starting a blink-up sequence stops the blinking of the led
  • after the blink-up sequence ends, the flashing starts again, but signaling the “SPI Flash Not Found” error code (long amber, short red, long off)

After checking again the documentation we tried to pull-up the HOLD_L pin. We now have activity on the MISO pin during the boot sequence, but the problem persists (same blinking codes).

We also tried pulling-down the WP_L pin as shown in the sample schemes (is this really needed/correct?). This doesn’t affect the boards behavour.

To have a double check on the memory compatibility we tried replacing our 512 MB memory with the smaller 4MB one listed in the recommended components in the imp003 datasheet (MX25L4006E, Macronix). Nothing changed.

As vaguely suggested in the Micron documentation, we also tried pulling-down the clock line but without any change.

At the moment we dont have acces to a logic analyzer but we verified with an oscilloscope the flash pins activity/state and they appear to be correct. The chip supply and groung are ok. On the clock, miso and mosi pins there is activity; the HOLD_L pin is pulled-up. We also tested all the possible states of WP_L (pulled-up, pulled-down and floating).

At this point we are a little bit out of ideas. Some help/suggestions would by really appreciated.

Many thanks

When flashing SPI flash error, the device will not proceed any further, so you can’t blink it up. It needs a functional flash to continue.

Generally, this is a sign of a soldering issue on the imp003; in all cases the imp probes the flash, so you should see clocks & activity on MOSI as it sends commands.

HOLD# should always be pulled up (as this essentially prevents the chip from responding). WP# state really makes no difference unless the internal protection bits are programmed.

I’m guessing you are also seeing correct activity on the CS# line, otherwise the chip wouldn’t be responding, but that’s obviously also a prerequisite. It sounds very much like - if valid activity is seen on CS#, CLK, MOSI & MISO - that the MISO pin on the flash is not connected on the imp side - or a footprint/symbol error in your schematic has resulted in this pin on the flash not being connected to the right pad on the imp003.

Can you share schematic/board (can do this privately) or at least triple check that in your design?

Thank you Hugo, the activity on CS# seems to be correct. I can’t exclude a soldering issue at 100%, but the same problem appears on 3 different boards. I would be really happy if you could have a look to our schematic, can I send it to you by email?

Yep - to close up this thread it looks like it was a soldering problem.

Yes, it seems like so (not 100% yet but 80%), as we got a secure diagnosis I will post the conclusion here…many thanks

Just to complete the info, the problem was that the spi flash module (N25Q512A13GF840E, Micron Technology Inc.) we used isn’t compliant with the imp003 module.

The largest flash usable on the imp003 is 128Mb.

Thank you Hugo for the great support.

…this does make sense as we do 3-byte addressing: 2^24 = 16MB, which is 128Mbit. We’ll add this to the docs, though!