請問如何透過LVDS 介面傳輸我們自訂的Data 在AWR1843上

Other Parts Discussed in Thread: AWR1843

請問:

我在Trace AWR1843的sample code時候發現以下:

typedef enum CBUFF_DataFmt_e
{
/**
* @brief Only ADC Data is to sent out
*/
CBUFF_DataFmt_ADC_DATA = 0x0,

/**
* @brief Chirp Parameters + ADC Data
*/
CBUFF_DataFmt_CP_ADC,

/**
* @brief ADC Data + Chirp Parameters
*/
CBUFF_DataFmt_ADC_CP,

/**
* @brief Chirp Parameters + ADC Data + Chirp Quality
*/
CBUFF_DataFmt_CP_ADC_CQ,

/**
* @brief ADC + User Data
*/
CBUFF_DataFmt_ADC_USER,

/**
* @brief Chirp Parameters + ADC Data + Chirp Quality + User Data
*/
CBUFF_DataFmt_CP_ADC_CQ_USER,

/**
* @brief Maximum Data format value.
*/
CBUFF_DataFmt_MAX
}CBUFF_DataFmt;

有提供CBUFF_DataFmt_ADC_USER ,視乎可以讓我們user自己透過LVDS傳輸我們要傳送的資料

請問要把我們要傳送的資料放置在哪裡??或是指向到哪邊去?或要做什麼設定呢?

才能把資料透過LVDS傳輸出去

謝謝

  • 你好,

    你可以参考mmw demo里面使用LVDS的sw session来传输你们定制的信息。
    C:\ti\mmwave_sdk_03_04_00_03\packages\ti\demo\xwr18xx\mmw\mss\mmw_lvds_stream.c -- MmwDemo_LVDSStreamSwConfig()
  • 您好,

    請問是否有一些範例可以參考呢?

    請問是將我們要的傳輸的data放在sessionCfg.u.swCfg.userBufferInfo[1].address 中即可嗎?

    int32_t MmwDemo_LVDSStreamSwConfig (MmwDemo_DSS_DataPathObj *datPathObj)
    {
    CBUFF_SessionCfg sessionCfg;
    MmwDemo_LVDSStream_MCB_t* streamMcb = &gSrrDSSMCB.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 = datPathObj->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(datPathObj->cliCfg->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 (gSrrDSSMCB.lvdsStream.cbuffHandle, &sessionCfg, &errCode);

    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;
    }

  • 你好,

    这段代码本身就是一个例子,你可以把你的的数据放在sessionCfg.u.swCfg.userBufferInfo[0].address 或者sessionCfg.u.swCfg.userBufferInfo[1].address。注意这个地址必须是一个全局变量。