Hello,
I was trying to record raw data into a file on PC through UART with AWR1642BOOST and MMWAVE DEVPACK. I modified dss_main.c of mmw demo in the sdk like this:
...
/**
* @b Description
* @n
* Function to process Data Path events at runtime.
*
* @param[in] event
* Data Path Event
*
* @retval
* Not Applicable.
*/
static int32_t MmwDemo_dssDataPathProcessEvents(UInt event)
{
MmwDemo_DSS_DataPathObj *dataPathObj;
volatile uint32_t startTime;
dataPathObj = &gMmwDssMCB.dataPathObj[gMmwDssMCB.subFrameIndx];
/* Handle dataPath events */
switch(event)
{
case MMWDEMO_CHIRP_EVT:
UART_writePolling(gMmwDssMCB.loggingUartHandle, (uint8_t*) SOC_XWR16XX_DSS_ADCBUF_BASE_ADDRESS, 1024);
/* Increment event stats */
gMmwDssMCB.stats.chirpEvt++;
// {
// uint16_t chirpIndex;
// for (chirpIndex = 0; chirpIndex < dataPathObj->numChirpsPerChirpEvent; chirpIndex++)
// {
// MmwDemo_processChirp(dataPathObj, (uint16_t) chirpIndex);
// }
// }
// gMmwDssMCB.dataPathContext.chirpProcToken--;
// dataPathObj->timingInfo.chirpProcessingEndTime = Cycleprofiler_getTimeStamp();
//
// if (dataPathObj->chirpCount == 0)
// {
// MmwDemo_waitEndOfChirps(dataPathObj);
// Load_update();
// dataPathObj->timingInfo.activeFrameCPULoad = Load_getCPULoad();
//
// dataPathObj->cycleLog.interChirpProcessingTime = gCycleLog.interChirpProcessingTime;
// dataPathObj->cycleLog.interChirpWaitTime = gCycleLog.interChirpWaitTime;
// gCycleLog.interChirpProcessingTime = 0;
// gCycleLog.interChirpWaitTime = 0;
//
// startTime = Cycleprofiler_getTimeStamp();
// MmwDemo_interFrameProcessing(dataPathObj);
// dataPathObj->timingInfo.interFrameProcCycles = (Cycleprofiler_getTimeStamp() - startTime);
//
// dataPathObj->cycleLog.interFrameProcessingTime = gCycleLog.interFrameProcessingTime;
// dataPathObj->cycleLog.interFrameWaitTime = gCycleLog.interFrameWaitTime;
// gCycleLog.interFrameProcessingTime = 0;
// gCycleLog.interFrameWaitTime = 0;
//
// /* Sending range bias and Rx channel phase offset measurements to MSS and from there to CLI */
// if(dataPathObj->cliCommonCfg->measureRxChanCfg.enabled)
// {
// //MmwDemo_measurementResultOutput (dataPathObj);
// }
//
// /* Sending detected objects to logging buffer */
// //MmwDemo_dssDataPathOutputLogging (dataPathObj);
// dataPathObj->timingInfo.interFrameProcessingEndTime = Cycleprofiler_getTimeStamp();
// }
break;
case MMWDEMO_FRAMESTART_EVT:
/* Increment event stats */
gMmwDssMCB.stats.frameStartEvt++;
// Load_update();
// dataPathObj->timingInfo.interFrameCPULoad = Load_getCPULoad();
// MmwDemo_dssAssert(dataPathObj->chirpCount == 0);
break;
case MMWDEMO_BSS_FRAME_TRIGGER_READY_EVT:
/* Increment event stats */
gMmwDssMCB.stats.frameTrigEvt++;
break;
default:
break;
}
return 0;
}
...
And I used python to read data from 4th com of DEVPACK. I do get 1 piece of data in the file, but then I get the following error from the first COM of AWR1642BOOST:
DSS Frame Processing Deadline Miss Exception.
I have set the frame period to 1000ms and I think that it would be enough time to send 1024 bytes of data through UART. Besides, I have commented all other processings in the handler.
I sent the following configurations to the board:
dfeDataOutputMode 1
channelCfg 15 3 0
adcCfg 2 1
adcbufCfg -1 0 0 1 0
profileCfg 0 77 429 7 57.14 0 0 70 1 64 5209 0 0 30
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 2
frameCfg 0 1 4 0 1000 1 0
guiMonitor -1 0 0 0 0 0 0
cfarCfg -1 0 0 8 4 4 0 5120
cfarCfg -1 1 0 4 2 3 0 5120
peakGrouping -1 1 1 1 1 255
multiObjBeamForming -1 1 0.5
clutterRemoval -1 0
calibDcRangeSig -1 0 -5 8 256
extendedMaxVelocity -1 0
compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
measureRangeBiasAndRxChanPhase 0 1.5 0.2
Could you please help me to find out why this error occurs?
Thank you very much!
Peijun