基于PSoC5 UDB的DMA传输
PSoC5支持24个DMA通道和多达128个事务描述符(TDs),DMA主控制器对通道的请求按照优先级进行仲裁,单个DMA的通道可以传输高达64KB的数据。DMA通道如图3所示:
本文引用地址:https://www.eepw.com.cn/article/131359.htm
图3,DMA通道及TDs
2,设计思路
从图2可以看出,要访问SRAM可以通过CPU直接访问,也可以采用DMA通过Spoke0来访问。若有外部的并行数据(如8bit并行接口)要连续不断的写进SRAM,如图4所示的应用。此时外部数据可以通过Spoke1的IO Interface进入PSoC5,也可通过Spoke6的UDB Interface接受后存放在UDB中。

图4,应用需求
本文将介绍通过PSoC5 的UDB 采集数据并暂存在datapath的FIFO中, 然后通过DMA搬运到SRAM中的设计方案。由于外部数据是连续传输进PSoC5的,所以在设计中采用PING-PONG FIFO以保证连续数据不丢失。如下图5所示采用两个datapath一共4个FIFO,每个FIFO是4个字节深度,数据将根据每个FIFO的状态依次填入FIFO中,每个FIFO满之后将启动DMA将数据从FIFO中搬运到SRAM中。系统一开始4 FIFO都为空,OV7670 sensor的数据首先存放到FIFO0_0中,填满4字节数据后FIFO0_0的满标志置1表示FIFO0_0已满,用该FIFO0_0的满标志触发DMA0将数据搬运到SRAM中。同时OV7670的数据将继续暂存到FIFO0_1中,依次类推。

图5, 数据流传输示意图
评论