STM32F7 + QSPI (QUADSPI): Sporadic failure with memory-mapped flash memory. Disabling timeout does not help.
Hi everyone,
We have an issue when using QUADSPI (memory-mapped) on a STM32F7 microcontroller. The controller sporadically runs into a watchdog reset. Investigation showed that the crash always occurs during a LDM instruction from the memory-mapped flash. When disabling the watchdog, the program execution can only be stopped in an interrupt and a stop in main code execution is no longer possible. Most of the peripheral registers can no longer be read either.
We are aware of the issue stated in the errata sheet:
2.4.3 Memory-mapped read operations may fail when timeout counter is enabled
The proposed workaround is as follow:
Disable the timeout counter. To raise the chip select, perform an abort at the end of each memory-mapped read operation.
The timeout counter (TCEN bit in CR register) is disabled, but the issue still occurs. What we do not know is how to implement the second part of the workaround: "To raise the chip select, perform an abort at the end of each memory-mapped read operation."
Does anyone has an idea on how to implement this workaround?
We are also aware of this thread, where the explained behavior coheres with our findings.
Already many thanks!
UPDATE (20-01-15):
Since we do not care about power consumption, the chip select does not need to be raised after the read operations and therefore the disabling of the timeout counter should be enough as a workaround.
Do you have any ideas why the issue still occurs, although the timeout counter is disabled?
Our setup:
- STM32F767NIH6
- J-Link Debugger (Segger)
- IAR Embedded Workbench 8.32.3
- Flash Winbond W25M512JVFIQ used on memory addresses 0x9000000 - 0x90FFFFFF
