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.

AWR1642BOOST: DECODING THE MEANING OF UART DATA FROM SRR DEMO

Part Number: AWR1642BOOST
Other Parts Discussed in Thread: AWR1642

   

1) I found out meanings of these many bytes from the data i'm receiving from running SRR demo in hard coded configuration. Can you please correct me if i'm wrong in decoding.

2) can you help me to find out the meaning of rest of the bytes in the TLV frame with length 364 bytes

  • Hi Cesar,

    Thanks for the reply, but i already know that the output format is mentioned in the function SRR_DSS_SendProcessOutputToMSS, so as an example can you please decode me the meaning of TLV with a frame length of 68.

  • Hi,

    Please see in the gui src code how the TLV is parsed

    \labs\lab0002_short_range_radar\gui\read_serial_port_and_plot_object_location.m

    Every new frame packet starts with following

    % Every packet from the AWR1642 has the following barker code at the beginning.
    barker_code = char([2 1 4 3 6 5 8 7]);

    This is the code that parses the TLVs

    MMWDEMO_UART_MSG_DETECTED_POINTS    = 1;
    MMWDEMO_UART_MSG_CLUSTERS           = 2;
    MMWDEMO_UART_MSG_TRACKED_OBJ        = 3;
    MMWDEMO_UART_MSG_PARKING_ASSIST     = 4;
    MMWDEMO_UART_MSG_STATS = 6;

    ----

       if(magicOk == 1)
            tStart = tic;
            bytevec_cp_flt = single(bytevec_cp);
            % Extract the header.
            [Header, byteVecIdx] = getHeader(bytevec_cp_flt, byteVecIdx);
            sfIdx = Header.subframeNumber+1;
            if (sfIdx > 2) || (Header.numDetectedObj > MAX_NUM_OBJECTS)
                continue;
            end
            detObj.numObj = 0;
            clusterObj.numObj = 0;
            trackedObj.numObj = 0;
            
            % Extract each of the TLVs (type length value) in the current message.
            for tlvIdx = 1:Header.numTLVs
                [tlv, byteVecIdx] = getTlv(bytevec_cp_flt, byteVecIdx);
                switch tlv.type
                    case MMWDEMO_UART_MSG_DETECTED_POINTS
                        if tlv.length >= OBJ_STRUCT_SIZE_BYTES
                            [detObj, byteVecIdx] = getDetObj(bytevec_cp_flt, ...
                                byteVecIdx, ...
                                tlv.length);
                        end
                    case MMWDEMO_UART_MSG_CLUSTERS
                        if tlv.length >= CLUSTER_STRUCT_SIZE_BYTES
                            [clusterObj, byteVecIdx] = getClusters(bytevec_cp_flt, ...
                                byteVecIdx, ...
                                tlv.length);
                        end
                    case MMWDEMO_UART_MSG_TRACKED_OBJ
                        if tlv.length >= TRACKER_STRUCT_SIZE_BYTES
                            [trackedObj, byteVecIdx] = getTrackers(bytevec_cp_flt, byteVecIdx, tlv.length);
                        end
                        
                    case MMWDEMO_UART_MSG_PARKING_ASSIST
                        [parkingAssistRangeBins, byteVecIdx] = getParkingAssistBins(bytevec_cp_flt, byteVecIdx, tlv.length);
                        
                    case MMWDEMO_UART_MSG_STATS
                        [StatsInfo, byteVecIdx] = getStatsInfo(bytevec_cp_flt, byteVecIdx);
                        %fprintf('StatsInfo: %d, %d, %d %d \n', StatsInfo.interFrameProcessingTime, StatsInfo.transmitOutputTime, StatsInfo.interFrameProcessingMargin, StatsInfo.interChirpProcessingMargin);
                        displayUpdateCntr = displayUpdateCntr + 1;
                        interFrameCPULoad = [interFrameCPULoad(2:end); StatsInfo.interFrameCPULoad];
                        activeFrameCPULoad = [activeFrameCPULoad(2:end); StatsInfo.activeFrameCPULoad];
                        guiCPULoad = [guiCPULoad(2:end); 100*guiProcTime/Params(1).frameCfg.framePeriodicity];
                        if displayUpdateCntr == 40
                            UpdateDisplayTable(Params);
                            displayUpdateCntr = 0;
                        end
                    otherwise
                end
            end
           

  • hi,

    i already saw read_serial_port_and_plot_object_location.m. But i'm not running the SRR program using GUI. I made the configuration to hard code. Now it's running as soon as i power the system.

    i found out madic word, header, tlv type length etc... but i'm not getting the explanation for the rest inside tlv. i also found a pattern inside first tlv. can you please explain the rest. 

  • First Sequence: "1 0 0 251 15 99 1 106"

    • X Coordinate:
      • Integer part: 1
      • Fractional part: 0.251 (approximately, in Q15 format)
    • Y Coordinate:
      • Integer part: 15
      • Fractional part: 0.99 (approximately, in Q1 format)
    • Z Coordinate:
      • Integer part: 1
      • Fractional part: 0.106 (approximately, in Q15 format)       Can i interpret the meaning of TLV1 like this? 
  • Hi,

    Sorry for the delay

    Please let me know if this is still an issue

    thank you
    Cesar