工具/软件:
尊敬的德州仪器(TI)支持团队:
我对 IWR6843的 LVDS 线路配置有疑问、特别是与输出数据速率相关。
在中 IWR6843数据表(SWRS219E) 第节 8.10.4 LVDS 接口配置 、它指出 LVDS 接口支持以下数据速率:
-
900Mbps (450 MHz DDR 时钟)
-
600Mbps (300 MHz DDR 时钟)
-
450Mbps (225 MHz DDR 时钟)
-
400Mbps (200 MHz DDR 时钟)
-
300Mbps (150 MHz DDR 时钟)
-
225Mbps (112.5 MHz DDR 时钟)
-
150Mbps (75 MHz DDR 时钟)
不过、在中 mmw_lvs_stream.c 文件(特别是在函数中int32_t MmwDemo_LVDSStreamInit(void))有与 LVDS 通道数、DDR 或 SDR 选择以及 MSB 或 LSB 选择相关的配置变量。 但是、似乎没有用于更改或配置的参数 数据速率 。
因此、我的问题如下:
-
LVDS 线路输出数据速率是否固定? 如果它们是固定的、这些数据速率的固定值是多少?
-
能否修改雷达传感器(IWR6843)上的 LVDS 线路输出数据速率? 如果是、如何更改数据速率?
我期待着你的答复和澄清。
此致、
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;
}