各位老师好:
我在将例程 fftcMCK2LC66BiosExampleProject 从一个FFTC处理数据 修改为 FFTC_0和FFTC_1同时处理数据时,RX打不开,可能是RXOBJ_1配置中rxCfg_1.cppiRxQNum= myQNum; 错误,所以 FFTC_1 与DSP 之间的 QUEUE channel 是多少 ? 希望老师给够详细解答。
rxobj_1配置代码如下:
switch (coreNum)
{
case 0: {
myQNum = 712;
destQNum = 713;
accChanNum = FFTC_RX_ACC_CHANNEL_NUM; break;
}
case 1: {
myQNum = 713;
destQNum = 714;
accChanNum = FFTC_RX_ACC_CHANNEL_NUM + 1;
break;
}
case 2: {
myQNum = 714;
destQNum = 715;
accChanNum = FFTC_RX_ACC_CHANNEL_NUM + 2;
break;
}
case 3: {
myQNum = 715;
destQNum = 712;
accChanNum = FFTC_RX_ACC_CHANNEL_NUM + 3;
break;
}
default:
goto error;
}
memset (&rxCfg_1, 0, sizeof (rxCfg_1));
rxCfg_1.useFlowId = -1;
rxCfg_1.bManageRxFlowCfg = 1; /* Let the driver do Rx FDQ management */
rxCfg_1.rxFlowCfg.drvCfg.descType = Cppi_DescType_HOST;
rxCfg_1.rxFlowCfg.drvCfg.cppiNumDesc = 2;
rxCfg_1.rxFlowCfg.drvCfg.bufferSize = (pFFTAppCfg->numOutputSamples * FFTC_SAMPLE_SIZE + 4) * pFFTAppCfg->numBlocks + 4;
rxCfg_1.rxFlowCfg.drvCfg.bPSInfoPresent = 0;
rxCfg_1.rxFlowCfg.drvCfg.psLocation = Cppi_PSLoc_PS_IN_SOP;
rxCfg_1.cppiRxQNum = myQNum;
rxCfg_1.bUseInterrupts = 1;
rxCfg_1.bManageAccumList = 1; /* Let driver do the ISR/Accum handling */
rxCfg_1.accumCfg.drvCfg.bEnablePacing = 0;
rxCfg_1.accumCfg.drvCfg.intThreshold = 1;
rxCfg_1.accumCfg.drvCfg.accChannelNum = accChanNum;
rxCfg_1.bBlockOnResult = 1;
if ((hRxObj_1 = Fftc_rxOpen (hFFTC_0, &rxCfg_1)) == NULL)
{
System_printf ("[Core %d]: 1 Rx object open failed \n", coreNum);
goto error;
}
else
{
System_printf ("[Core %d]: 1 Rx flow %d opened successfully using Rx queue %d \n", coreNum,
Fftc_rxGetFlowId (hRxObj_1), Fftc_rxGetRxQueueNumber (hRxObj_1));
}
Shine:
请参考e2echina.ti.com/…/477931
kang xiao:
回复 Shine:
谢谢你的回答
1.为什么程序中 对于case 0: myQNum = 712; destQNum = 713; accChanNum = FFTC_RX_ACC_CHANNEL_NUM(16); ?
2.既然TX QUEUE Queues 688 to 691 are attached to FFTC‐1,为什么例程中 Tx queue = 0 ; ?
/* Lets run 16 sample size request using FFTC Tx queue 0. */ queueNum = 0;
/* Run the example */ fftc_run_example (coreNum, queueNum);