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.

IWR1443: UART output data format and python reference

Part Number: IWR1443
Other Parts Discussed in Thread: MMWAVE-SDK, IWR1642,

Hi, 

I'm referring to this thread https://e2e.ti.com/support/sensors/f/1023/p/660937/2430814

Can I have access to this python script to decode the UART byte stream too?

  • Hi CF,

    Please see the following thread.

    IWR1642: UART output data python script - Sensors forum - Sensors - TI E2E support forums

    e2e.ti.com
    Part Number: IWR1642 Hi, Regarding the linked post it was mentioned that there it will be worked on a Python script to parse the data from the mmWave Demo coming

    Regards,

    John

  • Hi John, thanks for pointing me to the relevant thread.

    Some questions about the structure i'm referring to at mmwave_sdk_02_00_00_04/packages/ti/demo/xwr16xx/mmw/docs/doxygen/html/index.html

    Is this the correct document to refer to? I'm finding that the totalPacketLen (Total packet length including header in Bytes) does not match the bytes i receive.

    is subFrameNumber always included in the header? so number of fields excluding the magic word is 8, not 7?

    in mmw__output_8h_source.h, the enumeration values for message output are missing, what should the values be?

     typedef enum MmwDemo_output_message_type_e
        {
            MMWDEMO_OUTPUT_MSG_DETECTED_POINTS = 1,
        
            MMWDEMO_OUTPUT_MSG_RANGE_PROFILE,
        
            MMWDEMO_OUTPUT_MSG_NOISE_PROFILE,
        
            MMWDEMO_OUTPUT_MSG_AZIMUT_STATIC_HEAT_MAP,
        
            MMWDEMO_OUTPUT_MSG_RANGE_DOPPLER_HEAT_MAP,
        
            MMWDEMO_OUTPUT_MSG_STATS,
        
            MMWDEMO_OUTPUT_MSG_MAX
        } MmwDemo_output_message_type;
  • Hi CF,

    If you have an IWR1443 device then you will actually need to download and use MMWAVE-SDK v1.2 (mmWave SDK v2.0 only supports IWR1642).

    Then you would look at the IWR14xx demo at: C:\ti\mmwave_sdk_01_02_00_05\packages\ti\demo\xwr14xx\mmw\docs\doxygen\html\index.html.

    It currently refers you to the IWR16xx demo documentation in the same SDK for the description the output data format:
    C:\ti\mmwave_sdk_01_02_00_05\packages\ti\demo\xwr16xx\mmw\docs\doxygen\html\index.html

    However, there is actually one difference in the header used in the IWR14xx and IWR16xx demos. If you look in mmw_output.h (C:\ti\mmwave_sdk_01_02_00_05\packages\ti\demo\io_interface\mmw_output.h) you will see that there is an #ifdef statement so the subFrameNumber field is only used for IWR16xx and is not present in the IWR14xx version of the demo.

    typedef struct MmwDemo_output_message_header_t
    88 {
    90 uint16_t magicWord[4];
    91
    93 uint32_t version;
    94
    96 uint32_t totalPacketLen;
    97
    99 uint32_t platform;
    100
    102 uint32_t frameNumber;
    103
    105 uint32_t timeCpuCycles;
    106
    108 uint32_t numDetectedObj;
    109
    111 uint32_t numTLVs;
    112
    113 #ifdef SOC_XWR16XX
    114
    117 uint32_t subFrameNumber;
    118 #endif
    119 } MmwDemo_output_message_header;

    Also, enumerated types in C allow you to optionally set the value of one enumerated value and then the following ones are just incremented numerically automatically. So the values for the enumerations would be as follows in the parentheses I added.

    57 typedef enum MmwDemo_output_message_type_e
    58 {
    60 MMWDEMO_OUTPUT_MSG_DETECTED_POINTS = 1,
    61
    63 MMWDEMO_OUTPUT_MSG_RANGE_PROFILE, (= 2)
    64
    66 MMWDEMO_OUTPUT_MSG_NOISE_PROFILE, (= 3)
    67
    69 MMWDEMO_OUTPUT_MSG_AZIMUT_STATIC_HEAT_MAP, (= 4)
    70
    72 MMWDEMO_OUTPUT_MSG_RANGE_DOPPLER_HEAT_MAP, (= 5)
    73
    75 MMWDEMO_OUTPUT_MSG_STATS, (= 6)
    76
    77 MMWDEMO_OUTPUT_MSG_MAX (= 7)
    78 } MmwDemo_output_message_type;

    Regards,
    John