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