📄 dd_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 + -