⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dd_edma.h

📁 CCS下编写的EDMA数据传输程序
💻 H
字号:
#ifndef __DD_EDMA_H__
#define __DD_EDMA_H__

#include "typedefine.h"
#include "dd_interrupt.h"

#define MAX_EDMA_PARAM_RAM_ENTRY 149

// base address of EDAM parameter registers
#define EDMA_PARAM_BASE 0x01A00000
// base address of EDAM controller
#define EDMA_REG_BASE	0x01A0FF80
// offset of EDMA registers
#define EDMA_EPRH	0x1C/4
#define EDMA_CIPRH	0x24/4
#define	EDMA_CIERH	0x28/4
#define EDMA_CCERH	0x2C/4
#define EDMA_ERH	0x30/4
#define EDMA_EERH	0x34/4
#define EDMA_ECRH	0x38/4
#define EDMA_ESRH	0x3C/4
#define EDMA_PQAR0	0x40/4
#define EDMA_PQAR1	0x44/4
#define EDMA_PQAR2	0x48/4
#define EDMA_PQAR3	0x4C/4
#define EDMA_EPRL	0x5C/4
#define EDMA_PQSR	0x60/4
#define EDMA_CIPRL	0x64/4
#define EDMA_CIERL	0x68/4
#define EDMA_CCERL	0x6C/4
#define EDMA_ERL	0x70/4
#define EDMA_EERL	0x74/4
#define EDMA_ECRL	0x78/4
#define EDMA_ESRL	0x7C/4

// option register constants
#define EMDA_OPT_PRI_URGENT 0
#define EDMA_OPT_PRI_HIGH   (1<<29)
#define EDMA_OPT_PRI_MEDIUM (2<<29)
#define EDMA_OPT_PRI_LOW    (3<<29)

#define EDMA_OPT_ESIZE_32   0
#define EDMA_OPT_ESIZE_16   (1<<27)
#define EDMA_OPT_ESIZE_8    (2<<27)

#define EDMA_OPT_2DS_NO		0
#define EDMA_OPT_2DS_YES	(1<<26)

#define EDMA_OPT_SUM_NONE	0
#define EDMA_OPT_SUM_INC	(1<<24)
#define EDMA_OPT_SUM_DEC	(2<<24)
#define EDMA_OPT_SUM_IDX	(3<<24)

#define EDMA_OPT_2DD_NO		0
#define EDMA_OPT_2DD_YES	(1<<23)

#define EDMA_OPT_DUM_NONE	0
#define EDMA_OPT_DUM_INC	(1<<21)
#define EDMA_OPT_DUM_DEC	(2<<21)
#define EDMA_OPT_DUM_IDX	(3<<21)

#define EDMA_OPT_CTINT_NO	0
#define EDMA_OPT_CTINT_YES	(1<<20)

#define EDMA_OPT_ATCINT_NO	0
#define EDMA_OPT_ATCINT_YES	(1<<12)

#define EDMA_OPT_LINK_NO	0
#define EDMA_OPT_LINK_YES	(1<<1)

#define EDMA_OPT_FS_NO		0
#define EDMA_OPT_FS_YES		1

#define EDMA_OPT_TCC(x)		((((x)&0xf)<<16)|(((x)&0x30)<<9)|(1<<20))

extern far void 	InitEdma();
extern far HANDLE 	AllocEdma(int nEdmaNum); // 用于分配EDMA chaining; nEdmaNum指Chaining中EDMA的个数
extern far HANDLE	AllocEdmaParamEntry(int nEdmaNum);// 用于分配非0~63号EDMA
extern far void 	AllocSpecifiedEdma(HANDLE hEdma); // 用于分配0~63号EDMA
extern far void 	ReleaseEdma(HANDLE hEdma);
extern far HANDLE	FindNextEdma(HANDLE hEdma);// 用于找到Edma chaining中下一个EDMA
extern far void 	SetEdma(HANDLE hEdma,uint32 opt,uint32 src,uint32 cnt,uint32 dst,uint32 idx,uint32 rld);
extern far void 	StartEdma(HANDLE hEdma);
extern far void 	WaitEdma(HANDLE hEdma);
extern far void 	ClearEdma(HANDLE hEdma);
extern far void 	WaitAndClearEdma(HANDLE hEdma);
extern far void 	SetEdmaCompleteFlag(HANDLE hEdma);// 运行一次EDMA,
extern far void 	HookEdmaIsr(HANDLE hEdma,ISR_FUNC pIsr);
extern far void 	UnhookEdmaIsr(HANDLE hEdma);
//extern far interrupt void EdmaIsr(void);
extern far ISR_FUNC     audio_isr();

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -