解决OV系列摄像头寄存器读数据无法收到的问题

最近工作中接了一款OV7725的sensor,由于平台已经接过很多的家的sensor也就没有太当回事。问题出现的很奇怪,再看了register map后基本确定了要尽心register  R/W测试的三个地址也就是0x00  gain增益寄存器   0xa  0xb 两个版本号的寄存器。运行程序之后在reg里没有发现的应该返回的数据 ,用逻辑分析仪看了下波形就是在read发出后sensor返回了device  ID之后没有紧接着返回数据而是将总线挂起!!  然后挂载其他例如aptina   130   139 sony的138 等都可以正确的得到数据??? 困惑之后就对比了下波形发现前面发出的波形也一致,也没有发现不符合IIC协议的,但是一个细节还是注意到,就在read的过程中write  slave address之后一般为stop 后start,而我是做了一个restart的操作代替了,这样做在多主机的IIC  bus中是有好处的  ,可以不释放总线免得被抢走控制权。随后就想是不是这个导致的呢,将restart  改为stop   start  之后运行程序果然得到了返回的数据。问题是确定了,就想不明白这样怎么会产生问题呢 ,IIC是支持的啊。后面看了下7725的手册 发现了问题。OV使用的不是标准的IIC协议控制寄存器的读写,用的事SCCB协议,算是一个精简的IIC协议,而这个协议是部分兼容IIC的。连个区别:1.不支持restart   也就是导致我无法读出的罪魁了,stop后必须发送start 否则不返回数据。2. 不知处多字节读写  对于sensor来说这种情况不多  。所以对于自己熟悉的东西更要谨慎细心,稍不注意就会掉进陷阱。后面附件添加了sccb的协议供参考。

本文出自 “风雨如晦鸡鸣不已” 博客,谢绝转载!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值