编程指南
7 Jun 2024
Read time: 1 minute(s)
初始化流程
在进行数据传输之前,需要对 SPI 接口和控制器进行初始化。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,完成数据传输,流程图如下:
-
通过 GPDMA 在内存和 FIFO 之间搬运数据,完成数据传输,流程图如下:
QSPI 控制器同时支持使用内部 DMA 通过 AHB 主机接口搬运数据,只需要配置源地址和目标地址,以及数据长度即可。 相关的寄存器配置包括:
-
SPI_IDMA_BTCFG
-
SPI_IDMA_RXADDR
-
SPI_IDMA_RXLEN
-
SPI_IDMA_TXADDR
-
SPI_IDMA_TXLEN
位模式传输流程
SPI 在主机和从机之间传输串行数据,支持按位模式访问,相关的寄存器配置包括:
-
SPI_BMTC
-
SPI_BMCLK
-
SPI_BMTXD
-
SPI_BMRXD
流程图如下: