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.

IWR1443BOOST: IWR1443BOOST raw Data

Part Number: IWR1443BOOST
Other Parts Discussed in Thread: IWR1443

Hi,

i would have just one question please. 

I read in the doxygen report that, when data are recieved by the sensor, they first are stored in the ADC buffer. There must be a ping and a pong buffer so that the data can be read and used at parallely. However, as i looked up the code for Vital Signs i only came accross the ADC_BUFF ping. Would you tell me where the pong buffer is please. 

What is considered raw data. I assumed it would be the data in the buffer. However those data are used two time. First a 1D FFT is done from the Buffer in M's Memory, then a 2D FFT is done from M's memory in EDMA memory. which memory should i therefore used to get the raw data in your point of view. 

Thank you very much in advance.

  • Hi Patrick,

    Please refer to the following thread:

    IWR1443: Max ADC samples

    Raw (ADC) data is the digitized signal output coming from the ADC and it is available in the ADC buffer and it is directly visible to the hardware accelerator as the ADC ping pong buffer is shared with the accelerator M0 and M1 buffers on IWR1443. I would again refer you to the IWR1443 capture test in SDK drivers\test directory to get a complete working example of raw data read-out directly from the ADC buffer.

    Thanks

    -Nitin 

  • HI Nitin,

    I read the doxy FIle of the test mem_capture. But that couldn't help me. I don't  even know how to run the damn file. But now, i think i have the data i need. I took  the Input sent to the  configure_HWA_FFT.  I believe, it is at least.

    Could you please just tell me, how this data is parsed. I mean,

    Which bit represents what. 

    If i used the DCA1000 for example i would have a clear view of which bit is real or imaginar or garbagge. 

    Could you please tell me for i, who doesn't have it, how the data is parsed in the ADC_BUFFER?

  • Hi Patrick,

    Please refer to the following application note which explains the procedure to run the capture demo (you will need Code Composer Studio) as well as the data format for the data captured in L3SRAM.

    Mmwave Radar Device ADC Raw Data Capture

    Hope this helps.

    Thanks

    -Nitin 

  • Hi NItin

    Ah you meant this file. I have read it times and times again. Even with this i  couldn't figure out, where raw data are.

    I had another Idea, on how to access the data. THe 1D FFT is done using data from the buffer right? so i decided to follow the path and see where it will lead.  Here is the dataPath task

    void VitalSignsDemo_dataPathTask(UArg arg0, UArg arg1) {
    VitalSignsDemo_DataPathObj *dataPathObj = &gMmwMCB.dataPathObj; uint32_t startTime, endTime, transmitOutStartTime; while (1) { gFrameCount = gFrameCount + 1; Semaphore_pend(dataPathObj->frameStart_semHandle, BIOS_WAIT_FOREVER); Load_update(); dataPathObj->timingInfo.interFrameCPULoad=Load_getCPULoad(); startTime = Pmu_getCount(0); VitalSignsDemo_dataPathWait1D(dataPathObj); /* 1st Dimension FFT done! */ VitalSignsDemo_configPhase_HWA(dataPathObj); transmitOutStartTime = Pmu_getCount(0); Load_update(); dataPathObj->timingInfo.activeFrameCPULoad=Load_getCPULoad(); /* Starting the vital Signs Processing */ VitalSignsDemo_vitalSignProcess(dataPathObj); VitalSignsDemo_transmitProcessedOutput(gMmwMCB.loggingUartHandle,dataPathObj); // original code /* Processing cycles for vital signs processing including the sending out of data */ dataPathObj->transmitOutputProcCycles = Pmu_getCount(0) - transmitOutStartTime; /* Prepare for next frame */ VitalSignsDemo_config1D_HWA(dataPathObj); VitalSignsDemo_dataPathTrigger1D(dataPathObj); VitalSignsDemo_transmitProcessedOutput(gMmwMCB.loggingUartHandle,dataPathObj); // I put it there /* Inter-Frame Processing cycles including sending out of data */ dataPathObj->timingInfo.interFrameProcessingEndTime = Pmu_getCount(0); endTime = dataPathObj->timingInfo.interFrameProcessingEndTime; dataPathObj->timingInfo.interFrameProcCycles = endTime - startTime; dataPathObj->interFrameProcToken--; } }

    so i just change the thread of the function VitalSignsDemo_transmitProcessedOutput, because i thought, well since i am starting another frame, then the data in &(gMmwHwaMemBuf[0]), which is declared as adc input buffer should have the data i need before them being overwritten by the other operations.

    1. Is my assumption right?

    However putting them there, the rest of the data i recieved through Uart_Writepolling are the data of the last frame, and if i were to post this function at the start of the while loop, then i won't recieve any valuable datas. I tried it .

    2. If my assumption is just, then i would like to do the 1D and 2D FFT myself on this data. Would you please tell me how the data are stored in the buffer. Let's say for example, i have this data " FFFFFFFF" in hex. On which bytes should i apply my FFT function, because i assume every byte has a specific meaning, not all can be used for the FFT.

    3. and last. notice how the functions are called in this while loop.

            VitalSignsDemo_dataPathWait1D(dataPathObj);
            /* 1st Dimension FFT done! */
            VitalSignsDemo_configPhase_HWA(dataPathObj);

    Both these function don't execute an fft or call a function that execute one I checked. But as you can see it is clearly stated: /* 1st Dimension FFT done! */
    The only one, which does, is the function after that
            VitalSignsDemo_configPhase_HWA(dataPathObj);

    It calls the function HWAutil_configVitalSignsFFT. However this one is already executing the 2D FFT, if i am not mistaken.

    Could you please tell me, how the 1D FFT is done? or where precisely in the Code.  and is my assumption about the 2D FFT correct

     

    Thank you

  • Hi Patrick,

    Sorry for the delayed response. I would like backtrack to the following responses from you to understand exactly what issues are you seeing in

    "I read the doxy FIle of the test mem_capture. But that couldn't help me. I don't  even know how to run the damn file."

    (1) Running the capture demo: The sequence of steps to run a demo in CCS mode is explained in SDK user guide but if that's not clear, you can also refer to the Setup guide for 14xx OOB demo provide here to learn how to run a code in CCS mode. Once you understand that, you can follow the same process and use the .out file provided in the mem_capture demo directory.

    "Ah you meant this file. I have read it times and times again. Even with this i  couldn't figure out, where raw data are."

    (2) Once you are able to run the demo as explained in (1), you should be able to look at the CCS memory window at the address provided for the ADC buffer (again, follow the instructions provided in the SDK user guide for running the capture demo) and look at the captured ADC data. After that you can ask specific questions regarding the data format which is explained in the app note referred above.

    Thanks

    -Nitin  

     

     

  • Hi Patrick,

    We have not heard back from you on this thread so we will close it. Please create a new thread for further support.

    Regards

    -Nitin