35.6.1 Register Synchronization

Because the QSPI Controller interface and the QSPI Controller core use different clocks, some events must be synchronized with the core for them to take effect.

The events that require synchronization with the QSPI Controller core are:

  • QSPI_CR.QSPIEN
  • QSPI_CR.QSPIDIS
  • QSPI_CR.SWRST
  • QSPI_CR.UPDCFG
  • QSPI_CR.STTFR
  • QSPI_CR.RTOUT
  • QSPI_CR.LASTXFER
  • QSPI_RDR.RD (implies synchronization only when QSPI_MR.SMM is set to ‘1 ‘)
  • QSPI_TDR.TD

Before accessing any of these bits/fields, check that QSPI_SR.SYNCBSY is at ‘0’.

When the synchronization process is in progress, QSPI_SR.SYNCBSY is at ‘1’.

As long as QSPI_SR.SYNCBSY is at ‘1’, no access to the registers requiring synchronization is allowed.

When using QSPI_CR.UPDCFG to update the system configuration, it is mandatory for QSPI_SR.SYNCBSY to be at ‘0’ before and after writing QSPI_CR.UPDCFG. This ensures that the update is completed before going on to the next step.

Note: In some specific cases, it is not necessary to check QSPI_SR.SYNCBSY for QSPI_RDR.RD and QSPI_TDR.TD if the TDRE or RDRF flags are checked. See Instruction Transmission Flow Diagram SMRM = 0 and TFRTYP = 0 (Memory Register Access), Instruction Transmission Flow Diagram SMRM = 1 and TFRTYP = 0 (Memory Write Access) for detailed procedures.
Figure 35-2. Register Synchronization with QSPI Controller Core