1558|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

DM648的EDMA3.0应用 [复制链接]

前段时间调试DM648,有一些笔记,跟大家分享一下。虽然用到DM648的朋友会很少,但正因为64+的资料不容易找,所以才把相关笔记整理发出来,希望能对做64+的朋友提供一些方便。
下面的函数描述了EDMA配置到启动的过程(完全寄存器级的操作,更有利于理解EDMA3.0的操作过程)。
EDMA_init()
{
         /* Step 1: EDMA寄存器初始化 */
         QUEPRI=0x10;  //queue优先级设置,0、2、3为0级,1为1级
         QWMTHRA =(16<<8u)|(16 & 0xFF);   //queue超长报错设置,0、1均为16,2、3为0
         EMCR =  0xFFFFFFFF;    //清除所有EDMA事件丢失标志
         CCERRCLR = 0xFFFFFFFF;        //清除所有EDMA3CC错误
         
         //以VP2亮度事件触发为例
         /* Step 2: Programming DMA Channel (and Param set) */
         DCHMAP32=0x80<<5;       //对应EVENT32与第128项PARAM
         DMAQNUM4=0x0;   //将EVENT32项对应到QUEUE0通道
         //设置第128项PARAM值,重载表设为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搬移完成后,用第129项PARAM表装载到第128项表
         LINK_BCNTRLD128 = (frameCount << 16u) | 0x1020u;    // LINK = 129, BCNTRLD = 1
         SRC_DST_CIDX128 = (elementCount << 16u) | (0u);
         CCNT128 = 1;
         //第129项PARAM表为备份表,用于重载到第128项PARAM表
         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
         //将129项PARAM表装载到第128项表,仍然指向第129项PARAM表
         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;//调试时可用于手动触发EDMA事件,观察EDMA模块工作情况
}


点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表