打印

请问如何用dm6437对OV2710摄像头进行寄存器读写

[复制链接]
1235|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Icarus113|  楼主 | 2019-10-12 16:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如题,OV2710使用的是SCCB协议,与I2C有区别。我直接将dm6437的I2C的SDA和SCL连接到摄像头的SIOD和SIOC上,用标准的I2C读写函数对摄像头进行寄存器读写,不能成功。网上查说要用GPIO模拟SCCB,没有头绪。请问有大神有代码或者可以讲解一下吗?非常感谢!

使用特权

评论回复

相关帖子

沙发
zhangmangui| | 2019-10-12 23:13 | 只看该作者
在SCCB协议中定义的读写操作与I2C也是一样的,只是换了一种说法。它定义了两种写操作,即三步写操作和两步写操作。三步写操作可向从设备的一个目的寄存器中写入数据,见图 467。在三步写操作中,第一阶段发送从设备的ID地址+W标志(等于I2C的设备地址:7位设备地址+读写方向标志),第二阶段发送从设备目标寄存器的16位地址,第三阶段发送要写入寄存器的8位数据。图中的"X"数据位可写入1或0,对通讯无影响。
图 467 SCCB的三步写操作
而两步写操作没有第三阶段,即只向从器件传输了设备ID+W标志和目的寄存器的地址,见图 468。两步写操作是用来配合后面的读寄存器数据操作的,它与读操作一起使用,实现I2C的复合过程。
图 468 SCCB的两步写操作
两步读操作,它用于读取从设备目的寄存器中的数据,见图 469。在第一阶段中发送从设备的设备ID+R标志(设备地址+读方向标志)和自由位,在第二阶段中读取寄存器中的8位数据和写NA 位(非应答信号)。由于两步读操作没有确定目的寄存器的地址,所以在读操作前,必需有一个两步写操作,以提供读操作中的寄存器地址。
图 469 SCCB的两步读操作

使用特权

评论回复
板凳
zhangmangui| | 2019-10-12 23:14 | 只看该作者
我是拿FPGA模拟接口操作过OV5640   类似IIC的操作   配置官方提供的好多寄存器

使用特权

评论回复
地板
Icarus113|  楼主 | 2019-10-14 09:02 | 只看该作者
本帖最后由 Icarus113 于 2019-10-14 10:27 编辑
zhangmangui 发表于 2019-10-12 23:13
在SCCB协议中定义的读写操作与I2C也是一样的,只是换了一种说法。它定义了两种写操作,即三步写操作和两步 ...

感谢回答!有两个问题:1. 请问在代码里,是需要用GPIO管脚来模拟这个SCCB协议的过程来与OV2710通讯吗?
2. 之前硬件连线是dsp的I2C接到OV2710的SIOD和SIOC上,如果用GPIO模拟SCCB的话,是不是硬件上要用两个GPIO管脚接到OV2710的SIOD和SIOC上?
麻烦回答一下这两个问题,谢谢!

使用特权

评论回复
5
zhangmangui| | 2019-10-14 21:33 | 只看该作者
Icarus113 发表于 2019-10-14 09:02
感谢回答!有两个问题:1. 请问在代码里,是需要用GPIO管脚来模拟这个SCCB协议的过程来与OV2710通讯吗?
2 ...

1.IO口模拟也行  一般一种模式配置好之后就不在变了  用IIC我觉得也行吧
2.你先尝试用IIC控制看看  控制过程中用示波器看看时序 对比一下
如果用IO口模拟  就不需要上拉  只需要电平匹配就好

使用特权

评论回复
6
zhangmangui| | 2019-10-14 21:35 | 只看该作者
Icarus113 发表于 2019-10-14 09:02
感谢回答!有两个问题:1. 请问在代码里,是需要用GPIO管脚来模拟这个SCCB协议的过程来与OV2710通讯吗?
2 ...

1.IO口模拟也行  一般一种模式配置好之后就不在变了  用IIC我觉得也行吧
2.你先尝试用IIC控制看看  控制过程中用示波器看看时序 对比一下
如果用IO口模拟  就不需要上拉  只需要电平匹配就好

使用特权

评论回复
7
Icarus113|  楼主 | 2019-10-16 10:43 | 只看该作者
zhangmangui 发表于 2019-10-14 21:35
1.IO口模拟也行  一般一种模式配置好之后就不在变了  用IIC我觉得也行吧
2.你先尝试用IIC控制看看  控制 ...

感谢感谢。现在我确定我的sccb写入正确,并且可以正确读出寄存器中写入的值。我用的是ov2710卖家发的寄存器初始化配置。可是现在用这个配置,屏幕只能卡死在一张花屏图上,没有实时图像显示。这是因为摄像头驱动寄存器配置的问题吗?

使用特权

评论回复
8
zhangmangui| | 2019-10-17 21:43 | 只看该作者
Icarus113 发表于 2019-10-16 10:43
感谢感谢。现在我确定我的sccb写入正确,并且可以正确读出寄存器中写入的值。我用的是ov2710卖家发的寄存 ...

花屏肯定是时序没对   同步信号来了接收数据需要处理好
我记得他们有个寄存器可以配置为测试模式  输出数据是有规律的
显示出来是色条

使用特权

评论回复
9
Icarus113|  楼主 | 2019-10-18 09:01 | 只看该作者
本帖最后由 Icarus113 于 2019-10-18 10:48 编辑
zhangmangui 发表于 2019-10-17 21:43
花屏肯定是时序没对   同步信号来了接收数据需要处理好
我记得他们有个寄存器可以配置为测试模式  输出 ...

谢谢。之前是硬件电路的问题。现在可以有实时图像显示了。
但现在摄像头对准我的手时,如果处在较暗的环境中,屏幕显示正常。可是当处在比较明亮的环境中,图像会特别快的向上循环滚动。我感觉像是在亮的区域中,每一帧都有几行是缺失了的,所以会造成图像向上滚动。但不明白为什么只有在亮的环境中会出现图像行的缺失。请问你有思路吗?

使用特权

评论回复
10
zhangmangui| | 2019-10-18 21:58 | 只看该作者
Icarus113 发表于 2019-10-18 09:01
谢谢。之前是硬件电路的问题。现在可以有实时图像显示了。
但现在摄像头对准我的手时,如果处在较暗的环境 ...

我好想也遇到过   向上翻图像好像是行或场同步问题  

使用特权

评论回复
11
Icarus113|  楼主 | 2019-10-21 14:46 | 只看该作者
zhangmangui 发表于 2019-10-18 21:58
我好想也遇到过   向上翻图像好像是行或场同步问题

谢谢。我想问一下,在dm6437芯片里,previewer这一步中,做了rgb格式到YCbCr格式的转变,我想看一看rgb的输出和YCbCr的输出。可是我只能设置转换矩阵对应的寄存器,手册中没有存数据值的对应寄存器。我该怎么检查RGB和YCbCr的格式是否正确呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

20

帖子

0

粉丝