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.

[参考译文] TDA4VEN-Q1:我曾尝试在 TDA4VEN 上安装 OX03F 摄像头、但我不能使用 VISION_APP 显示图像。

Guru**** 2542950 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1413473/tda4ven-q1-i-tried-to-fit-the-ox03f-camera-on-tda4ven-but-i-couldn-t-use-vision_app-to-make-the-image-display

器件型号:TDA4VEN-Q1

工具与软件:

尊敬的 TI:

操作系统:Linux+RTOS (J722S)

PSDK: ti-processor-sdk-rtos-j722s-evm-09_02_00_05

SER/Deserializer:max96717F/max96722B

我目前在改装 OX03F 相机时遇到问题,我能够测量未串端的 MIPI 信号,如下所示:

同时、我使用 DCC 工具捕获了原始图像和 YUV 图像、但无法从其中看到正常图像。

e2e.ti.com/.../ox03f.zip

但是、当我运行 vision_app 时、出现了以下错误。 我怀疑 TDA4VEN 没有收到正确的数据。 如何解决此问题?

下面是我运行 vision_app 时的日志、请帮忙看一下、谢谢!

e2e.ti.com/.../4478.vision_5F00_app_5F00_log.txt

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

    您好!

    这是您尝试升级的新摄像头吗? 在其他平台上运行是否正常? 您进行了哪些更改来启用它? 您使用的是哪个 SDK 版本?

    此致、

    Brijesh  

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

    您好!

    此摄像头在 UVC 盒上正常亮起。 使用的 SDK 为 ti-processor-sdk-rtos-j722s-evm-09_02_00_05。 我们只是将串行器/解串器配置更改为 max96722和 max96717f、这就是所发生的情况。

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

    尊敬的 Fan:

    但是、此摄像头和/或串行器/解串器配置是否已经与其他 TDA4器件一起提供? 还是想新鲜加电?  

    您是否在 CSIRX 中正确配置了通道速度、虚拟通道、数据类型参数、它们是否 与传感器/解串器的输出匹配?  

    此致、

    Brijesh

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

    您好!

    我只想用 vision_app 说明这一点。 我使用的传感器配置具体为1920* 1536、30 fps、数据格式为 raw12。 这是我在驱动程序中的配置。 我不知道有任何其他会阻止 TDA4获取数据的不匹配情况。 此外、我需要在何处配置虚拟通道?

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

    尊敬的 Fan:

    虚拟通道 ID 由应用程序设置、就像您使用具有4个摄像头输入的多摄像头示例一样、它 在应用程序中使用虚拟通道 ID 0至3。  

    另一个问题是、您在哪里设置 传感器和串行器/解串器配置? 您是否可以确保在 streamon 回调中进行整个配置?  

    此致、

    Brijesh

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

    尊敬的 Fan:

    我将无法在 Maxim 配置中提供帮助、在这种情况下、您需要与 Maxim 进行检查。  

    此致、

    Brijesh

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

    您好!

    此配置已经过验证、它可以正常亮起、但平台不同。 所以我仍然需要你们的帮助。 谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="80721" url="~/support/processors-group/processors/f/processors-forum/1413473/tda4ven-q1-i-tried-to-fit-the-ox03f-camera-on-tda4ven-but-i-couldn-t-use-vision_app-to-make-the-image-display/5417663 #5417663"]另一个问题、您在哪里设置 传感器和串行器/解串器配置? 您能否确保在 streamon 回调中执行整个配置?[/QUOT]

    您能否检查此更改?  

    此致、

    Brijesh

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

    我的 SerDes 在 OX03F_Config 中按如下所示进行配置:其中 ub960配置为 max96722、ub953配置为 max6717f。

    static int32_t OX03F_Config(uint32_t chId, void *pSensorHdl, uint32_t sensor_features_requested)
    {
        int32_t status = 0;
        uint32_t i2cInstId;
        uint16_t sensor_cfg_script_len = 0;
        I2cParams *sensorCfg = NULL;
        I2cParams *serCfg = NULL;
        IssSensors_Handle * pSenHandle = (IssSensors_Handle*)pSensorHdl;
        IssSensor_CreateParams * pCreatePrms;
    
        assert(NULL != pSenHandle);
        pCreatePrms = pSenHandle->createPrms;
        assert(NULL != pCreatePrms);
    
        if(sensor_features_requested != (sensor_features_requested & ISS_SENSOR_OX03F_FEATURES))
        {
            printf("OX03F_Config : Error. feature set 0x%x is not supported \n", sensor_features_requested);
            return -1;
        }
    
        ox03fFeaturesEnabled= sensor_features_requested;
    
        i2cInstId = pCreatePrms->i2cInstId;
    
        if(ISS_SENSOR_FEATURE_CFG_UC1 == (sensor_features_requested & ISS_SENSOR_FEATURE_CFG_UC1))
        {
            serCfg = ox03fSensorRegConfigWdr60fps.serCfgPreScript;
            sensorCfg = ox03fSensorRegConfigWdr60fps.sensorCfgPreScript;
            sensor_cfg_script_len = OX03F_WDR_CONFIG_SIZE;
        }
        else
        {
            if(sensor_features_requested & ISS_SENSOR_FEATURE_COMB_COMP_WDR_MODE)
            {
                serCfg = ox03fSensorRegConfigWdr.serCfgPreScript;
                sensorCfg = ox03fSensorRegConfigWdr.sensorCfgPreScript;
                sensor_cfg_script_len = OX03F_WDR_CONFIG_SIZE;
            }else
            {
                serCfg = ox03fSensorRegConfigLinear.serCfgPreScript;
                sensorCfg = ox03fSensorRegConfigLinear.sensorCfgPreScript;
                sensor_cfg_script_len = OX03F_LINEAR_CONFIG_SIZE;
            }
        }
    
        /*Deserializer config is done in IssSensor_PowerOn, Need to set sensor alias*/
        status = UB960_SetSensorAlias(chId, OX03F_I2C_ADDR >> 1, pCreatePrms->i2cAddrSer[chId]);
        if(0 != status)
        {
            printf("OX03F_Config Error : UB960_SetSensorAlias for chId %d returned %d \n", chId, status);
        }else
        {
            status = ub953_cfgScript(i2cInstId, pCreatePrms->i2cAddrSer[chId], serCfg);
            if(0 != status)
            {
                printf("OX03F_Config Error : UB953 config failed for camera # %d \n", chId);
            }else
            {
                status = OX03F_Sensor_RegConfig(i2cInstId, pCreatePrms->i2cAddrSensor[chId], sensorCfg, sensor_cfg_script_len);
            }
        }
        return (status);
    }

    我仅在 streamOn 函数中打开到0X03F 的流、并读取串行器/解串器的状态寄存器。

    static int32_t OX03F_StreamOn(uint32_t chId, void *pSensorHdl)
    {
        int32_t status = 0;
    
        IssSensors_Handle * pSenHandle = (IssSensors_Handle*)pSensorHdl;
        IssSensor_CreateParams * pCreatePrms;
        uint32_t i2cInstId;
        uint8_t sensorI2cAddr;
        int8_t ub960InstanceId = getUB960InstIdFromChId(chId);
        uint8_t reg_val;
    
        if(ub960InstanceId < 0)
        {
            printf("Invalid ub960InstanceId \n");
            return -1;
        }
    
        assert(NULL != pSenHandle);
        pCreatePrms = pSenHandle->createPrms;
        assert(NULL != pCreatePrms);
    
        if(ISS_SENSOR_FEATURE_CFG_UC1 == (ox03fFeaturesEnabled& ISS_SENSOR_FEATURE_CFG_UC1))
        {
            if(pSenHandle->sensorIntfPrms->numCamerasStreaming >= 3U)
            {
                printf("OX03F_StreamOn Error : %d cameras streaming already \n", pSenHandle->sensorIntfPrms->numCamerasStreaming);
                printf("OX03F_StreamOn Error : 60fps mode can support upto 3 cameras because of UB960 b/w limitation \n");
                return -1;
            }
        }
    
        i2cInstId = pCreatePrms->i2cInstId;
        sensorI2cAddr = pCreatePrms->i2cAddrSensor[chId];
    
        status |= OX03F_WriteReg(i2cInstId, sensorI2cAddr, 0x0100, 0x1, 1u);/*ACTIVE*/
        appLogWaitMsecs(10);
        status |= enableUB960Streaming(chId);
    
        status = OX03F_ReadReg(i2cInstId, pCreatePrms->i2cAddrSer[chId], 0x005B, &reg_val, 1U);
        printf("OX03F_StreamOn : 96717f Read: 0x005B=%02x \n", reg_val);
    
        status = OX03F_ReadReg(i2cInstId, pCreatePrms->i2cAddrSer[chId], 0x0112, &reg_val, 1U);
        printf("OX03F_StreamOn : 96717f Read: 0x0112=%02x \n", reg_val);
    
        status = OX03F_ReadReg(i2cInstId, pCreatePrms->i2cAddrSer[chId], 0x011a, &reg_val, 1U);
        printf("OX03F_StreamOn : 96717f Read: 0x011a=%02x \n", reg_val);
    
        OX03F_ReadReg(i2cInstId, pCreatePrms->i2cAddrSer[chId], 0x55f, &reg_val, 1U);
        printf("OX03F_StreamOn : 96717f Read: 0x55f=%02x \n", reg_val);
        appLogWaitMsecs(100);
        OX03F_ReadReg(i2cInstId, pCreatePrms->i2cAddrSer[chId], 0x55f, &reg_val, 1U);
        printf("OX03F_StreamOn : 96717f Read: 0x55f=%02x \n", reg_val);
    
        OX03F_ReadReg(i2cInstId, 0x29, 0x108, &reg_val, 1U);
        printf("OX03F_StreamOn : 96722 Read: 0x108=%02x \n", reg_val);
    
        OX03F_ReadReg(i2cInstId, 0x29, 0x11a, &reg_val, 1U);
        printf("OX03F_StreamOn : 96722 Read: 0x11a=%02x \n", reg_val);
    
        OX03F_ReadReg(i2cInstId, 0x29, 0x1dc, &reg_val, 1U);
        printf("OX03F_StreamOn : 96722 Read: 0x1dc=%02x \n", reg_val);
    
        OX03F_ReadReg(i2cInstId, 0x29, 0x1fc, &reg_val, 1U);
        printf("OX03F_StreamOn : 96722 Read: 0x1fc=%02x \n", reg_val);
    
        OX03F_ReadReg(i2cInstId, 0x29, 0x21c, &reg_val, 1U);
        printf("OX03F_StreamOn : 96722 Read: 0x21c=%02x \n", reg_val);
    
        return (status);
    }

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

    请尝试移动 streamon 回调中的整个配置。  

    此致、

    Brijesh

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

    好的、我要尝试一下。 但您能告诉我原因是什么吗?

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

    您只需要在 streamon 回调中启动解串器/传感器。 这是需要遵循的序列。  

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

    您好!

    我已经将配置过程移至 StreamOn 函数、但仍然显示相同的错误。

     Enter Choice: [MCU2_0]    157.846467 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_STREAM_ON
    [MCU2_0]    157.846515 s: IM_SENSOR_CMD_STREAM_ON:  channel_mask = 0x1
    [MCU2_0]    157.846734 s: UB960 config start
    [MCU2_0]    157.846752 s: End of UB960 config
    [MCU2_0]    157.846765 s: ub953 config start : slaveAddr = 0x40
    [MCU2_0]    157.846948 s:  UB953: Reg Write 0x80 to regAddr 0x02be
    [MCU2_0]    157.856737 s:  UB953: Reg Write 0x00 to regAddr 0x0383
    [MCU2_0]    157.866736 s:  UB953: Reg Write 0x6c to regAddr 0x0318
    [MCU2_0]    158.121757 s:  UB953: Reg Write 0x09 to regAddr 0x03f1
    [MCU2_0]    158.131757 s:  UB953: Reg Write 0x59 to regAddr 0x03f0
    [MCU2_0]    158.141758 s:  UB953: Reg Write 0x1c to regAddr 0x0570
    [MCU2_0]    158.173760 s:  UB953: Reg Write 0x81 to regAddr 0x02c7
    [MCU2_0]    158.183761 s:  UB953: Reg Write 0x81 to regAddr 0x02cd
    [MCU2_0]    158.193761 s:  UB953: Reg Write 0x81 to regAddr 0x02d6
    [MCU2_0]    158.203762 s:  UB953: Reg Write 0x90 to regAddr 0x02be
    [MCU2_0]    158.213762 s:  UB953: Reg Write 0x00 to regAddr 0x0330
    [MCU2_0]    158.223764 s:  UB953: Reg Write 0x33 to regAddr 0x0331
    [MCU2_0]    158.233765 s:  UB953: Reg Write 0x00 to regAddr 0xffff
    [MCU2_0]    158.233780 s:  End of UB953 config
    [MCU2_0]    158.233810 s:  Configuring OX03F imager 0x36.. Please wait till it finishes
    [MCU2_0]    158.606783 s: UB960 config start
    [MCU2_0]    158.606799 s: End of UB960 config
    [MCU2_0]    158.607004 s: OX03F_StreamOn : 96717f Read: 0x005B=02
    [MCU2_0]    158.607210 s: OX03F_StreamOn : 96717f Read: 0x0112=8a
    [MCU2_0]    158.607415 s: OX03F_StreamOn : 96717f Read: 0x011a=00
    [MCU2_0]    158.607619 s: OX03F_StreamOn : 96717f Read: 0x55f=61
    [MCU2_0]    158.706838 s: OX03F_StreamOn : 96717f Read: 0x55f=61
    [MCU2_0]    158.707040 s: OX03F_StreamOn : 96722 Read: 0x108=62
       158.707957 s: ISS: Starting sensor [OX03F-UB953_SW] ... Done !!!
    get_dcc_dir_size : Could not open directory or directory is empty /opt/vision_apps/dcc/OX03F-UB953_SW/wdr
    [MCU2_0]    158.707244 s: OX03F_StreamOn : 96722 Read: 0x11a=02
    [MCU2_0]    158.707446 s: OX03F_StreamOn : 96722 Read: 0x1dc=81
    [MCU2_0]    158.707651 s: OX03F_StreamOn : 96722 Read: 0x1fc=80
    

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

    您好!

    您能否确认配置已从配置回调中删除并仅在 streamon 回调中启用?

    此致、

    Brijesh