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.

IWR6843: Inquiry About LVDS Line Output Data Rates in IWR6843

Part Number: IWR6843

Tool/software:

Dear Texas Instruments Support Team,

I have a question regarding the LVDS line configuration for the IWR6843, specifically related to the output data rates.

In the IWR6843 Datasheet (SWRS219E) under section 8.10.4 LVDS Interface Configuration, it states that the LVDS interface supports the following data rates:

  • 900 Mbps (450 MHz DDR Clock)

  • 600 Mbps (300 MHz DDR Clock)

  • 450 Mbps (225 MHz DDR Clock)

  • 400 Mbps (200 MHz DDR Clock)

  • 300 Mbps (150 MHz DDR Clock)

  • 225 Mbps (112.5 MHz DDR Clock)

  • 150 Mbps (75 MHz DDR Clock)

However, in the mmw_lvds_stream.c file, specifically in the function int32_t MmwDemo_LVDSStreamInit(void), there are configuration variables related to the number of LVDS lanes, DDR or SDR selection, and MSB or LSB selection. But, there seems to be no parameter for changing or configuring the data rates.

Hence, my questions are as follows:

  1. Are the LVDS line output data rates fixed? If they are fixed, what is the fixed value for these data rates?

  2. Can the LVDS line output data rates be modified on the radar sensor (IWR6843)? If so, how can the data rates be changed?

I look forward to your response and clarification.

Best regards,

int32_t MmwDemo_LVDSStreamInit(void)
{
    CBUFF_InitCfg    initCfg;
    int32_t          retVal = MINUS_ONE;
    int32_t          errCode;
    Semaphore_Params semParams;

    /*************************************************************************************
     * Open the CBUFF Driver:
     *************************************************************************************/
    memset((void *)&initCfg, 0, sizeof(CBUFF_InitCfg));

    /* Populate the configuration: */
    initCfg.socHandle = gMmwMssMCB.socHandle;
    initCfg.enableECC = 0U;
    initCfg.crcEnable = 1U;
    /* Up to 1 SW session + 1 HW session can be configured for each frame. Therefore max session is 2. */
    initCfg.maxSessions         = 2U;
    initCfg.enableDebugMode     = false;
    initCfg.interface           = CBUFF_Interface_LVDS;
    initCfg.outputDataFmt       = CBUFF_OutputDataFmt_16bit;
    initCfg.u.lvdsCfg.crcEnable = 0U;
    initCfg.u.lvdsCfg.msbFirst  = 1U;
    /* Enable all lanes available on the platform*/
    initCfg.u.lvdsCfg.lvdsLaneEnable  = 0x3U;
    initCfg.u.lvdsCfg.ddrClockMode    = 1U;
    initCfg.u.lvdsCfg.ddrClockModeMux = 1U;

    /* Initialize the CBUFF Driver: */
    gMmwMssMCB.lvdsStream.cbuffHandle = CBUFF_init(&initCfg, &errCode);
    if (gMmwMssMCB.lvdsStream.cbuffHandle == NULL)
    {
        /* Error: Unable to initialize the CBUFF Driver */
        System_printf("Error: CBUFF_init failed with [Error=%d]\n", errCode);
        goto exit;
    }

    /* Initialize the HSI Header Module: */
    if (HSIHeader_init(&initCfg, &errCode) < 0)
    {
        /* Error: Unable to initialize the HSI Header Module */
        System_printf("Error: HSIHeader_init failed with [Error=%d]\n", errCode);
        goto exit;
    }

    /* Populate EDMA resources */
    MmwDemo_LVDSStream_EDMAInit();

    /* Initialize semaphores */
    Semaphore_Params_init(&semParams);
    semParams.mode                             = Semaphore_Mode_BINARY;
    gMmwMssMCB.lvdsStream.hwFrameDoneSemHandle = Semaphore_create(0, &semParams, NULL);
    gMmwMssMCB.lvdsStream.swFrameDoneSemHandle = Semaphore_create(0, &semParams, NULL);

    /* Check some assumptions about s/w session regarding sizes for user buffer which
     * are going to stream out in CBUFF units so must be even number of bytes */
    MmwDemo_debugAssert((sizeof(MmwDemo_LVDSUserDataHeader_t) & 1) == 0);
    MmwDemo_debugAssert((sizeof(DPIF_PointCloudCartesian) & 1) == 0);
    MmwDemo_debugAssert((sizeof(DPIF_PointCloudSideInfo) & 1) == 0);

    retVal = 0;

exit:
    return retVal;
}

  • Hi,

    What is the LVDS configuration you are looking for and which demo are you currently using it in?

    Regards

  • Dear Sharan S S,

    What is the LVDS configuration you are looking for?

    I have uploaded the '68xx Long Range People Detection' project to the IWR6843ISK and verified its operation using the Industrial Visualizer.

    Moving forward, I plan to capture the raw ADC data directly from the IWR6843ISK and independently implement the signal processing pipeline of the '68xx Long Range People Detection' demo.

    To achieve this, I am in the process of developing custom hardware equivalent to the DCA1000. The system will be built around an FPGA based on the Xilinx Zynq series.

    The goal is to control the IWR6843ISK without using mmWave Studio, and to capture the raw LVDS output data directly into the custom hardware.

    In this setup, I intend to send a configuration (CFG) file directly to the IWR6843ISK, start the radar operation, and receive the raw LVDS data through the custom FPGA-based receiver.

    Here is my question regarding the data transmission rate:

    Is the LVDS output data rate configured and controlled by the DCA1000?

    Or, is the data rate determined internally by the IWR6843ISK based on the configuration, and the DCA1000 simply synchronizes and receives data at that rate?


    which demo are you currently using it in?

    Currently, I have not been able to find a demo project that supports transmitting raw data over the LVDS interface, so I have been unable to proceed.

    Could you please recommend a demo project that enables raw data transmission via the LVDS lines?

    Best regards,
    Jaehoon Kim