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.
Hi,
My customer tried to get the min chirp period based on the recommend parameter from Ramp Timing Calculator in Radar studio. But they found the recommend idle time and ADC start time from Ramp Timing Calculator is too small sometimes and the ADC data has unexpected overshoot at the first several bins. They need to try several times to get the right idle time and ADC start time.
Why the recommend idle time and ADC start time from Ramp Timing Calculator is too small sometimes? Is there any other way or suggestion for customer to get the min workable idle time/ADC start time more easier, not just try again and again?
Below are tests which can reproduce customer's problem. All tests are based on xWR1443 EVM (ES2.0) , capture demo in mmWave SDK 1.0 and radar studio 1.7.4.0.From below snapshot, you will find the recommend idle time/ADC start time for Slop=10Mhz/us, ADC Samples=256, sample rate =10Msps is 2us/3.78us.
The left figures in below shows the abs of the complex first chirp ADC sample data.
frame = rad_in(1:K,1) + i*rad_in(1:K,2);
abs_radar=abs(frame);
The right figures in below shows the real part of the complex first chirp ADC sample data. The ADC data is saved from L3 (start address 0x51020000). I uses the idle time =2us and ADC start time =4us and you can see overshoot in both figures.
flushCfg
dfeDataOutputMode 1
channelCfg 2 1 0
adcCfg 2 1
adcbufCfg 0 0 1 1
lowPower 0 0
profileCfg 0 77 2 4 31 0 0 10 1 256 10000 0 0 48
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 1
frameCfg 0 1 128 1 50 1 0
sensorStart
Then I increased the idle time/ADC time by 1us. I still see the overshoot.
flushCfg
dfeDataOutputMode 1
channelCfg 2 1 0
adcCfg 2 1
adcbufCfg 0 0 1 1
lowPower 0 0
profileCfg 0 77 3 5 31 0 0 10 1 256 10000 0 0 48
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 1
frameCfg 0 1 128 1 50 1 0
sensorStart
Then I increased again. Now I think the ADC data is normal.
flushCfg
dfeDataOutputMode 1
channelCfg 2 1 0
adcCfg 2 1
adcbufCfg 0 0 1 1
lowPower 0 0
profileCfg 0 77 4 6 35 0 0 10 1 256 10000 0 0 48
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 1
frameCfg 0 1 128 1 50 1 0
sensorStart
Thanks,
Hi Chris,
We have noticed these and idle time. Seems like the Radar Studio recommended idle times/Start times might need to be increased. We will get back to you on this.
Thank you,
Vaibhav
Vivek,
Reducing the TX start time can reduce the overshoot, but not much. Pls find my test result below.
flushCfg
dfeDataOutputMode 1
channelCfg 2 1 0
adcCfg 2 1
adcbufCfg 0 0 1 1
lowPower 0 0
profileCfg 0 77 2 4 31 0 0 10 0 256 10000 0 0 48
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 1
frameCfg 0 1 128 1 50 1 0
sensorStart
flushCfg
dfeDataOutputMode 1
channelCfg 2 1 0
adcCfg 2 1
adcbufCfg 0 0 1 1
lowPower 0 0
profileCfg 0 77 2 4 31 0 0 10 -1 256 10000 0 0 48
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 1
frameCfg 0 1 128 1 50 1 0
sensorStart
flushCfg
dfeDataOutputMode 1
channelCfg 2 1 0
adcCfg 2 1
adcbufCfg 0 0 1 1
lowPower 0 0
profileCfg 0 77 2 4 31 0 0 10 -2 256 10000 0 0 48
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 1
frameCfg 0 1 128 1 50 1 0
sensorStart
flushCfg
dfeDataOutputMode 1
channelCfg 2 1 0
adcCfg 2 1
adcbufCfg 0 0 1 1
lowPower 0 0
profileCfg 0 77 2 4 31 0 0 10 -5 256 10000 0 0 48
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 1
frameCfg 0 1 128 1 50 1 0
sensorStart
Vivek Dham said:But this settling is mostly related to DC , hence when you look at the FFT it would be around the DC bin, which is typically not used , but depends on the end application.
Customer thought the overshoot in the first several bins in time domain data will increase the noise floor in frequency domain (after FFT) which will effect the later process result. So they still want to remove these overshoot.
Thanks,
Vivek,
I changed below code in C:\ti\mmwave_sdk_01_00_00_05\packages\ti\utils\cli\src\cli_mmwave.c to let the tx start time work ok with negative value.
from: profileCfg.txStartTime = (uint32_t)((float)atof (argv[9]) * 1000 / 10);
to: profileCfg.txStartTime = (int16_t)((float)atof (argv[9]) * 1000 / 10);
Then I tested the tx start time with 0, -1, -2 and I found when tx start time=-2us, the overshoot is gone. What's the limitation for tx start time value setting? I think if the value of tx start time is negative, the abs of the tx start time should less or equal to idle time. If I miss anything, pls kindly correct.
flushCfg
dfeDataOutputMode 1
channelCfg 2 1 0
adcCfg 2 1
adcbufCfg 0 0 1 1
lowPower 0 0
profileCfg 0 77 2 4 31 0 0 10 -2 256 10000 0 0 48
chirpCfg 0 0 0 0 0 0 0 1
chirpCfg 1 1 0 0 0 0 0 1
frameCfg 0 1 128 1 50 1 0
sensorStart
Kevin,
I have double checked with customer and we can close this issue now. I just verified the answer.
Thanks,