EDMA使用详解

上传人:汽*** 文档编号:507941808 上传时间:2022-08-29 格式:DOC 页数:11 大小:66.50KB
返回 下载 相关 举报
EDMA使用详解_第1页
第1页 / 共11页
EDMA使用详解_第2页
第2页 / 共11页
EDMA使用详解_第3页
第3页 / 共11页
EDMA使用详解_第4页
第4页 / 共11页
EDMA使用详解_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《EDMA使用详解》由会员分享,可在线阅读,更多相关《EDMA使用详解(11页珍藏版)》请在金锄头文库上搜索。

1、目录前言一.创建一个EDMA事件句柄二.从PRAM(参数RAM区域)中分配事件的重载/连接参数三.给EDMA事件分配传输结束代码,一般分配的结束代码等于EDMA事件通道号四.配置EDMA事件的参数RAM的6个寄存器值4.1.配置过程中需要禁止EDMA传输中断4. 2.参数RAM配置4.3.寄存器配置接口:五.配置EDMA相关中断以及ISR5.1.安装EDMA向量中断号(物理中断号)5.2.是否允许一次传输结束后产生中断(使能传输结束中断)5.3.挂接传输结束中断的中断服务程序(ISR)5.4.使能EDMA事件号的EDMA传输六.示例程序6.1.示例程序16.2.示例程序2前言本文以DM642的

2、VP口为例,描述了基于CSL的EDMA的使用方法,包括EDMA的创建,初始化等.本文中是通过VP的FIFO的阀值设置,触发(启动)EDMA的传输.当FIFO的接收到的数据或者需要发送的数据达到自己设定的阀值,将启动一次EDMA的传输,修改相应的EMDA参数RAM的寄存器值.关于阀值的设置详细见文档“采集功能的配置步骤”。一.创建一个EDMA事件句柄调用接口函数EDMA_Handle EDMA_open(int chaNum, Uint32 flags);在使用EDMA之前,都必须先调用这个函数.示例:如果需要打开VP0的通道A的Y,U,V的传输,对应的事件号EDMA_CHA_VP0EVTYA=

3、16, EDMA_CHA_VP0EVTUA=17,EDMA_CHA_VP0EVTVA=18EDMA_Handle EDMA_VPAY_handle, EDMA_VPAu_handle, EDMA_VPAV_handle;EDMA_VPAY_handle = EDMA_open(EDMA_CHA_VP0EVTYA, EDMA_OPEN_RESET);EDMA_VPAU_handle = EDMA_open(EDMA_CHA_VP0EVTUA, EDMA_OPEN_RESET);EDMA_VPAV_handle = EDMA_open(EDMA_CHA_VP0EVTVA, EDMA_OPEN_RE

4、SET);参数flags-EDMA_OPEN_RESET,表示复位EDMA通道,禁止中断,清除中断标志.具体示例见示例程序1二.从PRAM(参数RAM区域)中分配事件的重载/连接参数函数接口:EDMA_Handle EDMA_allocTable(int tableNum);此函数是为了实现复杂的数据传输方式,在传输BT656模式中,设置两帧数据,每一帧数据分为两场:顶场和底场,第一帧的顶场传输完成连接到底场,底场数据传输完成连接到第二帧的顶场,顶场数据传输完成连接到底场数据,底场数据传输完成再连接到第一帧的顶场数据传输,用四个RLD形成一个循环,每次底场数据传输完成产生中断,通过中断函数,把

5、这一帧的顶场和底场数据入队列,让DSP进行后续处理,由于BT656由一个亮度分量和两个色度分量组成,因此,需要3*4个重载/连接参数具体示例见示例程序1三.给EDMA事件分配传输结束代码,一般分配的结束代码等于EDMA事件通道号函数接口:int EDMA_intAlloc(int tcc);具体示例见示例程序1四.配置EDMA事件的参数RAM的6个寄存器值4.1.配置过程中需要禁止EDMA传输中断EDMA_intDisable(chan-tcc0);EDMA_intDisable(chan-tcc1);4. 2.参数RAM配置函数接口:void EDMA_config(EDMA_Handle

6、hEdma, EDMA_Config *config); typedef struct Uint32 opt; /通道选择 Uint32 src; /源地址 Uint32 cnt; /阵列(二维)/帧(一维)计数 Uint32 dst; /目的地址 Uint32 idx; /阵列/帧索引 Uint32 rld; /重载地址参数 EDMA_Config;EDMA_config(chan-hEdmai, &cfgEdma);/配置EDMA通道事件RAMEDMA_config(chan-hRld4 * i, &cfgEdma); /配置对应通道事件的传输事件RAM组4.3.寄存器配置接口:EDMA_

7、OPT_RMK(pri,esize,ds2,sum,dd2,dum,tcint,tcc,tccm,atcint,atcc,pdts,pdtd,link,fs);EDMA_SRC_RMK(src)EDMA_CNT_RMK(frmcnt,elecnt);EDMA_DST_RMK(dst);EDMA_IDX_RMK(frmidx,eleidx);EDMA_RLD_RMK(elerld,link);术语陈述:对于传704*576大小的Y数据EDMA_CNT_RMK(frmcnt,elecnt);如果配置了EDMA传输的数据宽度为32位.一帧为704个数据,那么frmcnt=576,elecnt=704

8、/4(字节)这里的帧表示对数据的打包形式或者是说一种数据组织结构的总称,上面的例子表示704个数据为一帧.EDMA_IDX_RMK(frmidx,eleidx);采用帧索引的话,eleidx=0,frmidx=704(一帧的数据个数).具体示例见程序示例2五.配置EDMA相关中断以及ISR5.1.安装EDMA向量中断号(物理中断号) EDMA的中断号为8,为固定的函数接口:Void IRQ_map(Uint32 eventId, int intNumber);IRQ_map(IRQ_EVT_EDMAINT, irqId);具体示例见程序示例25.2.是否允许一次传输结束后产生中断(使能传输结束

9、中断)函数接口: void EDMA_intEnable(Uint32 tccIntNum);void EDMA_intDisable(Uint32 tccIntNum);void EDMA_intClear(Uint32 tccIntNum)EDMA_intClear(chan-tcc0);EDMA_intEnable(chan-tcc0); EDMA_intClear(chan-tcc1); EDMA_intEnable(chan-tcc1);具体示例见程序示例25.3.挂接传输结束中断的中断服务程序(ISR)函数接口: EDMA_IntHandler EDMA_intHook(int t

10、ccNum, EDMA_IntHandler funcAddr);EDMA_intHook(chan-tcc0, captureEdmaISR);EDMA_intHook(chan-tcc1, captureEdmaISR);具体示例见程序示例25.4.使能EDMA事件号的EDMA传输函数接口: void EDMA_enableChannel(EDMA_Handle hEdma); for(i = 0; i hEdmai); EDMA_clearChannel(chan-hEdmai); EDMA_enableChannel(chan-hEdmai); IRQ_enable(IRQ_EVT_E

11、DMAINT);具体示例见程序示例2六.示例程序6.1.示例程序1for(j = 0; j hEdmaj = EDMA_open(chan-edmaChanNumj, EDMA_OPEN_RESET)=EDMA_HINV/分配一个事件的重载或连接参数RAM表(6个字) | (chan-hRld4 * j = EDMA_allocTable(-1)=EDMA_HINV | (chan-hRld4 * j + 1 = EDMA_allocTable(-1)=EDMA_HINV | (chan-hRld4 * j + 2 = EDMA_allocTable(-1)=EDMA_HINV | (chan

12、-hRld4 * j + 3 = EDMA_allocTable(-1)=EDMA_HINV /*分配传输结束代码=EDMA事件号*/ | (chan-tccj = EDMA_intAlloc(chan-edmaChanNumj) = -1) retVal = IOM_EALLOC; msg_print(entrymdCreateChan -retVal=%d-jinx,retVal); /* if(port-.*/ msg_print(entry mdCreateChan -retVal=%d-jinx,retVal);6.2.示例程序2EDMA_Config cfgEdma;for(i = 0; i numEdmaChans; i +) Int optFld1 = EDMA_OPT_RMK(/YEVT通道事件参数RAM edmaPri, / 1,EDMA传输具有最高优先级 EDMA_OPT_ESIZE_32BIT, EDMA_OPT_2DS_NO, /0,表示一维源 EDMA_OPT_SUM_NONE, /0,表示固定源地址 EDMA_OPT_2DD_YES, / 1,表示二维目的 EDMA_OPT_DUM_INC, / 1,目的地址根据2DS和FS位增加

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号