找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3445|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

DM648的EDMA3.0應(yīng)用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51088 發(fā)表于 2014-8-20 03:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
前段時間調(diào)試DM648,有一些筆記,跟大家分享一下。雖然用到DM648的朋友會很少,但正因為64+的資料不容易找,所以才把相關(guān)筆記整理發(fā)出來,希望能對做64+的朋友提供一些方便。
下面的函數(shù)描述了EDMA配置到啟動的過程(完全寄存器級的操作,更有利于理解EDMA3.0的操作過程)。
EDMA_init()
{
         /* Step 1: EDMA寄存器初始化 */
         QUEPRI=0x10;  //queue優(yōu)先級設(shè)置,02、30級,11
         QWMTHRA =(16<<8u)|(16 & 0xFF);   //queue超長報錯設(shè)置,0、1均為16,2、30
         EMCR =  0xFFFFFFFF;    //清除所有EDMA事件丟失標志
         CCERRCLR = 0xFFFFFFFF;        //清除所有EDMA3CC錯誤
         
         //VP2亮度事件觸發(fā)為例
         /* Step 2: Programming DMA Channel (and Param set) */
         DCHMAP32=0x80<<5;       //對應(yīng)EVENT32與第128PARAM
         DMAQNUM4=0x0;   //EVENT32項對應(yīng)到QUEUE0通道
         //設(shè)置第128PARAM值,重載表設(shè)為129
         OPT128 = 0x00105301;  // TCINTEN is set,A sync,TCC=5,64bit FIFO
         SRC128 = YSRCA2;
         A_B_CNT128 = ((frameCount << 16u) | (elementCount & 0xFFFFu));    // ACNT = 1536, BCNT = 2
         DST128 = (unsigned int )line_buffer2;
         SRC_DST_BIDX128 = (elementCount << 16u) | (0u);    // SRC_BIDX = 0, DST_BIDX = 1536
         //一次完整的EDMA搬移完成后,用第129PARAM表裝載到第128項表
         LINK_BCNTRLD128 = (frameCount << 16u) | 0x1020u;    // LINK = 129, BCNTRLD = 1
         SRC_DST_CIDX128 = (elementCount << 16u) | (0u);
         CCNT128 = 1;
         //129PARAM表為備份表,用于重載到第128PARAM
         OPT129 = 0x00105301;  // TCINTEN is set,A sync,TCC=5,64bit FIFO
         SRC129 = YSRCA2;
         A_B_CNT129 = ((frameCount << 16u) | (elementCount & 0xFFFFu));    // ACNT = 1536, BCNT = 2
         DST129 = (unsigned int )line_buffer2;
         SRC_DST_BIDX129 = (elementCount << 16u) | (0u);    // SRC_BIDX = 0, DST_BIDX = 1536
         //129PARAM表裝載到第128項表,仍然指向第129PARAM
         LINK_BCNTRLD129 = (frameCount << 16u) | 0x1020u;    // LINK = 129, BCNTRLD = 1
         SRC_DST_CIDX129 = (elementCount << 16u) | (0u);
         CCNT129 = 1;
         
         /* Step 3: Triggering the Transfer and Waiting for Transfer Completion */
         EESRH = 0x1;     //enable event VP2EVTYA channel , number 32
//       ESRH = 0x1;//調(diào)試時可用于手動觸發(fā)EDMA事件,觀察EDMA模塊工作情況
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表