Edit online

编程指南

7 Jun 2024
Read time: 1 minute(s)

初始化流程

在进行数据传输之前,需要对 SPI 接口和控制器进行初始化。QSPI 控制器的初始化主要包括时钟配置,引脚配置,以及工作模式配置等,详情如下:



字节模式传输流程

QSPI 在主机和从机之间传输串行数据,主要采用两种传输方式:
在数据传输过程中,QSPI 有两个数据通道:
  • 发送通道:数据传输路径从 TX FIFO 到外部设备。

    发送数据时,CPU 或 DMA 将数据写入 TXD 寄存器,控制器自动将寄存器的数据搬到 TX FIFO 中,再由移位寄存器将 FIFO 中的数据发出。

  • 接收通道:数据传输路径从外部设备到 RX FIFO。

    接收数据时,CPU 或 DMA 可以访问 SPI_RXD 寄存器获取接收数据,控制器自动将接收到的数据从 RX FIFO 搬到寄存器中。

每一笔数据传输完成后,QSPI 控制器都会发送一个传输完成的中断信号给处理器,此时 SPI 中断状态寄存器的 TD 位被置 1。

以下为不同模式下,QSPI 的数据传输流程:
  • 通过 CPU 在中断服务程序中读写 FIFO,完成数据传输,流程图如下:



    1. CPU 模式
  • 通过 GPDMA 在内存和 FIFO 之间搬运数据,完成数据传输,流程图如下:



    2. DMA 模式
QSPI 控制器同时支持使用内部 DMA 通过 AHB 主机接口搬运数据,只需要配置源地址和目标地址,以及数据长度即可。 相关的寄存器配置包括:
  • SPI_IDMA_BTCFG

  • SPI_IDMA_RXADDR

  • SPI_IDMA_RXLEN

  • SPI_IDMA_TXADDR

  • SPI_IDMA_TXLEN



3. IDMA 模式的配置流程

位模式传输流程

SPI 在主机和从机之间传输串行数据,支持按位模式访问,相关的寄存器配置包括:

  • SPI_BMTC

  • SPI_BMCLK

  • SPI_BMTXD

  • SPI_BMRXD

流程图如下: