TI中文支持网
TI专业的中文技术问题搜集分享网站

C6657的EDMA源地址为CONST模式时数据传输不正确

各位工程师你们好:

现在我遇到一个关于C6657  EDMA传输的问题,当设置EDMA的源地址和目的地址为INCR模式时,数据可以正确搬运,但当将源地址设置为CONST模式,目的地址为INCR模式,FIFO_16BIT时,目的地址接收到的数据全部为0。请问这是为什么呢?或者说当源地址为const模式时还需要设置其他一些地方?

另外,在测试时发现,如果源地址为寄存器地址(如0x2320000,GPIO相关寄存器)就能正确搬运,其余地址如L2(0x10800000)、DDR3都不能正确搬运(EDMA是动作了的,只是搬运的数据全部为0)!

Andy Yin1:

我的理解是只有FIFO才可以配置为CONST mode,对于一般的LL2,DDR等地址配置问INCR mode,你这里为何需要对LL2等使用CONST mode?

MaoQTian:

回复 Andy Yin1:

我现在是需要使用EDMA来搬运EMIF16(与FPGA连接)的数据到DDR,但是现在EDMA无法正确搬运EMIF16的数据,EMIF16只使用一个地址(0x78000000)接收数据,当成FIFO使用(不知道这需要进行什么设置吗或者可以直接这样使用?)。我使用的芯片是C6657。EDMA配置如下:

 CSL_edma3Init(&context);

 hMoudle = CSL_edma3Open(&edmaObj,2,NULL,&status);

 chAttr.regionNum = CSL_EDMA3_REGION_GLOBAL; chAttr.chaNum = 0; hChannel = CSL_edma3ChannelOpen(&chObj,2,&chAttr,&status);

 CSL_edma3HwChannelSetupQue(hChannel,CSL_EDMA3_QUE_0);

 CSL_edma3MapDMAChannelToParamBlock(hMoudle,0,0);

 hParamPing = CSL_edma3GetParamHandle(hChannel,0,&status);

 regionIntr.region = CSL_EDMA3_REGION_GLOBAL; regionIntr.intr = 0x1; regionIntr.intrh = 0x0; CSL_edma3HwControl(hMoudle,CSL_EDMA3_CMD_INTR_ENABLE,&regionIntr);

 myParamSetup.option = 0x00100101;        //源地址是CONST模式,目的地址是INCR模式 myParamSetup.srcAddr = (Uint32)srcbuf; myParamSetup.aCntbCnt = 0x00010400; myParamSetup.dstAddr = (Uint32)dstbuf; myParamSetup.srcDstBidx = 0x02; myParamSetup.linkBcntrld = 0x0000ffff; myParamSetup.srcDstCidx = 0x0; myParamSetup.cCnt = 0x00000001; CSL_edma3ParamSetup(hParamPing,&myParamSetup);

 CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL);

 regionIntr.region = CSL_EDMA3_REGION_GLOBAL; regionIntr.intr = 0x0; regionIntr.intrh = 0x0; do {  CSL_edma3GetHwStatus(hMoudle,CSL_EDMA3_QUERY_INTRPEND,&regionIntr); } while (!(regionIntr.intr & 0x1));

EMIF16的配置是NOR FLASH的配置。

如果将源地址和目的地址都设置为INCR模式,这是可以正确搬运数据的。

1、请问下这样的配置为什么不能搬运EMIF的数据呢,是配置有问题吗?

2、在选择instNum和channelNum时有什么规则吗,或者需要注意些什么?

Andy Yin1:

回复 MaoQTian:

可能是跟EMIF的工作模式配置有关,如果直接CPU去读写flash数据是ok的么?

可以参考STK中EMIF例程进行读写flash。http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/47664.aspx

MaoQTian:

回复 Andy Yin1:

你好,EMIF16的CE1挂的nor flash是读写正确的,现在的情况是C6657的CE2接的FPGA,希望通过EMIF16实现DSP与FPGA通信。异步操作太慢了,所以想使用同步访问的方式搬运数据。

还有一个问题想确认下:C6657的EMIF16支持同步访问吗?它只支持nor _asram_mode 和NAND MODE两种方式,而这两种方式都是异步的。

baohua li:

Hi MaoQTian,

你的问题解决了么?我用C6747从FPGA读数据,和你的现象一样?可以分享一下你是怎么解决的么?多谢!

baohua li:

回复 Andy Yin1:

Hi Andy,

我这边遇到同样的问题,我用的是C6747,通过EMIFA 连接FPGA.源地址设置为CONST模式,目的地址为INCR模式,FIFO_16BIT时,目的地址接收到的数据全部为0。请问这是为什么呢?或者说当源地址为const模式时还需要设置其他一些地方?

有C6747 EMIF 做EDMA传输的相关资料嘛? 

user4484884:

回复 Andy Yin1:

你好!有C6657的EDMA的EMIF16读写例程吗?最近在调试C6657 EMIF的FPGA通信,谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » C6657的EDMA源地址为CONST模式时数据传输不正确
分享到: 更多 (0)