[SOLVED] How can I fix frequency sensitivity in QUADSPI communication?
I have a STM32F7xx MCU connected to a Winbond W25Q01. The datasheet says the chip will run up to 133MHz. If I set the MCU clock to 108MHz and the quadspi clock prescaler to 0 so that they are running at the same frequency, the chip initializes and communicates no problem.
However, if I set the MCU to 216 MHz and the quadspi clock prescaler to 1 so that it is running at 108MHz it won't initialize and I can't communicate with it.
If I set the MCU to 216MHz and the prescaler to 2 so the quadspi clock is running at 72MHz it initializes no problem.
Summary Table
MCU Freq [MHz] | Prescaler | Quadspi Freq [MHz] | Result
108 | 0 | 108 | pass
216 | 1 | 108 | FAIL
197 | 1 | 98.5 | FAIL
155.5 | 1 | 77.75 | pass
108 | 1 | 54 | pass
216 | 2 | 72 | pass
I believe that the failure mode is that when I query the status register I get a corrupted response and the code hangs thinking that the chip is busy when in reality it is not. But I can't explain why when the MCU and qspi are running at the same speed (108MHz) it runs but doesn't run when only the qspi is running at that speed.
Any ideas?