基于PSoC5 UDB的DMA傳輸
PSoC5支持24個(gè)DMA通道和多達128個(gè)事務(wù)描述符(TDs),DMA主控制器對通道的請求按照優(yōu)先級進(jìn)行仲裁,單個(gè)DMA的通道可以傳輸高達64KB的數據。DMA通道如圖3所示:
本文引用地址:http://dyxdggzs.com/article/131359.htm
圖3,DMA通道及TDs
2,設計思路
從圖2可以看出,要訪(fǎng)問(wèn)SRAM可以通過(guò)CPU直接訪(fǎng)問(wèn),也可以采用DMA通過(guò)Spoke0來(lái)訪(fǎng)問(wèn)。若有外部的并行數據(如8bit并行接口)要連續不斷的寫(xiě)進(jìn)SRAM,如圖4所示的應用。此時(shí)外部數據可以通過(guò)Spoke1的IO Interface進(jìn)入PSoC5,也可通過(guò)Spoke6的UDB Interface接受后存放在UDB中?! ?/p>

圖4,應用需求
本文將介紹通過(guò)PSoC5 的UDB 采集數據并暫存在datapath的FIFO中, 然后通過(guò)DMA搬運到SRAM中的設計方案。由于外部數據是連續傳輸進(jìn)PSoC5的,所以在設計中采用PING-PONG FIFO以保證連續數據不丟失。如下圖5所示采用兩個(gè)datapath一共4個(gè)FIFO,每個(gè)FIFO是4個(gè)字節深度,數據將根據每個(gè)FIFO的狀態(tài)依次填入FIFO中,每個(gè)FIFO滿(mǎn)之后將啟動(dòng)DMA將數據從FIFO中搬運到SRAM中。系統一開(kāi)始4 FIFO都為空,OV7670 sensor的數據首先存放到FIFO0_0中,填滿(mǎn)4字節數據后FIFO0_0的滿(mǎn)標志置1表示FIFO0_0已滿(mǎn),用該FIFO0_0的滿(mǎn)標志觸發(fā)DMA0將數據搬運到SRAM中。同時(shí)OV7670的數據將繼續暫存到FIFO0_1中,依次類(lèi)推?! ?/p>

圖5, 數據流傳輸示意圖
評論