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:
- 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".
- If the format mentioned in 1) is correct, can I process it like the attached Matlab file?
- 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