I am trying to set up the FX3s USB bootloader to use custom VID and PID stored in a micron M25P32 SPI flash chip. The board is set to SPI boot with USB fallback. The flash image is working on the FX3 DVKs onboard flash (M25P40). The image is written correctly to the flash on my custom board (read back by firmware), but the bootloader fails to use the VID PID from flash. Using the oscilloscope I have observed the bootloader to read the status register and the first 4 bytes (header) of the flash image as it does on the DVK. The communication on the custom board stops after reading the header and it enumerates with default cypress VID PID. The FX3's SPI interface on the custom board is using 1.8V levels and communicating to the 3.3V flash through a MAX3378 bidirectional level shifter. I have tried eliminating the level shifter using 3.3V levels on the FX3's SPI and connecting it directly to the 3.3V flash(on the far end of the tristated level shifter), but still got the same behaviour.
I intend to try different types of flash memory and avoid going through the level shifter. Are there any known issues for certain flash types?
The image header is set to for the bootloader to use 10MHz SPI clock(Max speed of level shifter, but the bootloader doesn't get far enough to use that information). The app note warns of using pull up/down on MISO & MOSI(bootloader expects floating lines to start communication). Could the level shifter still be a problem? I would guess the bootloader would not even start communicating if the level shifter has pull up/down behaviour.
Thanks in advance
Just in case someone else ends up here: The M25P32 flash is not at fault. I have tansplanted it onto a DVK board (packages were close enough) and it works fine there. Also got a previous setup using an Explorer board(modified for SPI boot) and deadbugged flash chip working. Looks like the level shifter is causing trouble.
As far as i know, the FX3 needs a pull down resistor on SPI MISO for correct boot. Try this.
I gave it a try (added a 10k pull down to MISO), without success. This would also go against the recommendation in AN76405 (FX3 Boot Options) section 7.3:
Please note that external pull-ups should not be connected on the MOSI and MISO signals, as shown in Figure 6.
The FX3 DVK also doesn't contain any pull down on MOSI.
You have tested all the possible ways to figure out the issue.
It looks like there is an issue with the Level Shifter.
Even though you connected FX3 SPI Lines to far end of Level Shifter, which is connected to SPI Flash, there is a chance that there would be some resistance over MISO and MOSI lines due to the level shifter. This may be the reason the failure.
Have you tested by removing the level shifter from the board?
Yes, as said in AN76405, there should not be any Pull/pull down resistors on MISO and MOSI lines.