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:
-
Are the LVDS line output data rates fixed? If they are fixed, what is the fixed value for these data rates?
-
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; }