我使用的C6416芯片的开发板,搭建的FPGA+DSP的系统,现在需要DSP发送数据回FPGA。中间是使用一个EDMA通信。
void main() { /*等待FPGA配置完后DSP复位*/DelayMSecond(0,1500);//1000InitDSP(); //初始化DSPwhile(1){/* 发图测试 */ 0;if(transImgEnable == 0) {transImgEnable = 1;StartEdma(CHANNEL_OF_TRANS_TO_FIFO);else {;} }
StartEdma函数是给ESR寄存器写入事件,正常情况下应该是给ESR写入事件后会产生一个中断,然后开始EDMA传输。现在的问题是transImgEnable 这个参数是传输完成后赋值为0,然后程序可以继续进if的判断,继续发数据。但实际上StartEdma后根本进不了中断,如果前面去掉transImgEnable 这个参数判断,就直接一致在while循环里面一直StartEdma的话,这样是可以进中断的。这个问题太奇怪了,有人能帮我解答吗?
Tony Tang:
Peng Yu1给ESR写入事件后会产生一个中断
为什么说写ESR会产生中断?只会触发EDMA传输的啊。