您好:
我根据此问题(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); }
其余部分均未修改。
多谢