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.

Appro方案,sensor 从OV2715 换成 AR0130

问题:

驱动 /drv/usermod/ 增加了AR0130的驱动,MAKEFILE.MK 也进行了修改,编译执行,i2c寄存器读写操作都是ok的

但是i2c地址线信号比较乱,图像出不来,system_control 过大约一分钟后,出错

ApproDrvExit: 7
Error: WaitStreamReady Fail.
Error: SemWait: Invalid Semaphore handler

请问,我是不是有修改遗漏的地方,谢谢!

AV_CAPTURE的debug日志也放开了,没有什么有用的信息输出

  • 下面是启动部分日志信息:

     

    麻烦哪位大神帮忙分析下,谢过

  • 你先确定一下I2C到底对不对吧。加点代码去通过I2C把sensor寄存器回读过来看看是否对的上。

    看看sensor这边有没有正常的输出数据。  HS和VS这些东西应该都是能够用示波器量到的。

  • 我修改了AR0130的驱动,加了部分读操作和打印日志

    for(j=0; j < i; j++)
    {
    status = DRV_i2c16Write16(&gDRV_imgsObj.i2cHndl, &regAddr[j], &regValue[j], 1);
    if(status != OSA_SOK)
    {
    printf("I2C write Error,regAddr:%x, regValue:%x index:%d\n", regAddr[j], regValue[j], j);
    return status;
    }
    printf("I2C write,index:%d, regAddr:%x, regValue:%04x\n", j, regAddr[j], regValue[j]);
    if(regAddr[j] == 0x301A )
    OSA_waitMsecs(100);

    OSA_waitMsecs(100);

    status = DRV_i2c16Read16(&gDRV_imgsObj.i2cHndl, &regAddr[j], &regGetValue, 1);
    if(status != OSA_SOK)
    {
    printf("I2C Read Error,regAddr:%04x, regValue:%04x index:%d\n", regAddr[j], regGetValue, j);
    return status;
    }
    printf("I2C Read,index:%d, regAddr:%04x, regValue:%04x\n", j, regAddr[j], regGetValue);
    }


    输出的日志如下,截取部分:

    I2C write,index:0, regAddr:301a, regValue:0001
    I2C Read,index:0, regAddr:301a, regValue:10d8
    I2C write,index:1, regAddr:301a, regValue:10d8
    I2C Read,index:1, regAddr:301a, regValue:10d8
    I2C write,index:2, regAddr:3088, regValue:8000
    I2C Read,index:2, regAddr:3088, regValue:8000
    I2C write,index:3, regAddr:3086, regValue:0225
    I2C Read,index:3, regAddr:3086, regValue:5000
    I2C write,index:4, regAddr:3086, regValue:5050
    I2C Read,index:4, regAddr:3086, regValue:2d00
    I2C write,index:5, regAddr:3086, regValue:2d26
    I2C Read,index:5, regAddr:3086, regValue:0800
    I2C write,index:6, regAddr:3086, regValue:0828
    I2C Read,index:6, regAddr:3086, regValue:0d00
    I2C write,index:7, regAddr:3086, regValue:0d17
    I2C Read,index:7, regAddr:3086, regValue:0900
    I2C write,index:8, regAddr:3086, regValue:0926
    I2C Read,index:8, regAddr:3086, regValue:0000
    I2C write,index:9, regAddr:3086, regValue:0028
    I2C Read,index:9, regAddr:3086, regValue:0500
    I2C write,index:10, regAddr:3086, regValue:0526
    I2C Read,index:10, regAddr:3086, regValue:a700

    写入和读出的不一致,麻烦帮忙看看,谢谢,是不是api调用错误还是i2c的frequency有问题 ?

  • 我不清楚你的OV到AR 传感器这边硬件有什么改动? I2C是否有做上拉处理?

    I2C的波形是否OK你应该也可以通过示波器大致的测量出来的。如果要定位是哪个I2C有问题,也可把其他板子的I2C飞过来用。

    或者你也可以I2C上什么都不配,去看看Device ID之类的状态寄存器看看。这样确认一下I2C的读至少没问题吧。一步一步来。

    Sensor本身数字部分你也可以看看是否正常的跑起来了。很多sensor都有缺省的配置比如你解复位之后它就能按照某个既定分辨率输出等等。

  • 你好  请问你修改成功了吗?

    我想把OV2715改成MT9P031 编译始终显示链接错误

    collect2: ld returned 1 exit status

    请问你碰到过这个问题吗?