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.

IWR6843AOP: ccs memory browser : gMmwL3 save and processing

Part Number: IWR6843AOP
Other Parts Discussed in Thread: IWR6843, UNIFLASH

Hi, I ran the OOB demo using the IWR6843AOP. During this process, I was able to connect the radar through CCS and save gMmwL3 using the memory browser. (in 16-bit Hex-ti style)

What I want to do is to apply a range FFT and a doppler FFT to the data obtained from the memory browser, the same way I would apply a range FFT and a doppler FFT to the data obtained from the DCA1000. (sdk version - 3.5, industrial toolbox - 4.9, aop - es 2.0)

The process to execute the OOB demo using the IWR6843 AOP (ES2.0) radar is as follows:

1)Use Uniflash with the file located at C:\ti\mmwave_sdk_03_06_00_00-LTS\packages\ti\utils\ccsdebug\xwr68xx_ccsdebug.bin to perform the Uniflash operation.

2)In CCS (Code Composer Studio) version 8.3:

  • Only SOP 0 is shorted.
  • 2.1) In the "user defined" section, connect to the AOP by selecting the appropriate CCXML in "launch selected configuration".
  • 2.2) connect Cortex R4
  • 2.3) Load C:\ti\mmwave_industrial_toolbox_4_9_0\labs\out_of_box_demo/68xx_aop_mmwave_sdk_hwa\prebuilt_binaries\xwr64xxAOP_mmw_mss.xer4f onto the Cortex R4 processor.
  • 2.4) Run Cortex R4

3)Visit https://dev.ti.com/gallery/view/mmwave/mmWave_Demo_Visualizer/ver/3.6.0/ and perform the following steps:

  • 3.1) connect serial .
  • 3.2) Send the configuration to the MMWAVE device. 
  • Both the xWR68xx and xWR68xx (AOP) showed the same response.
  • after frame stats are above 250, sensor stop

My questions are as follows:

  1. Is the format of the data stored in gMmwL3 IQ(2)*numadc(256)*numtx(2)*numchirp(16)*numframe correct (I'm not talking about memory length, I'm talking about the form of the data cube) ? There's no separate explanation for num tx in the "mmwave radar device adc raw data capture".
  2. If the format mentioned in 1) is correct, can I process it like the attached Matlab file?
  3. The most critical issue is this: Although I confirmed more than 250 frames in the visualizer plot and made sure to store 250 frames in the memory browser, resulting in a total length of 16,384,000 (256(adc)*4(rx)*16(chirp)*250(frame)*2(tx)*4(btye)/2(byte)). However, after about the 69000th line, it's filled with zeros, and after the 500000th line, it's filled with hex values, but almost at the end, it's filled with BAD0s. Why is this happening?

I have also attached images of the used cfg and the CCS environment.

Thank you.

cfg

mmwDemo:/>% ***************************************************************
Skipped

mmwDemo:/>% Created for SDK ver:03.05
Skipped

mmwDemo:/>% Created using Visualizer ver:3.6.0.0
Skipped

mmwDemo:/>% Frequency:60
Skipped

mmwDemo:/>% Platform:xWR68xx_AOP
Skipped

mmwDemo:/>% Scene Classifier:best_range_res
Skipped

mmwDemo:/>% Azimuth Resolution(deg):60 + 30
Skipped

mmwDemo:/>% Range Resolution(m):0.044
Skipped

mmwDemo:/>% Maximum unambiguous Range(m):9.02
Skipped

mmwDemo:/>% Maximum Radial Velocity(m/s):1
Skipped

mmwDemo:/>% Radial velocity resolution(m/s):0.13
Skipped

mmwDemo:/>% Frame Duration(msec):100
Skipped

mmwDemo:/>% RF calibration data:None
Skipped

mmwDemo:/>% Range Detection Threshold (dB):15
Skipped

mmwDemo:/>% Doppler Detection Threshold (dB):15
Skipped

mmwDemo:/>% Range Peak Grouping:enabled
Skipped

mmwDemo:/>% Doppler Peak Grouping:enabled
Skipped

mmwDemo:/>% Static clutter removal:disabled
Skipped

mmwDemo:/>% Angle of Arrival FoV: Full FoV
Skipped

mmwDemo:/>% Range FoV: Full FoV
Skipped

mmwDemo:/>% Doppler FoV: Full FoV
Skipped

mmwDemo:/>% ***************************************************************
Skipped

mmwDemo:/>sensorStop
Ignored: Sensor is already stopped

Done

mmwDemo:/>flushCfg
Done

mmwDemo:/>dfeDataOutputMode 1
Done

mmwDemo:/>channelCfg 15 7 0
Done

mmwDemo:/>adcCfg 2 1
Done

mmwDemo:/>adcbufCfg -1 0 1 1 1
Done

mmwDemo:/>profileCfg 0 60 567 7 57.14 0 0 70 1 256 5209 0 0 158
Done

mmwDemo:/>chirpCfg 0 0 0 0 0 0 0 1
Done

mmwDemo:/>chirpCfg 1 1 0 0 0 0 0 2
Done

mmwDemo:/>frameCfg 0 1 16 0 100 1 0
Done

mmwDemo:/>lowPower 0 0
Done

mmwDemo:/>guiMonitor -1 1 1 0 0 0 1
Done

mmwDemo:/>cfarCfg -1 0 2 8 4 3 0 15 1
Done

mmwDemo:/>cfarCfg -1 1 0 4 2 3 1 15 1
Done

mmwDemo:/>multiObjBeamForming -1 1 0.5
Done

mmwDemo:/>clutterRemoval -1 0
Done

mmwDemo:/>calibDcRangeSig -1 0 -5 8 256
Done

mmwDemo:/>extendedMaxVelocity -1 0
Done

mmwDemo:/>lvdsStreamCfg -1 0 0 0
Done

mmwDemo:/>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
Done

mmwDemo:/>measureRangeBiasAndRxChanPhase 0 1.5 0.2
Done

mmwDemo:/>CQRxSatMonitor 0 3 5 121 0
Done

mmwDemo:/>CQSigImgMonitor 0 127 4
Done

mmwDemo:/>analogMonitor 0 0
Done

mmwDemo:/>aoaFovCfg -1 -90 90 -90 90
Done

mmwDemo:/>cfarFovCfg -1 0 0 8.92
Done

mmwDemo:/>cfarFovCfg -1 1 -1 1.00
Done

mmwDemo:/>calibData 0 0 0
Done

mmwDemo:/>sensorStart
Debug: Init Calibration Status = 0x1ffe

Done

mmwDemo:/>sensorStop
Done
 

  -> check the number of frames is over 250

clear all; close all; clc;

%%
filename = './0404/mmb_gmmwl3_0404_16bit_hex_ti_style_tx2_rx4.dat';
fid = fopen(filename, 'r');

adcData = [];

ind_line = 1;

while ~feof(fid)
    line = fgetl(fid);
    if ind_line ~=1
    line = strcat('0x',line);    
    decimalValue = hex2dec(line);    
    adcData = [adcData; decimalValue];
    end
    ind_line =ind_line +1;
end
fclose(fid);

%adcData : numadc*numtx*numchirp*numrx*numframe*iq_format

  • Hi,

    .1. It is not possible to get the raw adc samples continuously from the device through CCS memory browser as JTAG connection will be much slower than the rate at which data is generated

    2. gMmwL3 data does not contain raw adc samples but it will already contain the range FFT data. gMmwL3 will contain data of only 1 Frame. 

    3. If you need to take out adc samples and perform post processing, using DCA1000 is the only option. 

    4. You can read out from CCS memory browser while the demo is running. You need to keep a breakpoint and when the core halts, you can read out from the memory browser. Otherwise, you are expected to get incorrect values

    Regards