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.
Hello, everyone.
I'm using AWR2243BOOST and DCA 1000EVM for data capture. I want to use mmWaveLink_SingleChip_Example to capture data without using mmwavestudio. After gathering the data, I plot 2DFFT. But the figure exsits obvious doppler expansion. Everything in the testing experionment is stationary, so it seems that Doppler diffusion should not be present. I don't know what's wrong.
The plot is shown below:
Here is my mmwaveconfig.txt:
# #For detailed view of mmWave Radar configuration structure #please refer #ti\control\mmwavelink\docs\doxygen\html\index.html # # #Global configuration #Advanced frame test enable/disable; 1 - Advanced frame; 0 - Legacy frame #Continuous mode test enable/disable; 1 - Enable; 0 - Disable #Dynamic chirp test enable/disable; 1 - Enable; 0 - Disable; This should not be enabled if Advanced chirp test is enabled #Dynamic profile test enable/disable; 1 - Enable; 0 - Disable #Advanced chirp test enable/disable; 1 - Enable; 0 - Disable; The legacy chirp API is not required if this is enabled #Firmware download enable/disable; 1 - Enable; 0 - Disable #mmWaveLink logging enable/disable; 1 - Enable; 0 - Disable #Calibration enable/disable; To perform calibration store/restore; 1 - Enable; 0 - Disable #Calibration Store/Restore; If CalibEnable = 1, then whether to store/restore; 1 - Store; 0 - Restore #Transport mode; 1 - I2C; 0 - SPI #Flash connected enable/disable; 1 - Enable; 0 - Disable # LinkAdvanceFrameTest=0; LinkContModeTest=0; LinkDynChirpTest=1; LinkDynProfileTest=0; LinkAdvChirpTest=0; EnableFwDownload=1; EnableMmwlLogging=0; CalibEnable=0; CalibStoreRestore=1; TransferMode=0; IsFlashConnected=1; #END # #power on master arguments, please modify if needed. #rlClientCbs_t: crcType 0:16Bit/1:32Bit/2:64Bit, ackTimeout # crcType=1; ackTimeout=1000; #END # #channel config parameters, please modify if needed. #rlChanCfg_t # channelTx=3; channelRx=15; cascading=0; #END # #ADC out config parameters, please modify if needed. #rlAdcOutCfg_t # adcBits=2; adcFormat=2; #END # #DATA format config parameters, please modify if needed. #rlDevDataFmtCfg_t # rxChanEn=15; adcBitsD=2; adcFmt=1; iqSwapSel=0; chInterleave=0; #END # #Low power config Paramters, please modify if needed. #rlLowPowerModeCfg_t # anaCfg=0; lpAdcMode=0; #END # #Data Path config parameters, please modify if needed #rlDevDataPathCfg_t # intfSel=1; transferFmtPkt0=1; transferFmtPkt1=0; cqConfig=2; cq0TransSize=64; cq1TransSize=64; cq2TransSize=64; #END # #LVDS clock config parameters, please modify if needed #rlDevDataPathClkCfg_t # laneClk=1; dataRate=1; #END # #SET HSI clock parameters, please modify if needed. #rlDevHsiClk_t # hsiClk=9 #END # #LANE config parameters, please modify if needed. #rlDevLaneEnable_t # laneEn=15; #END # #LVDS Lane Config parameters, please modify if needed. #rlDevLvdsLaneCfg_t # laneFmtMap=0; laneParamCfg=1; #END # #Programmable Filter config parameters, please modify if needed. #rlRfProgFiltConf_t # profileId=0; coeffStartIdx=0; progFiltLen=0; progFiltFreqShift=45; #END # #Profile config parameters, please modify if needed. #rlProfileCfg_t # profileId=0; pfVcoSelect=2; startFreqConst=1439117143; idleTimeConst=10000; adcStartTimeConst=600; rampEndTime=6000; txOutPowerBackoffCode=0; txPhaseShifter=0; freqSlopeConst=621; txStartTime=0; numAdcSamples=256; digOutSampleRate=10000; hpfCornerFreq1=0; hpfCornerFreq2=0; rxGain=50; #END # #Profile config parameters, please modify if needed. #rlProfileCfg_t # profileId=1; pfVcoSelect=2; startFreqConst=1439117143; idleTimeConst=1000; adcStartTimeConst=700; rampEndTime=6000; txOutPowerBackoffCode=0; txPhaseShifter=0; freqSlopeConst=621; txStartTime=0; numAdcSamples=256; digOutSampleRate=10000; hpfCornerFreq1=0; hpfCornerFreq2=0; rxGain=30; #END # #Profile config parameters, please modify if needed. #rlProfileCfg_t # profileId=2; pfVcoSelect=2; startFreqConst=1439117143; idleTimeConst=1000; adcStartTimeConst=800; rampEndTime=6000; txOutPowerBackoffCode=0; txPhaseShifter=0; freqSlopeConst=621; txStartTime=0; numAdcSamples=256; digOutSampleRate=10000; hpfCornerFreq1=0; hpfCornerFreq2=0; rxGain=30; #END # #Profile config parameters, please modify if needed. #rlProfileCfg_t # profileId=3; pfVcoSelect=2; startFreqConst=1439117143; idleTimeConst=1000; adcStartTimeConst=900; rampEndTime=6000; txOutPowerBackoffCode=0; txPhaseShifter=0; freqSlopeConst=621; txStartTime=0; numAdcSamples=256; digOutSampleRate=10000; hpfCornerFreq1=0; hpfCornerFreq2=0; rxGain=30; #END # #Chirp Configuration parameters, please modify if needed. #rlChirpCfg_t # chirpStartIdx=0; chirpEndIdx=63; profileIdCPCFG=0; startFreqVar=0; freqSlopeVar=0; idleTimeVar=0; adcStartTimeVar=0; txEnable=1; #END # #Chirp Configuration parameters, please modify if needed. #rlChirpCfg_t # chirpStartIdx=64; chirpEndIdx=127; profileIdCPCFG=0; startFreqVar=0; freqSlopeVar=0; idleTimeVar=0; adcStartTimeVar=0; txEnable=2; #END # #Frame configuration parameters, please modify if needed. #rlFrameCfg_t # chirpStartIdxFCF=0; chirpEndIdxFCF=127; frameCount=10; loopCount=1; periodicity=80000000; #20000000 triggerDelay=0; numAdcSamples=512; triggerSelect=1; #END # #Advance Frame configuration parameters, please modify if needed. numOfSubFrames=4; forceProfile=0; numFrames=100; loopBackCfg=0; triggerSelect=1; frameTrigDelay=0; #end # #4th sub Frame configuration parameters, please modify if needed. forceProfileIdx=0; chirpStartIdxAF=0; numOfChirps=1; numLoops=8; burstPeriodicity=5000000; chirpStartIdxOffset=0; numOfBurst=1; numOfBurstLoops=1; subFramePeriodicity=5000000; numAdcSamplesAF=256 numChirpsInDataPacket=1 #end # #3rd sub Frame configuration parameters, please modify if needed. forceProfileIdx=0; chirpStartIdxAF=0; numOfChirps=1; numLoops=8; burstPeriodicity=5000000; chirpStartIdxOffset=0; numOfBurst=1; numOfBurstLoops=1; subFramePeriodicity=5000000; numAdcSamplesAF=256 numChirpsInDataPacket=1 #end # #2nd sub Frame configuration parameters, please modify if needed. forceProfileIdx=0; chirpStartIdxAF=0; numOfChirps=1; numLoops=8; burstPeriodicity=5000000; chirpStartIdxOffset=0; numOfBurst=1; numOfBurstLoops=1; subFramePeriodicity=5000000; numAdcSamplesAF=256 numChirpsInDataPacket=1 #end # #1st sub Frame configuration parameters, please modify if needed. forceProfileIdx=0; chirpStartIdxAF=0; numOfChirps=1; numLoops=8; burstPeriodicity=5000000; chirpStartIdxOffset=0; numOfBurst=1; numOfBurstLoops=1; subFramePeriodicity=5000000; numAdcSamplesAF=256 numChirpsInDataPacket=1 #end # #Continuous mode config parameters #startFreqConst=1435384036; #txOutPowerBackoffCode=0; #txPhaseShifter=0; #digOutSampleRate=10000; #hpfCornerFreq1=0; #hpfCornerFreq2=0; contModeRxGain=30; vcoSelect=3388; #end # #Advanced chirp config parameters AdvChirp_chirpParamIdx=0; AdvChirp_resetMode=0; AdvChirp_deltaResetPeriod=0; AdvChirp_deltaParamUpdatePeriod=0; AdvChirp_sf0ChirpParamDelta=0; AdvChirp_sf1ChirpParamDelta=0; AdvChirp_sf2ChirpParamDelta=0; AdvChirp_sf3ChirpParamDelta=0; AdvChirp_lutResetPeriod=4; AdvChirp_lutParamUpdatePeriod=1; AdvChirp_lutPatternAddressOffset=0; AdvChirp_numPatterns=4; AdvChirp_lutBurstIndexOffset=0; AdvChirp_lutSfIndexOffset=0; AdvChirp_lutChirpParamSize=0; AdvChirp_lutChirpParamScale=0; AdvChirp_maxTxPhShifIntDither=0; #end # #Advanced chirp Profile config LUT parameters #Each data parameter is 4 bits AdvChirpLUT_ProfileConfig_LUTAddrOff=0; AdvChirpLUT_ProfileConfig_Data1=0; AdvChirpLUT_ProfileConfig_Data2=1; AdvChirpLUT_ProfileConfig_Data3=2; AdvChirpLUT_ProfileConfig_Data4=3; #end # #Advanced chirp Start Freq config LUT parameters #The Start Freq data is in GHz #Each data parameter is 1 or 2 or 4 bytes depending on ParamSize # ParamSize Size in bytes # 0 4 # 1 2 # 2 1 AdvChirpLUT_StartFreqConfig_LUTAddrOff=4; AdvChirpLUT_StartFreqConfig_ParamSize=1; AdvChirpLUT_StartFreqConfig_ParamScale=0; AdvChirpLUT_StartFreqConfig_Data1=-0.000001; AdvChirpLUT_StartFreqConfig_Data2=0.000000; AdvChirpLUT_StartFreqConfig_Data3=0.000001; AdvChirpLUT_StartFreqConfig_Data4=-0.000001; #end # #Advanced chirp Freq Slope config LUT parameters #The Freq Slope data is in MHz/us #Each data parameter is 1 byte AdvChirpLUT_FreqSlopeConfig_LUTAddrOff=12; AdvChirpLUT_FreqSlopeConfig_Data1=-0.050; AdvChirpLUT_FreqSlopeConfig_Data2=0.000; AdvChirpLUT_FreqSlopeConfig_Data3=-0.050; AdvChirpLUT_FreqSlopeConfig_Data4=0.050; #end # #Advanced chirp Idle time config LUT parameters #The Idle time data is in us #Each data parameter is 1 or 2 bytes depending on ParamSize # ParamSize Size in bytes # 0 2 # 1 1 AdvChirpLUT_IdleTimeConfig_LUTAddrOff=16; AdvChirpLUT_IdleTimeConfig_ParamSize=0; AdvChirpLUT_IdleTimeConfig_ParamScale=0; AdvChirpLUT_IdleTimeConfig_Data1=0.01; AdvChirpLUT_IdleTimeConfig_Data2=0.02; AdvChirpLUT_IdleTimeConfig_Data3=0.00; AdvChirpLUT_IdleTimeConfig_Data4=0.01; #end # #Advanced chirp ADC time config LUT parameters #The ADC start time data is in us #Each data parameter is 1 or 2 bytes depending on ParamSize # ParamSize Size in bytes # 0 2 # 1 1 AdvChirpLUT_ADCTimeConfig_LUTAddrOff=24; AdvChirpLUT_ADCTimeConfig_ParamSize=0; AdvChirpLUT_ADCTimeConfig_ParamScale=0; AdvChirpLUT_ADCTimeConfig_Data1=0.02; AdvChirpLUT_ADCTimeConfig_Data2=0.01; AdvChirpLUT_ADCTimeConfig_Data3=0.00; AdvChirpLUT_ADCTimeConfig_Data4=0.01; #end # #Advanced chirp Tx Enable config LUT parameters #Each data parameter is 4 bits #b0:TX0 ; b1:TX1; b2:TX2 AdvChirpLUT_TxEnConfig_LUTAddrOff=32; AdvChirpLUT_TxEnConfig_Data1=7; AdvChirpLUT_TxEnConfig_Data2=3; AdvChirpLUT_TxEnConfig_Data3=1; AdvChirpLUT_TxEnConfig_Data4=2; #end # #Advanced chirp BPM Enable config LUT parameters #Each data parameter is 4 bits #b0:TX0 ; b1:TX1; b2:TX2 AdvChirpLUT_BpmEnConfig_LUTAddrOff=36; AdvChirpLUT_BpmEnConfig_Data1=7; AdvChirpLUT_BpmEnConfig_Data2=3; AdvChirpLUT_BpmEnConfig_Data3=1; AdvChirpLUT_BpmEnConfig_Data4=2; #end # #Advanced chirp Tx0 Phase Shifter config LUT parameters #The phase shifter data is in degrees #Each data parameter is 1 byte AdvChirpLUT_Tx0PhShiftConfig_LUTAddrOff=40; AdvChirpLUT_Tx0PhShiftConfig_Data1=5.625; AdvChirpLUT_Tx0PhShiftConfig_Data2=11.250; AdvChirpLUT_Tx0PhShiftConfig_Data3=16.875; AdvChirpLUT_Tx0PhShiftConfig_Data4=16.875; #end # #Advanced chirp Tx1 Phase Shifter config LUT parameters #The phase shifter data is in degrees #Each data parameter is 1 byte AdvChirpLUT_Tx1PhShiftConfig_LUTAddrOff=44; AdvChirpLUT_Tx1PhShiftConfig_Data1=0.000; AdvChirpLUT_Tx1PhShiftConfig_Data2=5.625; AdvChirpLUT_Tx1PhShiftConfig_Data3=0.000; AdvChirpLUT_Tx1PhShiftConfig_Data4=5.625; #end # #Advanced chirp Tx2 Phase Shifter config LUT parameters #The phase shifter data is in degrees #Each data parameter is 1 byte AdvChirpLUT_Tx2PhShiftConfig_LUTAddrOff=48; AdvChirpLUT_Tx2PhShiftConfig_Data1=5.625; AdvChirpLUT_Tx2PhShiftConfig_Data2=0.000; AdvChirpLUT_Tx2PhShiftConfig_Data3=5.625; AdvChirpLUT_Tx2PhShiftConfig_Data4=0.000; #end
And here is my cf.json:
{ "DCA1000Config": { "dataLoggingMode": "raw", "dataTransferMode": "LVDSCapture", "dataCaptureMode": "ethernetStream", "lvdsMode": 1, "dataFormatMode": 3, "packetDelay_us": 25, "ethernetConfig": { "DCA1000IPAddress": "192.168.33.180", "DCA1000ConfigPort": 4096, "DCA1000DataPort": 4098 }, "ethernetConfigUpdate": { "systemIPAddress": "192.168.33.30", "DCA1000IPAddress": "192.168.33.180", "DCA1000MACAddress": "12.34.56.78.90.12", "DCA1000ConfigPort": 4096, "DCA1000DataPort": 4098 }, "captureConfig": { "fileBasePath": "C:\\ti\\mmwave_studio_03_00_00_14\\mmWaveStudio\\Scripts\\..\\PostProc", "filePrefix": "adc_data", "maxRecFileSize_MB": 1024, "sequenceNumberEnable": 1, "captureStopMode": "infinite", "framesToCapture": 10 }, "dataFormatConfig": { "MSBToggle": 0, "laneFmtMap": 3, "reorderEnable": 0, "dataPortConfig": [ { "portIdx": 0, "dataType": "complex" }, { "portIdx": 1, "dataType": "complex" }, { "portIdx": 2, "dataType": "complex" }, { "portIdx": 3, "dataType": "complex" }, { "portIdx": 4, "dataType": "complex" } ] } } }
Hi
I assume with mmWave Studio you are able to get the correct result.
What are the changes you have made to the Example?
Thank you
Cesar
Hi, Cesar
Thanks for your reply!
1) yes, I can get the correct result with mmWave Studio. And I used the MATLAB code I wrote to process the raw data collected by mmwave studio, and the results are consistent with the results on the studio, as shown in the figure below, so this may prove that my code is working properly.
2) In the mmwaveconfig.txt, I changed the idletimeconst to 100us, frame periodicity changed to 0.4s, because I think frame periodicity should be greater than sum total time of all chirps. And I also changed the rlRfProgFiltConf_t section. I thought it's the filter parameters causing the doppler expansion. Unfortunately, the changes didn't work.
In the cf.json, I changed the "framesToCapture" to 10, which is consistent with the framesnumber in the mmwaveconfig.txt. All the dataPortConfig parameters are set to complex. I also changed the laneFmtMap to 3, but actually I don't know why.
3) And there is another important problem besides the doppler expansion. I plot the range FFT with per received channel under every single frame. The first five frames work properly. But when it turns to all after frames, the data is getting wrong. Every frame contains 128 chirps. There is no valid information for the images drawn by the first 48 chirps. I plotted all the chirps obtained images for each frame on a single graph. The first graph is drawn with the 128 chirps in 3th frame. The second is drawn with the 128 chirps in 6th frame. And the figure besides is the range fft under the 48th chirp in the 6th frame. At this point the problem is very obvious.
Figure 1:
Fifure 2:
Figure 3:
I have also tried to test with the configuration files that has not been modified at all, but there will still be Doppler expansion and data errors. Please help me analyze what could be causing these errors.
Thanks for the attention.
I solved this question.
I set the LinkDynChirpTest to 0, and all the frames work properly.
The doppler expansion problem is also solved. This is because I processed the received data of two sending and four receiving according to the MATLAB code of one sending and four receiving. When I changed the channelTx to 1, there is no weird plot using my own matlab code.
Thanks for the attention.