This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6416 QDMA读取EMIFB数据不对问题

我是用SEED-DEC6416T开发板,DSP通过EMIFB的BCE2空间读取FPGA的异步FIFO的数据;EMIFB为16位异步模式,用FIFO写满信号触发DSP进入外部中断INT7,开启QDMA传输数据,QDMA每次从BCE2空间的首地址搬移8192(FIFO的深度)个数据到内部RAM,有两个问题:

1、程序跑起来后,在CCS的memory中观察到,BCE2地址空间的值都是全部相同的,QDMA从0x68000000(BCE2空间的首地址)搬移得到的8192个数据也全部是相等的,这与FPGA写入FIFO的数据不相符的;

2、QDMA搬移数据过程中,用示波器观察EMIFB的BARE信号,只能看到一个脉冲信号,而不是连续的8192个周期性的脉冲信号,但QDMA目的地址空间会有8192个数据更新。

下面是我EMIFB和EDMA的配置程序:

////////////////////////////////////////////////////////////////////////////
//EMIFB 寄存器配置函数
////////////////////////////////////////////////////////////////////////////
void set_emifb(void) 
{
EMIFB_Config myEmifbCfg={
0x00012C38, //GBLCTL:ECLKOUT2输出时钟信号168MHZ,外部器件准备就绪并申请、拥有EMIF,HOLD输入允许
0xFFFFFF03, //CE0CTL:
0xFFFFFF03, //CE1CTL:
0xFFF20311, //CE2CTL:Rsetup=2,Rstrobe=3,hold=1;16位异步
0xFFFFFF03, //CE3CTL
0x00000000,
0x00000000,
0x00000000,
0x00000002, //CESEC0
0x00000002, //CESEC1
0x00000002, //CESEC2
0x00000002 //CESEC3 
};

EMIFB_config(&myEmifbCfg);
}

////////////////////////////////////////////////////////////////////////////
//QDMA寄存器配置函数
////////////////////////////////////////////////////////////////////////////
void set_qdma(void)

EDMA_Config myQdmaCfg={
0x28370000, //PRI_HIGH,16BIT,1 D,S_FIX,D_INC,TCINT=1,TCCM:TCC=000111,NO_LINK 
SRC_ADDR, //Src addr
0x00012000, //Transfer Count,element size=8192
DST_ADDR, //Dst addr
0x00000001, //Index
0x00000000, //Element count reload and link addr
};

myhEdma=EDMA_open(EDMA_CHA_EXTINT7,EDMA_OPEN_ENABLE);
EDMA_qdmaConfig(&myQdmaCfg);
EDMA_enableChannel(myhEdma);
EDMA_setChannel(myhEdma);

printf("qdma is running!\n");
while(!(EDMA_getPriQStatus()) & EDMA_OPT_PRI_HIGH);
EDMA_close(myhEdma);

}

我没有找出来我的软件配置和硬件连接存在什么问题,希望各位大神分析一下出错的可能原因,做毕设急呀!!