This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AWR1843BOOST: 采用低速串行数据总线采集ADC数据

Part Number: AWR1843BOOST

您好:

我根据此问题(e2echina.ti.com/.../iwr6843aopevm-mmwaveicboost-dca1000)中的说明,根据文档《使用低速串行总线的实时 ADC 原始数据采集方法 ZHCAB69 》修改AWR1843BOOST的out-of-box代码,试图将ADC数据通过UART传输出来。我根据文档修改代码后,代码DSP核在startSensor后跑飞。请协助分析一下。我的config文件如下:

flushCfg
dfeDataOutputMode 1
channelCfg 15 5 0
adcCfg 2 1
adcbufCfg -1 0 1 1 1
profileCfg 0 77 121 7 38.61 0 0 100 1 128 4166 0 0 30
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 4
frameCfg 0 1 32 0 1000 1 0
lowPower 0 0
guiMonitor -1 0 0 0 0 0 0
cfarCfg -1 0 2 8 4 3 0 15 1
cfarCfg -1 1 0 8 4 4 1 15 1
multiObjBeamForming -1 1 0.5
clutterRemoval -1 0
calibDcRangeSig -1 0 -5 8 256
extendedMaxVelocity -1 0
lvdsStreamCfg -1 0 0 0
compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
measureRangeBiasAndRxChanPhase 0 1.5 0.2
CQRxSatMonitor 0 3 4 95 0
CQSigImgMonitor 0 63 4
analogMonitor 0 0
aoaFovCfg -1 -90 90 -90 90
cfarFovCfg -1 0 0 4.99
cfarFovCfg -1 1 -3.05 3.05
calibData 0 0 0

我在mss_main.c的代码修改部分如下:

函数MmwDemo_initTask内:

#define UART_DMA_TX_CHANNEL 1
#define UART_DMA_RX_CHANNEL 2
DMA_Params dmaParams;
DMA_Handle dmaHandle;

DMA_Params_init(&dmaParams);
dmaHandle = DMA_open(0, &dmaParams, &errCode);
if (dmaHandle == NULL)
{
    System_printf ("Error: Unable to open the DMA Instance [Error code %d]\n", errCode);
    MmwDemo_debugAssert (0);
    return;
}
////////////////////////////////////////
/* Setup the default UART Parameters */
UART_Params_init(&uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.clockFrequency = gMmwMssMCB.cfg.platformCfg.sysClockFrequency;
uartParams.baudRate       = gMmwMssMCB.cfg.platformCfg.loggingBaudRate;
uartParams.isPinMuxDone   = 1U;
uartParams.dmaHandle      = dmaHandle;
uartParams.txDMAChannel   = UART_DMA_TX_CHANNEL;
uartParams.rxDMAChannel   = UART_DMA_RX_CHANNEL;

函数MmwDemo_transmitProcessedOutput内:

 if (pGuiMonSel->statsInfo)
{
    tl[tlvIdx].type = MMWDEMO_OUTPUT_MSG_STATS;
    tl[tlvIdx].length = sizeof(MmwDemo_output_message_stats);
    packetLen += sizeof(MmwDemo_output_message_tl) + tl[tlvIdx].length;
    tlvIdx++;

    MmwDemo_getTemperatureReport();
    tl[tlvIdx].type = MMWDEMO_OUTPUT_MSG_TEMPERATURE_STATS;
    tl[tlvIdx].length = sizeof(MmwDemo_temperatureStats);
    packetLen += sizeof(MmwDemo_output_message_tl) + tl[tlvIdx].length;
    tlvIdx++;
}

/* 20250526, ZHUYIFAN add here */
tl[tlvIdx].type = MMWDEMO_OUTPUT_MSG_L3_DATA;
tl[tlvIdx].length = subFrameCfg->numRangeBins*subFrameCfg->numDopplerBins*subFrameCfg->numVirtualAntennas*4;
packetLen += sizeof(MmwDemo_output_message_tl) + tl[tlvIdx].length;
tlvIdx++;
////////////////////////
header.numTLVs = tlvIdx;
/* Round up packet length to multiple of MMWDEMO_OUTPUT_MSG_SEGMENT_LEN */
header.totalPacketLen = MMWDEMO_OUTPUT_MSG_SEGMENT_LEN *
        ((packetLen + (MMWDEMO_OUTPUT_MSG_SEGMENT_LEN-1))/MMWDEMO_OUTPUT_MSG_SEGMENT_LEN);
header.timeCpuCycles = Pmu_getCount(0);
header.frameNumber = stats->frameStartIntCounter;
    header.subFrameNumber = result->subFrameIdx;
 /* Send stats information */
if (pGuiMonSel->statsInfo == 1)
{
    UART_writePolling (uartHandle,
                       (uint8_t*)&tl[tlvIdx],
                       sizeof(MmwDemo_output_message_tl));

    /* Address translation is done when buffer is received*/
    UART_writePolling (uartHandle,
                       (uint8_t*)timingInfo,
                       tl[tlvIdx].length);
    tlvIdx++;
    UART_writePolling (uartHandle,
                       (uint8_t*)&tl[tlvIdx],
                       sizeof(MmwDemo_output_message_tl));
    UART_writePolling (uartHandle,
                       (uint8_t*)&gMmwMssMCB.temperatureStats,
                       tl[tlvIdx].length);
    tlvIdx++;
}

/* 20250526, ZHUYIFAN add here */
UART_writePolling(uartHandle, (uint8_t*)&tl[tlvIdx], sizeof(MmwDemo_output_message_tl));
uint32_t *outdata;
outdata = 0x51000000;
UART_writePolling(uartHandle, (uint8_t*)(&outdata[0]), tl[tlvIdx].length);
tlvIdx++;
////////////////////////


/* Send padding bytes */
numPaddingBytes = MMWDEMO_OUTPUT_MSG_SEGMENT_LEN - (packetLen & (MMWDEMO_OUTPUT_MSG_SEGMENT_LEN-1));
if (numPaddingBytes<MMWDEMO_OUTPUT_MSG_SEGMENT_LEN)
{
    UART_writePolling (uartHandle,
                        (uint8_t*)padding,
                        numPaddingBytes);
}

其余部分均未修改。

多谢