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

AWR1843中数据EDMA搬移丢失求解

       我的EDMA配置设置如下:

      numPingOrPongSamples = obj->numRangeBins * obj->numRxAntennas;
      aCount = numPingOrPongSamples * BYTES_PER_SAMP_1D;

     if (gMrrDSSMCB.subFrameIndx == 2)
    {
        oneD_destinationBindex = (int16_t)aCount;
        oneD_destinationPongAddress = (uint8_t *)(&obj->radarCube[aCount * 2 * obj->numDopplerBins]);
    }
    else if (gMrrDSSMCB.subFrameIndx == 1)
    {
        oneD_destinationBindex = (int16_t)aCount;
        oneD_destinationPongAddress = (uint8_t *)(&obj->radarCube[aCount * obj->numDopplerBins]);
    }
 else
 {
        oneD_destinationBindex = (int16_t)aCount;
        oneD_destinationPongAddress = (uint8_t *)(&obj->radarCube[0]);
 }

/* MMW_EDMA_CH_1D_OUT – Copies from ping FFT output (even chirp indices)  to L3 */
    retVal =
    EDMAutil_configType1(context->edmaHandle[MMW_DATA_PATH_EDMA_INSTANCE],
        (uint8_t *)(SOC_translateAddress((uint32_t)(&obj->fftOut1D[0]),SOC_TranslateAddr_Dir_TO_EDMA,NULL)),
        oneD_destinationPongAddress,
        MMW_EDMA_CH_1D_OUT,
        false,
        MMW_EDMA_CH_1D_OUT_SHADOW,
        aCount,
        obj->numChirpsPerFrame, //bCount
        0, //srcBidx
        oneD_destinationBindex, // //dstBidx
        eventQueue,
        NULL,
        (uintptr_t) obj);

     启动运行后,发现在EDMA数据搬移过程中,只能将一部分数据搬移到我的目标地址oneD_destinationPongAddress中,剩下部分全部为0,如下图所示(numRxAntennas = 4,numRangeBins = 32,numDopplerBins = 64,numTxAntennas = 3, numChirpsPerFrame = 1):

      

user4162505:

另,,上述得到的edma搬移后的数据结果进一步分析,非0数据中,却只有一组数据在循环(如下图),可以确定adc采集的数据是在不断变化的,但是经过EDMA搬移后的数据为何仅仅都是一次搬移的结果的重复??

Chris Meng:

你好,

请问你的参数配置是如何的?是否使用的是TDM模式,三个TX轮流发射chirp?数据不正确也有可能是RF配置和EDMA配置不匹配。

Chris Meng:

回复 user4162505:

user4162505另,,上述得到的edma搬移后的数据结果进一步分析,非0数据中,却只有一组数据在循环(如下图),可以确定adc采集的数据是在不断变化的,但是经过EDMA搬移后的数据为何仅仅都是一次搬移的结果的重复??

请问你使用的是什么采集代码?会不代码本身就只采集了一次数据,ADCbuf的数据没有变化?

user4162505:

回复 Chris Meng:

ADC采集的数据我有监控过的,每次都是不一样的,虽数据的整体趋势是一致的,但是每组数据都有会有差异的

user4162505:

回复 Chris Meng:

是的,正常的3个TX的轮流发射chirp的,,
"profileCfg 0 77 2 1 30 0 0 6.25 1 32 3062.5 0 0 40","chirpCfg 0 0 0 0 0 0 0 1","chirpCfg 1 1 0 0 0 0 0 2","chirpCfg 2 2 0 0 0 0 0 4","advFrameCfg 3 0 0 1 0","subFrameCfg 0 0 0 1 64 100 0 1 1 100","subFrameCfg 1 0 1 1 64 100 0 1 1 100","subFrameCfg 2 0 2 1 64 100 0 1 1 100",

Chris Meng:

回复 user4162505:

你好,

从你代码看,你搬移的是1D FFT的结果。请问你是如何触发EDMA搬移的?是手动,还是使用event?如果是event,是哪个event?如果手动,是在什么函数里?
输出数据如果循环,有可能是源地址没有正确更新。

user4162505:

回复 Chris Meng:

这个是手动触发的,类似1642的demo处理,采用函数EDMA_startDmaTransfer(context->edmaHandle[MMW_DATA_PATH_EDMA_INSTANCE], channelId);这里channelId = MMW_EDMA_CH_1D_OUT
这一块的这两天反复验证测试的,貌似没有问题的,现在问题的关键集中在adc采集的每一个接收天线的数据 ADCdataBuf 不能正确成功的通过EDMA搬移给1DFFT的输入adcDataIn使用,并且在3个TX发射的周期内,如上述前边所述,最终仅能得到17920个数据,即TX1的64个chirp的接收数据+TX2的6个chirp的接收数据,这是为何??

赞(0)
未经允许不得转载:TI中文支持网 » AWR1843中数据EDMA搬移丢失求解
分享到: 更多 (0)