LVDS传输用户自定义数据

Other Parts Discussed in Thread: IWR1843BOOST

您好,我想通过LVDS传输自定义的数据,在程序中做了如下操作:

  if (gMrrDSSMCB.lvdsStreamCfg.isSwEnabled == 1)
                {
                    if(gMrrDSSMCB.lvdsStream.swSessionHandle != NULL)
                    {
                        MmwDemo_LVDSStreamDeleteSwSession(gMrrDSSMCB.lvdsStream.swSessionHandle);
                    }

                    /* Configure SW session for this subframe */
                    if (MmwDemo_LVDSStreamSwConfig(dataPathObj) < 0)
                    {
                        System_printf("Failed LVDS stream SW configuration\n");
                        return;
                    }
                    /* Populate user data header that will be streamed out*/
                    gMrrDSSMCB.lvdsStream.userDataHeader.frameNum  = gMrrDSSMCB.stats.frameStartEvt;
                    gMrrDSSMCB.lvdsStream.userDataHeader.detObjNum = dataPathObj->numDetObj;
                    gMrrDSSMCB.lvdsStream.userDataHeader.reserved  = 0xABCD;

                    if(CBUFF_activateSession (gMrrDSSMCB.lvdsStream.swSessionHandle, &retVal) < 0)
                    {
                        System_printf("Failed to activate CBUFF session for LVDS stream SW. errCode=%d\n",retVal);
                        return;
                    }
                }

在调试过程中,一直会报如下错误:

[C674X_0] Error: MmwDemo_LVDSStream_config unable to create the CBUFF SW session with [Error=-3306]
Failed LVDS stream SW configuration

这个错误代码是指在给SW Session分配会话的时候出错,而且不论我是否启动HW Session都会提示该错误

  • MmwDemo_LVDSStreamSwConfig 定义如下:
    int32_t MmwDemo_LVDSStreamSwConfig (MmwDemo_DSS_DataPathObj *datPathObj)
    {
    CBUFF_SessionCfg sessionCfg;
    MmwDemo_LVDSStream_MCB_t* streamMcb = &gMrrDSSMCB.lvdsStream;
    int32_t errCode;
    int32_t retVal = MINUS_ONE;

    memset ((void*)&sessionCfg, 0, sizeof(CBUFF_SessionCfg));

    /* Populate the configuration: */
    sessionCfg.executionMode = CBUFF_SessionExecuteMode_SW;
    sessionCfg.edmaHandle = gMrrDSSMCB.dataPathObj[0].edmaHandle[MMW_LVDS_STREAM_EDMA_INSTANCE];
    sessionCfg.allocateEDMAChannelFxn = MmwDemo_LVDSStream_EDMAAllocateCBUFFSwChannel;
    sessionCfg.freeEDMAChannelFxn = MmwDemo_LVDSStream_EDMAFreeCBUFFSwChannel;
    sessionCfg.frameDoneCallbackFxn = MmwDemo_LVDSStream_SwTriggerFrameDone;
    sessionCfg.dataType = CBUFF_DataType_COMPLEX;
    sessionCfg.u.swCfg.userBufferInfo[0].size = HSIHeader_toCBUFFUnits(sizeof(MmwDemo_LVDSUserDataHeader_t));
    sessionCfg.u.swCfg.userBufferInfo[0].address = (uint32_t)&(streamMcb->userDataHeader);
    if(datPathObj->numDetObj != 0)
    {
    sessionCfg.u.swCfg.userBufferInfo[1].size = HSIHeader_toCBUFFUnits((datPathObj->numDetObj) * sizeof(MmwDemo_detectedObj));
    sessionCfg.u.swCfg.userBufferInfo[1].address = (uint32_t)datPathObj->detObj2D;
    }
    else
    {
    sessionCfg.u.swCfg.userBufferInfo[1].size = 0;
    sessionCfg.u.swCfg.userBufferInfo[1].address = 0;
    }

    /* Do we need to enable the header? */
    if(gMrrDSSMCB.lvdsStreamCfg.isHeaderEnabled)
    {
    /* Create the HSI Header to be used for the HW Session: */
    if (HSIHeader_createHeader (&sessionCfg, true, &(streamMcb->swSessionHSIHeader), &errCode) < 0)
    {
    /* Error: Unable to create the HSI Header; report the error */
    System_printf("Error: MmwDemo_LVDSStream_config unable to create HW HSI header with [Error=%d]\n", errCode);
    goto exit;
    }

    /* Setup the header in the CBUFF session configuration: */
    sessionCfg.header.size = HSIHeader_getHeaderSize(&streamMcb->swSessionHSIHeader);
    sessionCfg.header.address = (uint32_t)&(streamMcb->swSessionHSIHeader);
    }

    /* Create the SW Session. */
    streamMcb->swSessionHandle = CBUFF_createSession (gMrrDSSMCB.lvdsStream.cbuffHandle, &sessionCfg, &errCode);
    System_printf("infor:[infor=%d]\n", 1);

    if (streamMcb->swSessionHandle == NULL)
    {
    /* Error: Unable to create the CBUFF SW session */
    System_printf("Error: MmwDemo_LVDSStream_config unable to create the CBUFF SW session with [Error=%d]\n", errCode);
    goto exit;
    }

    /* Control comes here implies that the LVDS Stream has been configured successfully */
    retVal = 0;

    exit:
    return retVal;
    }
  • 请问用的是哪款芯片/板子?请把您的调试环境描述一下,谢谢!
  • 用的IWR1843boost和DCA1000

    程序是MRR_LVDS的demo

  • 你好,

    MRR demo里的LVDS功能并没有验证过。

    建议使用mmwave sdk里mmw demo里的LVDS streaming功能。

  • 您好,能告知mmw demo的具体路径吗?是在SDK路径下还是在某个toolbox下面?

  • 你好,

    如下:
    C:\ti\mmwave_sdk_03_05_00_04\packages\ti\demo\xwr18xx\mmw\mss\mmw_lvds_stream.c