Help is needed, Cypress folks...
I verified that on our custom board with FX3, it could boot from USB (PMODE=0b'F11'), and I2C (PMODE=0b'1FF and 0b'F1F, with USB fallback), but not from SPI. In fact, there is not SPI clock at power up or POR when PMODE=0b'0F1' (for SPI boot).
I believe the issue is at FX3's bootloader ROM. I have seen in other post that some early FX3 ICs didn't support SPI boot. But that was year 2012 and I don't think it is likely to happen. Also the date code for the ICs is 1737.
Any idea where I might be missing?
Okay. Finally the truth is revealed. Thanks for those who had tried to help. Hope the following summary could help other designers.
Issue: 1) FX3 has no SPI activity at bootloader stage, when booting from SPI (PMODE[2:0]=0b'0F1)
2) FX3 boots fine from USB (PMODE[2:0]=0b'F11)
Cause: PMODE pullup resistor is too weak (100K, in our case), that for some reason, FX3 treats it as high impedance, even though voltage reads high (1.8V).
1) FX3 has no SPI activity when configured for it, because PMODE is essentially 0b'0FF, which is not defined.
2) FX3 boots fine from USB because the resulting PMODE[2:0 is 0b'F1F, which happens to be I2C boot, and upon failure it falls back to USB. In this mode, I2C traffic was observed on the scope before the USB fallback. So I was fooled by the fact it ends up booting from USB.
Solution: replace PMODE pullup resistor with 10K or smaller.
Comment: The requirement of resistor for PMODE configuration is not mentioned in FX3 datasheet or design guideline (AN70707). The closest description is on page 14 of AN70707 as below, where it recommends 10K but doesn't explicitly state allowable range.
We recommend adding pull-up and pull-down options (using 10 KΩ) on the PMODE[2:0] signals and load the
combination needed for preferred booting option. This will give the flexibility to debug the system during early
It has been days since I raised the issue. I appreciate that user_391200927 has been trying to help out. However, other than Srinath, I don't see other Cypress engineers trying to help so far. Even if I posted the solution later, there is no feedback, no confirmation. That is just awkward, as if I am talking to myself.
As being a customer, I feel obligated to say that the forum support from Cypress could be and should be better. This is not even as good as previous case support. Once we have a technical problem, I am feeling that we are totally on our own. I don't know if the other customers get the same feeling.