我在使用C6747芯片,需要使用SPI0+EDMA获取FPGA发送来的数据,出现的问题是edmaCcRegs->IPR已经置1,即时间触发中断已经成功了,但是却不能从目标地址获取数据,请各位大侠指点迷津!单独SPI0的接收已经验证没有问题,以下是我的配置程序:
void Rcv_EDMAData(u16 *src, u16 *dst, u32 acnt, u32 bcnt)
{
edmaCcRegs->SECR = (u32)0x1 << CHA_SPI0_Rv;
edmaCcRegs->SECR = (u32)0x1 << CHA_SPI0_Rv;
edmaCcRegs->ECR |= (u32)0x1 << CHA_SPI0_Rv;
edmaCcRegs->EMCR = (u32)0x1 << CHA_SPI0_Rv;
edmaCcRegs->IECR |= (u32)0x1 << SPI0_Rv_TCC;
edmaCcRegs->PARAMSET[CHA_SPI0_Rv].OPT = 0x0 | (1<<2) | (1 << 8) | (SPI0_Rv_TCC << 12) | (1 << 20);
edmaCcRegs->PARAMSET[CHA_SPI0_Rv].SRC = (u32)src;
edmaCcRegs->PARAMSET[CHA_SPI0_Rv].A_B_CNT = (bcnt << 16) | (acnt);
edmaCcRegs->PARAMSET[CHA_SPI0_Rv].DST = (u32)dst;
edmaCcRegs->PARAMSET[CHA_SPI0_Rv].SRC_DST_BIDX = 0x1;
edmaCcRegs->PARAMSET[CHA_SPI0_Rv].LINK_BCNTRLD = 0xffff;
edmaCcRegs->PARAMSET[CHA_SPI0_Rv].SRC_DST_CIDX = (bcnt << 16);
edmaCcRegs->PARAMSET[CHA_SPI0_Rv].CCNT = 1;
edmaCcRegs->DRA[1].DRAE |= (u32)0x1 << SPI0_Rv_TCC;
edmaCcRegs->IESR |= (u32)0x1 << SPI0_Rv_TCC;
edmaCcRegs->EESR = (u32)0x1 << CHA_SPI0_Rv;
edmaCcRegs->IESR = (u32)0x1 << CHA_SPI0_Rv;
}
程序调用
Rcv_EDMAData((u16*)SPI_SPIBUF, revbuf, 2, 5);
u16 revbuf[10];