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

关于FFTC协处理器的调用。

看了C6670的FFTC协处理器的例子,然后我在写程序中让FFTC_B做DFT和FFTC_C做IFFT,大概流程如下:

1. 调用FFTC_enable函数,但是这个函数中没有确定调用哪个FFTC的协处理器。

2. 调用fftc_system_init函数,函数中对B和C进行初始化,程序如下:

/* Set up the FFTC Configuration Register */
for (i = 0; i < FFTC_MAX_NUM_TXQUEUES; i ++)
{
fftcGlobalCfg.queueFlowidOverwrite [i] = 0;
fftcGlobalCfg.queuePriority [i] = 0;
}
fftcGlobalCfg.starvationPeriodVal = 0x0;
fftcGlobalCfg.bDisableFFT = 0;

/* Initialize FFTC driver for instance number specified. */
fftcInstNum = CSL_FFTC_B;
fftcDevCfg.cpdmaNum = Cppi_CpDma_FFTC_B_CPDMA;
fftcDevCfg.baseQueueNum = QMSS_FFTC_B_QUEUE_BASE;
fftcDevCfg.cfgRegs = (Void *) (CSL_FFTC_B_CONFIG_REGS);
retVal = Fftc_init (fftcInstNum, &fftcGlobalCfg, &fftcDevCfg);

for (i = 0; i < FFTC_MAX_NUM_TXQUEUES; i ++)
{
fftcGlobalCfg.queueFlowidOverwrite [i] = 1;
fftcGlobalCfg.queuePriority [i] = 1;
}
fftcGlobalCfg.starvationPeriodVal = 0x0;
fftcGlobalCfg.bDisableFFT = 0;

/* Initialize FFTC driver for instance number specified. */
fftcInstNum = CSL_FFTC_C;
fftcDevCfg.cpdmaNum = Cppi_CpDma_FFTC_C_CPDMA;
fftcDevCfg.baseQueueNum = QMSS_FFTC_C_QUEUE_BASE;
fftcDevCfg.cfgRegs = (Void *) (CSL_FFTC_C_CONFIG_REGS);
retVal = Fftc_init (fftcInstNum, &fftcGlobalCfg, &fftcDevCfg);

3. 之后就是对FFTC协处理器的调用,但是只调用了fftcInstNum这个变量。

之后我的调用改成FFTC_C做DFT,FFTC_B做IFFT。这样都没问题。但是我将FFTC_A做DFT,FFTC_B做IFFT。程序可运行,但是BCP和FFTC输出数据都为0。

初始化中的配置也是改为相应的配置:

/* Initialize FFTC driver for instance number specified. */
fftcInstNum = CSL_FFTC_A;
fftcDevCfg.cpdmaNum = Cppi_CpDma_FFTC_A_CPDMA;
fftcDevCfg.baseQueueNum = QMSS_FFTC_A_QUEUE_BASE;
fftcDevCfg.cfgRegs = (Void *) (CSL_FFTC_A_CONFIG_REGS);
retVal = Fftc_init (fftcInstNum, &fftcGlobalCfg, &fftcDevCfg);

所以想问为何无法正确调用FFTC_A处理器,还是有其它的部分需要更改的。

Andy Yin1:

  不同FFTC的区别在于寄存器等的基地址,TxQ的起始序号不一样,其他的使用机制都是一样,建议重点看看这一块,还有可以在初始化之后看看相关寄存器是否配置好。

赞(0)
未经允许不得转载:TI中文支持网 » 关于FFTC协处理器的调用。
分享到: 更多 (0)