-
在间接模式下,通过写入QUADSPI 寄存器来触发命令,通过读写数据寄存器来传输数据。
-
当FMODE=00 (QUADSPI_CCR[27:26]) 时, QUADSPI 处于间接写入模式,在数据阶段,将数据写入数据寄存器 (QUADSPI_ DR),即可写入数据到 FLASH 。
-
当FMODE=01 时, QUADSPI 处于间接读取模式,在数据阶段,读取 QUADSPI_DR 寄存器,即可读取 FLASH 里面的数据。
-
读写字节数由数据长度寄存器 (QUADSPI_ DLR)指定。当 QUADSPI_DLR=0xFFFFFFFF 时,则数据长度视为未定义, QUADSPI 将持续传输数据,直到到达 FLASH 结尾( FLASH 容量由QUADSPI_DCR[20:16] 寄存器的 FSIZE[4:0] 位定义)。如果不传输任何数据,则 DMODE[1:0](QUADSPI_CCR[25:24] 应设置为 00 。
-
当发送或接收的字节数(数据量)达到编程设定值时,如果TCIE=1 ,则 TCF 置 1 并产生中断。在数据量不确定的情况下,将根据 FSIZE[4:0] 定义的 FLASH 大小,在达到外部 SPI FLASH的 限制时, TCF 置 1 。
-
在间接模式下有三种触发命令启动的方式,即:
- 当不需要发送地址(ADMODE[1:0]==00)和数据(DMODE[1:0]==00)时,对INSTRUCTION[7:0] (QUADSPI_CCR[7:0] )执行写入操作。
- 当需要发送地址(ADMODE[1:0]!=00),但不需要发送数据(DMODE[1:0]==00),对ADDRESS[31:0] (QUADSPI_AR)执行写入操作。
- 当需要发送地址(ADMODE[1:0]!=00)和数据(DMODE[1:0]!=00)时 ,对 DATA[31:0] (QUADSPI_DR)执行写入操作。
如果命令启动,BUSY 位( QUADSPI_SR 的第 5 位)将自动置 1