QSPI Flash存储控制器(DMA外设控制器)

QSPI Flash存储控制器(DMA外设控制器)

        这里说的DMA外设控制器,并不是AHB总线上的DMA控制器。QSPI Flash存储控制器通过DMA外设控制器与AHB总线上的DMA进行相关SRAM状态和流控的信息通信。为了明确区别,我们把QSPI Flash存储控制器这边的DMA外设控制器,称为“DMA接口”;而将AHB总线上的DMA称为“DMA控制器”。

        ***   AHB总线上的DMA控制是指,CoreLink DMA控制器DMA-330核心。  ***

        DMA接口只能在间接操作模式下,用于内部SRAM和AHB数据总线之间的数据传输。有两个相同DMA接口,一个用于间接读访问控制器;一个用于间接写访问控制器。对于间接读访问控制器,当数据从Flash传输到内部SRAM之后,QSPI控制器触发DMA请求;对于间接写访问控制器,传输命令一触发,QSPI控制器就立即触发DMA请求,并且一直持续DMA请求直到整个间接写传输完成。DMA过程的流控与水印寄存器有关。

信号名 方向 说明
drtype[1:0] DMA接口-->DMA控制器

请求DMA传输类型(single,burst),

另外还有一个flush操作

datype[1:0] DMA控制器-->DMA接口 确认DMA传输类型
drlast DMA接口-->DMA控制器 最后一次DMA请求
drvalid DMA接口-->DMA控制器 请求DMA
drready DMA控制器-->DMA接口 确认DMA请求
davalid DMA控制器-->DMA接口 DMA完成
daready DMA接口-->DMA控制器 确认DMA完成

  

  1. DR总线,drvalid和drready两根信号线,用于DMA接口向DMA控制器请求DMA操作,还用于DMA接口向DMA控制器确认Flush请求。
  2. DA总线,davalid和daready两根信号线,用于DMA控制器向DMA接口汇报数据传输完成,还用于DMA控制器向DMA接口请求flush操作。

        DMA接口配置寄存器(0x20),定义了在burst类型下一个burst传输的字节长度,定义了在single类型下一个single传输的字节长度。这两个长度应该都是2的幂次。       

        一旦触发间接操作,DMA接口就获知了传输的数据量。DMA接口将这些数据分成一组组的burst或一组组的single,最后剩余数据组成一组single。软件来保证最好没有剩余数据。

        举个例子,如果SRAM长度为256字节,需要从Flash设备读取的数据量为512字节,驱动将DMA的burst传输长度设置为256字节,那么当第一个256字节在SRAM中时,DMA接口就会触发DMA请求。只有当第二个256字节传输到SRAM中,才会触发第二次DMA;因为SRAM只有256字节,也就是说在启动第二次DMA之前必须取空SRAM。

        DMA接口还可以获知SRAM填充水平。

       

        

猜你喜欢

转载自blog.csdn.net/lsshao/article/details/119784235