问题:
驱动 /drv/usermod/ 增加了AR0130的驱动,MAKEFILE.MK 也进行了修改,编译执行,i2c寄存器读写操作都是ok的
但是i2c地址线信号比较乱,图像出不来,system_control 过大约一分钟后,出错
ApproDrvExit: 7
Error: WaitStreamReady Fail.
Error: SemWait: Invalid Semaphore handler
请问,我是不是有修改遗漏的地方,谢谢!
AV_CAPTURE的debug日志也放开了,没有什么有用的信息输出
lious liu:
下面是启动部分日志信息:
麻烦哪位大神帮忙分析下,谢过
Eason Wang:
你先确定一下I2C到底对不对吧。加点代码去通过I2C把sensor寄存器回读过来看看是否对的上。
看看sensor这边有没有正常的输出数据。 HS和VS这些东西应该都是能够用示波器量到的。
lious liu:
回复 Eason Wang:
我修改了AR0130的驱动,加了部分读操作和打印日志
for(j=0; j < i; j++){ status = DRV_i2c16Write16(&gDRV_imgsObj.i2cHndl, ®Addr[j], ®Value[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, ®Addr[j], ®GetValue, 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:0001I2C Read,index:0, regAddr:301a, regValue:10d8I2C write,index:1, regAddr:301a, regValue:10d8I2C Read,index:1, regAddr:301a, regValue:10d8I2C write,index:2, regAddr:3088, regValue:8000I2C Read,index:2, regAddr:3088, regValue:8000I2C write,index:3, regAddr:3086, regValue:0225I2C Read,index:3, regAddr:3086, regValue:5000I2C write,index:4, regAddr:3086, regValue:5050I2C Read,index:4, regAddr:3086, regValue:2d00I2C write,index:5, regAddr:3086, regValue:2d26I2C Read,index:5, regAddr:3086, regValue:0800I2C write,index:6, regAddr:3086, regValue:0828I2C Read,index:6, regAddr:3086, regValue:0d00I2C write,index:7, regAddr:3086, regValue:0d17I2C Read,index:7, regAddr:3086, regValue:0900I2C write,index:8, regAddr:3086, regValue:0926I2C Read,index:8, regAddr:3086, regValue:0000I2C write,index:9, regAddr:3086, regValue:0028I2C Read,index:9, regAddr:3086, regValue:0500I2C write,index:10, regAddr:3086, regValue:0526I2C Read,index:10, regAddr:3086, regValue:a700
写入和读出的不一致,麻烦帮忙看看,谢谢,是不是api调用错误还是i2c的frequency有问题 ?
Eason Wang:
回复 lious liu:
我不清楚你的OV到AR 传感器这边硬件有什么改动? I2C是否有做上拉处理?
I2C的波形是否OK你应该也可以通过示波器大致的测量出来的。如果要定位是哪个I2C有问题,也可把其他板子的I2C飞过来用。
或者你也可以I2C上什么都不配,去看看Device ID之类的状态寄存器看看。这样确认一下I2C的读至少没问题吧。一步一步来。
Sensor本身数字部分你也可以看看是否正常的跑起来了。很多sensor都有缺省的配置比如你解复位之后它就能按照某个既定分辨率输出等等。
desheng li1:
你好 请问你修改成功了吗?
我想把OV2715改成MT9P031 编译始终显示链接错误
collect2: ld returned 1 exit status
请问你碰到过这个问题吗?