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.

[参考译文] CCS/IWR6843:IWR6843的 LVDS

Guru**** 1960875 points
Other Parts Discussed in Thread: IWR6843, DCA1000EVM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/812242/ccs-iwr6843-lvds-of-iwr6843

器件型号:IWR6843
主题中讨论的其他器件: DCA1000EVM

工具/软件:Code Composer Studio

大家好!

当我使用 iwr6843时 、LVDS 演示。\packages/ti\drivers\cbuw\test\xwr68xx 不起作用、我们无法检测到 LVDS 时钟信号、原因是什么?  

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能否共享设置的更多详细信息(包括图片)?

    此致、

    查尔斯·奥

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢,查尔斯·奥!

    我 只需修改以下函数(两个)、其他函数都不会更改。您能告诉我如何在 IWR6843上测试 LVDS 接口 吗?

    1 .\packages/ti\drivers\cbuw\test\xwr68xx\main_MSS.c

    静态空 Test_initTask (UARg arg0、UARg arg1)

       SoC_Handle             socHandle;
       int32_t                错误代码;
       EDMA_Handle            edmaHandle;
       EDMA_errorConfig_t     errorConfig;
       EDMA_instanceInfo_t    instanceInfo;
       ADCBuf_Params          参数;
       ADCBuf_handle          adcBufHandle;
       /*获取 SOC 句柄:*/
       socHandle =(SOC_Handle) arg0;
       /*初始化测试记录器框架:*/
       MCPI_Initialize ();
       /*初始化 EDMA:*/
       错误代码= EDMA_INIT (0);
       if (错误代码!= EDMA_NO_ERROR)
       {
           System_printf ("错误:无法初始化 EDMA、错误代码=%d\n"、错误代码);
           返回;
       }
       System_printf ("调试:EDMA 实例0已初始化\n");
       /*打开第一个 EDMA 实例*/
       edmaHandle = EDMA_open (0、&errCode、&instanceInfo);
       if (edmaHandle ==空)
       {
           System_printf ("错误:无法打开 EDMA 实例、erorCode =%d\n"、errCode);
           返回;
       }
       /*设置 EDMA 错误监控:*/
       errorConfig.isConfigAllEventQueues             = true;
       errorConfig.isConfigAllTransferControllers     = true;
       errorConfig.isEventQueueThresholdEnabled    = true;
       errorConfig.eventQueueThreshold                = EDMA_EVENT_Queue_threshold_MAX;
       errorConfig.isEnableAllTransferControllerErrors = true;
       errorConfig.callbackFxn                        = Test_edmaErrorCallbackFxn;
       errorConfig.transferControllerCallbackFxn      = Test_edmaTransferControllerErrorCallbackFxn;
       错误代码= EDMA_configErrorMonitoring (edmaHandle、errorConfig);
       if (错误代码!= EDMA_NO_ERROR)
       {
           System_printf ("调试:EDMA_configErrorMonitoring()失败,错误代码=%d\n",错误代码);
           返回;
       }
       /
        * ADCBUF 初始化:
        (三 /
       ADCBuf_init ();
       /*打开 ADC 驱动程序:*/
       ADCBuf_Params_init (params);
       /*设置线性调频脉冲阈值:*/
       params.chirpThresholdPing = 1U;
       params.chirpThresholdPong = 1U;
       Params.continousMode     = 0U;
       /*打开 ADC 驱动程序:*/
       adcBufHandle = ADCBuf_open (0、params);
       if (adcBufHandle == NULL)
       {
           System_printf ("错误:无法打开 ADC 驱动程序\n");
           返回;
       }
    #if 1.
       /*测试:无效的数据大小*/
       if (Test_InvalidDataSize (socHandle、edmaHandle)< 0)
           返回;
       /*测试非交错模式:*/
       if (Test_dataFormats (socHandle、edmaHandle、adcBufHandle、CBUF_DataMode_NON_Interleaved)< 0)
           返回;
    #endif
     #if 0
       /*测试多个会话:*/
       if (Test_MultipleSessions (socHandle、edmaHandle、adcBufHandle)< 0)
           返回;
     #endif
     while (1)
     {
       CBUF_DriverMCB * pp =(CBUF_DriverMCB *) cbuffHandle;
       SoC_DriverMCB*     ptrSOCDriverMCB;
       ptrSOCDriverMCB =(SOC_DriverMCB* ) pp->initCfg.socHandle;
       System_printf (" ptrSOCDriverMCB:%x\n"、ptrSOCDriverMCB->ptrTopRCMRegs);
       
       System_printf ("numActiveLVDSLanes:%d ptrCBUFFReg:%x\n"、pp->numActiveLVDSLanes、pp->ptrCBUFFReg);
       system_printf ("sleep 5s frmcnt:%d errnum:%d\n"、pp->totalNumFrameStart、pp->totalNumErrorInterrupts);
       Task_sleep (5000);
     }
     #if 0
       /*测试:EDMA 内存分配失败*/
       if (Test_EDMAChannelAllocationFailures (socHandle、edmaHandle、adcBufHandle、CBUF_DataMode_NON_Interleaved)< 0)
           返回;
       /*测试:多线性调频脉冲模式*/
       if (Test_MultipleChirpMode (等手柄、edmaHandle、adcBufHandle)< 0)
           返回;
       /*取消初始化 SOC 模块:*/
       if (SOC_DEINIT (等手柄、错误代码)< 0)
           System_printf ("错误:无法关闭 SOC 模块[错误代码%d]\n"、错误代码);
       /*设置测试自动化的 MCPI 结果*/
       MCPI_setTestResult ();
       /*单元测试已完成*/
       System_printf ("调试:CBUFF 单元测试已完成\n");
       /*退出 BIOS */
       BIOS_exit (0);
     
       返回;
     #endif
    2 .\packages/ti\drivers\cbuff test\common\test_common.c
      CBUF_Handle       cbuffHandle;
    CBUF_SessionHandle SessionHandle;

    Int32_t Test_dataFormats
    (
       SoC_Handle     socHandle、
       EDMA_Handle    edmaHandle、
       ADCBuf_Handle  adcBufHandle、
       CBUF_DataMode 数据模式
    )

       CBUF_SessionCfg   sessionCfg;
       CBUF_DataFmt      数据格式;
       int32_t            错误代码;
       字符               testMessage[256];
       CBUF_InitCfg      initCfg;
       uint8_t            numChannel;
       /*调试消息:*/
       System_printf ("系统_printf ")("---------------------------------------- \n");
       System_printf ("调试:在%s 模式下测试 CBUFF 数据格式\n"、
                      (dataMode = CBUF_DataMode_Interleaved)? "交错式":"非交错式");
       System_printf ("系统_printf ")("---------------------------------------- \n");
       /*初始化配置:*/
       memset ((void*)&initCfg、0、sizeof (CBUFF_InitCfg));
       /*填充配置:*/
       initCfg.socHandle               = socHandle;
       initCfg.outputDataFmt           = CBUF_OutputDataFmt_16位;
       initCfg.enableECC               = 1U;
       initCfg.crcEnable               = 1U;
     // initCfg.enableDebugMode         = false;
     initCfg.enableDebugMode         = true;
       initCfg.MaxSessions             = 2U;
       initCfg.interface               = CBUF_Interface_LVDS;
       initCfg.u.lvdsCfg.crcEnable     = 0U;
       initCfg.u.lvdsCfg.msbFirst      = 1U;
       initCfg.u.lvdsCfg.ddrClockMode  = 1U;
       initCfg.u.lvdsCfg.ddrClockModeMux= 1U;
       //设置通道:此配置是特定于平台的*/
    #ifdef SOC_XWR14XX
       initCfg.U.lvdsCfg.lvdsLaneEnable = 0xFU;
    其他
       initCfg.U.lvdsCfg.lvdsLaneEnable = 0x3U;
    #endif
       /*初始化 CBUFF 驱动程序:*/
       cbuffHandle = CBUF_init (&initCfg、&errCode);
       if (cbuffHandle == NULL)
       {
           System_printf ("错误:CBUFF 驱动程序初始化失败[错误代码%d]\n"、错误代码);
           返回-1;
       }
     numChannel = 1;
       /*循环浏览所有 ADC 通道*/
     // 表示(numChannel = 1U;numChannel <= SYS_common_NUM_RX_channel;numChannel++)
       {
           /*启用 */
           test_enableADCChannel (adcBufHandle、numChannel);
      dataFormat = CBUF_DataFmt_ADC_DATA;
           /*循环浏览所有数据格式:*/
          // for (dataFormat = CBUF_DataFmt_ADC_DATA;dataFormat < CBUF_DataFmt_MAX;dataFormat++)
      //    {
               /*创建 MCPI 测试消息:*/
               sprintf (testMessage、"CBUFF HW 会话:ADC 通道=%d 数据格式[%s]%s"、
                        NumChannel、
                        (dataMode = CBUF_DataMode_Interleaved)? "交错":"非交错"、
                        gCBUFFDataFormatString[dataFormat]);
               /*初始化配置*/
               memset ((void*)&sessionCfg、0、sizeof (CBUFF_SessionCfg));
               /*填充配置:*/
               sessionCfg.ExecutionMode                     = CBUF_SessionExecuteMode_HW;
      // sessionCfg.ExecutionMode                     = CBUF_SessionExecuteMode_SW;
               sessionCfg.edmaHandle                        = edmaHandle;
               sessionCfg.allocateEDMAChannelFxn            = Test_EDMAAllocateCBUFFChannel;
               sessionCfg.freeEDMAChannelFxn                = Test_EDMAFreeCBUFFChannel;
               sessionCfg.datatype                          = CBUF_datatype_complex;
               sessionCfg.header.size                       = 0U;
               sessionCfg.header.address                    = 0U;
               sessionCfg.U.hwcfg.dataMode                  = dataMode;
               sessionCfg.U.hwcfg.dataFormat                = dataFormat;
               sessionCfg.U.hwcfg.opMode                    = CBUF_OperationalMode_CHIRP;
               sessionCfg.U.hwcfg.numChirpsPerFrame         = 0x20U;
               sessionCfg.u.hwCfg.chirpMode                 = 0x1U;
               sessionCfg.U.hwcfg.numADCSamples             = 256U;
               sessionCfg.U.hwcfg.adcBufHandle              = adcBufHandle;
               sessionCfg.U.hwcfg.cqSize[0]                 = 0U;
               sessionCfg.U.hwcfg.cqSize[1]                 = 128U;
               sessionCfg.U.hwcfg.cqSize[2]                 = 128U;
               sessionCfg.u.hwCfg.userBufferInfo[0].address =(uint32_t)&gUserBuffer0[0];
               sessionCfg.u.hwCfg.userBufferInfo[0].size    = sizeof (gUserBuffer0);
               sessionCfg.u.hwCfg.userBufferInfo[1].address =(uint32_t)&gUserBuffer1[0];
               sessionCfg.u.hwCfg.userBufferInfo[1].size    = sizeof (gUserBuffer1);
               sessionCfg.u.hwCfg.userBufferInfo[2].address =(uint32_t)&gUserBuffer2[0];
               sessionCfg.u.hwCfg.userBufferInfo[2].size    = sizeof (gUserBuffer2);
               /*创建硬件会话:*/
               SessionHandle = CBUF_createSession (cbuffHandle、&sessionCfg、&errCode);
               if (SessionHandle ==空)
               {
                   System_printf ("错误:无法创建会话[错误代码%d]\n"、错误代码);
                   MCPI_setFeatureTestResult (testMessage、MCPI_TestResult_FAIL);
                   返回-1;
               }
               /*调试消息:显示测试的 EDMA 通道用法。 *
               System_printf ("调试:EDMA 通道使用量=%d\n"、gCBUFFEDMAChannelResourceCounter);
               /*激活会话:*/
               if (CBUF_activateSession (SessionHandle、&errCode)< 0)
               {
                   System_printf ("错误:无法激活会话[错误代码%d]\n"、错误代码);
                   MCPI_setFeatureTestResult (testMessage、MCPI_TestResult_FAIL);
                   返回-1;
               }
       MCPI_setFeatureTestResult (testMessage、MCPI_TestResult_pass);
      // while (1)
      //  {
      //  ;
      //  }
    #if 0
               /*取消激活会话:*/
               if (CBUF_deactivateSession (SessionHandle、&errCode)< 0)
               {
                   System_printf ("错误:无法停用会话[错误代码%d]\n"、错误代码);
                   MCPI_setFeatureTestResult (testMessage、MCPI_TestResult_FAIL);
                   返回-1;
               }
               /*删除会话:*/
               if (CBUF_deleteSession (SessionHandle、&errCode)< 0)
               {
                   System_printf ("错误:无法删除会话[错误代码%d]\n"、错误代码);
                   MCPI_setFeatureTestResult (testMessage、MCPI_TestResult_FAIL);
                   返回-1;
               }
               /*健全性检查:确保所有 EDMA 资源均已清理*/
               if (gCBUFFEDMAChannelResourceCounter!=0)
               {
                   System_printf ("错误:检测到 EDMA 通道内存泄漏\n");
                   返回-1;
               }
               MCPI_setFeatureTestResult (testMessage、MCPI_TestResult_pass);
    #endif
      //    }
       }
    #if 0
       /*取消初始化并关闭 CBUFF:*/
       if (CBUF_deinit (cbuffHandle、&errCode)< 0)
       {
           System_printf ("调试:CBUFF 驱动程序 deinit %s 失败[错误代码%d]\n"、错误代码);
           返回-1;
       }
    #endif
       返回0;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否正在使用 DCA1000EVM? 请分享实际电路板设置的图片  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我没有使用 DCA1000EVM、即 IWR6843 LVDS 到我们设计的 FPGA 板的数据输出。

    我在这篇 BBS 上听取了其他人的一些建议,我可以继续我的工作。

    如果有 IWR6843 LVDS 演示的更新,请给我发电子邮件,我的电子邮件是200731@qq.com,这是很多!

x 出现错误。请重试或与管理员联系。