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.

AWR1843BOOST: ADC data from AWR1843 without using DCA1000

Part Number: AWR1843BOOST
Other Parts Discussed in Thread: AWR1843, , AWR1642

Hi,

I am planning to buy AWR1843 for performing certain  tasks like range doppler plots,target tracking,beam steering etc by doing post processing myself on ADC data in MATLAB.My queries are:

a) Is it possible to do beam steering and target tracking using this kit?If yes then are there any tutorials available?

b) Is it possible to  get the ADC data from AWR1843 without using DCA1000??

c) From where i can learn to deal with the raw ADC data from this kit so i can do post processing on it in Matlab?Or how can i see how the post processing is being done on ADC data that is shown in mmWave studio post processing plots?Any reference codes or tutorial that explains the process will be great!

Thanks

  • Hi,

    I order to experiment  with beamstearing, tracking there is lab0011 available in the Automotive Toolbox on the TI Resource Explorer on the TI Cloud, dev.ti.com

    It is not possible to collect raw data without the DCA1000 for contnuous frames.

    Thank you

    Cesar

  • Hi Cesar,

    Can you kindly share the link to that lab?i am unable to find it on resource explorer.

    Furthermore,can you guide me for info related to part(c) of my question?

    Thanks in advance

  • Hi Cesar,

    Waiting for your guidance pl

    Thanks

  • Hi,

    Here is the link to the beam steering lab

    Regarding following question

    "c) From where i can learn to deal with the raw ADC data from this kit so i can do post processing on it in Matlab?Or how can i see how the post processing is being done on ADC data that is shown in mmWave studio post processing plots?Any reference codes or tutorial that explains the process will be great!"

    Our support team can provide you with a short matlab script to parse the raw data from AWR1843BOOST 4Rx/3Tx.

    Unfortunately we do no provide any matlab post processing scripts for single chip EVMs These matlab scripts can be implemented from traditional Radar Signal Processing Textbooks.

    As you mentioned Raw data can also be post processed with mmWave Studio. The source code for the mmWave Studio Matlab Post Processing scripts is unfortunately not available.

    Thank you

    Cesar

  • Hi,

    Ok then pl share with me that matlab script for parsing the raw data from AWR1843BOOST.

    And i had already explored the the link you shared but AWR1843 is not there in the drop down menu  for  boards selection. Should i select AWR1642?

    Thanks

  • Hi,

    Regarding the matlab script please see below

    Here is a short script that will parse a raw data file captured for AWR1843BOOST for MIMO configuration

    numTXAnt = 3;
    numFrames = 2;

    % Binary File Location
    DirName = 'C:\bin_file_directory\';
    fileName = 'file_name.bin';

    % Basic Chirp parameters, need be updated for the test
    Samples_Per_Chirp = Chirp_NUM_ADC_sample_size;
    Chirps_Per_Frame = Chirp_NUM_Chirps;


    % Data capture
    chunkSize = 2*Samples_Per_Chirp*Chirps_Per_Frame*numAnt;

    %*********************************************************************
    %% read binary file
    %*********************************************************************
    fname = strcat(DirName,fileName);
    fid = fopen(fname,'r');
        
    adcOut = [];
    inputLoadingPosition = 0;
    for indexFrames=1:numFrames
        
        fseek(fid, inputLoadingPosition, 'bof');
        dataChunk  = fread(fid, chunkSize,'uint16','l');
        inputLoadingPosition = ftell(fid);   
        
        dataChunk = dataChunk - (dataChunk >= 2^15) * 2^16;
        
        % radar_data has data in the following format.
        % Rx0I0, Rx0I1, Rx0Q0, Rx0Q1, Rx0I2, Rx0I3, Rx0Q2, Rx0Q3, ...
        % The following script reshapes it into a 3-dimensional array.
        % size(adcOut) = [ADC samples per chirp x Chirps per Frame x Number of virtual Channels]
        
        len = length(dataChunk) / 2;
        adcOut(1:2:len) = dataChunk(1:4:end) + 1j*dataChunk(3:4:end);
        adcOut(2:2:len) = dataChunk(2:4:end) + 1j*dataChunk(4:4:end);
        adcOut = reshape(adcOut, Chirp_NUM_ADC_sample_size, numTXAnt*4, Chirp_NUM_Chirps);
        adcOut = permute(adcOut, [1, 3, 2]);
            
        %*********************************************************************
        %% Radar signal processing
        %*********************************************************************
        % Plot ADC Data for the 1st Chirp
    %     figure(1);clf
    %     plot(real(adcOut(:,1,1)),'r');
    %     hold on
    %     plot(imag(adcOut(:,1,1)));
    %     legend('I-Channel', 'Q-Channel'); grid on
    %     title('ADC data')
       
        
        
        % 1D range-FFT across the 2nd dimensions (samples), no zero padding
        fftSize1D = size(adcOut,1);
        radar_data_1dFFT = fft(adcOut,[], 1);%.*window_1D
        
        figure(1)
        %TX1 Plots
        subplot(3,4,1)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX1_RX1).')))
        title('TX1-RX1');
        subplot(3,4,2)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX1_RX2).')))
        title('TX1-RX2');
        subplot(3,4,3)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX1_RX3).')))
        title('TX1-RX3');
        subplot(3,4,4)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX1_RX4).')))
        title('TX1-RX4');
        
        %TX2 Plots
        subplot(3,4,5)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX2_RX1).')))
        title('TX2-RX1');
        subplot(3,4,6)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX2_RX2).')))
        title('TX2-RX2');
        subplot(3,4,7)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX2_RX3).')))
        title('TX2-RX3');
        subplot(3,4,8)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX2_RX4).')))
        title('TX2-RX4');

        %TX3 Plots
        subplot(3,4,9)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX3_RX1).')))
        title('TX3-RX1');
        subplot(3,4,10)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX3_RX2).')))
        title('TX3-RX2');
        subplot(3,4,11)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX3_RX3).')))
        title('TX3-RX3');
        subplot(3,4,12)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,TX3_RX4).')))
        title('TX3-RX4');

    Here is a short script that will parse a raw data file captured for AWR1843BOOST for 1TX configuration

     

    % Data capture
    chunkSize = 2*Samples_Per_Chirp*Chirps_Per_Frame*numAnt;

    %*********************************************************************
    %% read binary file
    %*********************************************************************
    fname = strcat(DirName,fileName);
    fid = fopen(fname,'r');

        
    adcOut = [];
    inputLoadingPosition = 0;
    numFrames = 20;
    for indexFrames=1:2
        
        fseek(fid, inputLoadingPosition, 'bof');
        dataChunk  = fread(fid, chunkSize,'uint16','l');
        inputLoadingPosition = ftell(fid);   
        
        dataChunk = dataChunk - (dataChunk >= 2^15) * 2^16;
        
        % radar_data has data in the following format.
        % Rx0I0, Rx0I1, Rx0Q0, Rx0Q1, Rx0I2, Rx0I3, Rx0Q2, Rx0Q3, ...
        % The following script reshapes it into a 3-dimensional array.
        % size(adcOut) = [ADC samples per chirp x Chirps per Frame x Number of virtual Channels]
        
        len = length(dataChunk) / 2;
        adcOut(1:2:len) = dataChunk(1:4:end) + 1j*dataChunk(3:4:end);
        adcOut(2:2:len) = dataChunk(2:4:end) + 1j*dataChunk(4:4:end);
        adcOut = reshape(adcOut, Chirp_NUM_ADC_sample_size, numTXAnt*4, Chirp_NUM_Chirps);
        adcOut = permute(adcOut, [1, 3, 2]);
            
        %*********************************************************************
        %% Radar signal processing
        %*********************************************************************
        % Plot ADC Data for the 1st Chirp
         figure(1);clf
         plot(real(adcOut(:,1,1)),'r');
         hold on
         plot(imag(adcOut(:,1,1)));
         legend('I-Channel', 'Q-Channel'); grid on
         title('ADC data')
       
        
        
        % 1D range-FFT across the 2nd dimensions (samples), no zero padding
        fftSize1D = size(adcOut,1);
        radar_data_1dFFT = fft(adcOut,[], 1);%.*window_1D
        
        figure(1)
        subplot(2,2,1)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,Virtual_Channel).')))
        title('RX1');
        subplot(2,2,2)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,Virtual_Channel+1).')))
        title('RX2');
        subplot(2,2,3)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,Virtual_Channel+2).')))
        title('RX3');
        subplot(2,2,4)
        imagesc(squeeze(abs(radar_data_1dFFT(:,:,Virtual_Channel+3).')))
        title('RX4');
       

  • Hi,

    Regarding downloading the lab0011 demo, please follow these steps

    Step 1 Open the link

    Step 2 Open "Software-> mmWave Sensors "

    Step 3 Click on "Automotive Toolbox -3.20"

    Step 4 On the right hand side of the window there is a Download Icon

    Step 5 Click on the Download Icon, this will download the entire Automotive Toolbox 3.2 as a zip file

    Step 6 Unzip the downloaded file.

    Step 7 Open \mmwave_automotive_toolbox_3_2_0\labs\lab0011_mrr_beamsteering\docs

    Thank you
    Cesar

  • Hi Cesar,

    Thank you for sharing the script..That helps a lot..One small observation:I believe the number of RX antennas are assumed to be 4 here.Like in the following lines of script:

    chunkSize = 2*Samples_Per_Chirp*Chirps_Per_Frame*numAnt;

    adcOut = reshape(adcOut, Chirp_NUM_ADC_sample_size, numTXAnt*4, Chirp_NUM_Chirps);

    Here 'numAnt' are the number of RX antennas?And  'numTXAnt*4' shows that we are using 4 RX channels?If i have to use 1 RX then i will replace it by 1?

    Thanks in advance

  • You are correct,

    The number of Rx antennae is 4 for both scripts

    Yes, if you use only 1 Rx re-shape will not be needed.

    Please spend some time to understand the few lines of this matlab script using matlab resources available online.

    It is beyond the scope of our team to support matlab

    Thank you

    Cesar