找回密码
 注册
搜索
查看: 4716|回复: 31

[讨论] OV2640 读值的问题..

[复制链接]
发表于 2007-5-2 18:13:53 | 显示全部楼层 |阅读模式
请教各位大大,小弟依据 OV2640 的 datasheet设定  Table12 如下:

Table12:
    0xF8 = 0x01
    0xFF = 0xF7
   
根据 datasheet 的说法,只要设定这两个缓存器,即可指到 Table13(动作),
并可以程序取得对应的资料,如 ProdID(0x0A), 但是我总是无法正确
得到该值 (0x26),想请问是否还需要在 Table12 初始相关的
Register 程序,亦或是硬件线路有问题,烦请各位先进给予小弟指教,谢谢!!
发表于 2007-5-8 08:54:50 | 显示全部楼层
上电RESET后,只需要设置0xff=0x01,读取PID只需要读取寄存器0xA,0xB就行了,读取MID只需要读取0x1c,0x1d.
点评回复

使用道具 举报

 楼主| 发表于 2007-5-9 16:14:52 | 显示全部楼层
请问zzjloveit 大大如何在上电后 Reset OV2640 , 是否须要用程序 pull down to low ,还是可以用
硬件直接拉 low , 亦或是有其它的方式呢? 谢谢 !!
点评回复

使用道具 举报

发表于 2007-5-10 08:55:06 | 显示全部楼层
都行吧。我这边reset接的是gpio,然后软件置低的。
点评回复

使用道具 举报

 楼主| 发表于 2007-5-11 09:11:48 | 显示全部楼层
感谢 zzjloveit 大大的提示, 我已可正确将ProdID 的值读出,而问题出在 2640
在初始 I2C 时, 必须将 #Reset 信号由 high 拉至 low 一次, 并且将 #PWDN
维持在 low 信号, 将可使得 2640 得到正确的 camera 信号而启动, 不过正确的
电压(VDD= 1.3V) 亦是不可或缺的, 再次谢谢zzjloveit 大大的指教 !! [em01]
点评回复

使用道具 举报

 楼主| 发表于 2007-5-18 12:09:42 | 显示全部楼层
再请问大大一个问题, 为什幺我在切换 Table 13 (0xFF = 1)后,想
再切回 Table 12 (0xFF = 0)时,却发生无法切换的问题,看起来像是那里未设定
好,还是需要做时间的 delay (没有作用),希望您能给小弟指教,谢谢!! [em13]
点评回复

使用道具 举报

发表于 2007-5-18 13:44:06 | 显示全部楼层
我也是菜鸟,你怎么知道0xff=0无法切换呢?你i2c的速度是多少Hz呢?我这边除了寄存器reset的时候需要延时一回回儿,其他不需要什么延时的。
点评回复

使用道具 举报

 楼主| 发表于 2007-5-18 15:13:58 | 显示全部楼层
因为我用 debug message 检视下列缓存器的值

Debug Message as below..

========================================================
"Register Settings Sequence"
========================================================
(Step 1)
Soft Reset..

Camera Reg[0xFF] = 0x01, was programmed 0x01     //   -- 设定OK
Camera Reg[0x12] = 0x00, was programmed 0x80     //   -- 设定OK   

(Step 2)
Delay for 1 ms..     //程序里从 Sleep(1)  ~  Sleep(100),皆试过..

(Step 3)
Start to config OV2640 Register Sequence..

Line 0 -- Reg[0xFF] = 0x01, was programmed 0x00   //Force program reg[0xFF] to 0x00 ( wish to switch to Table 12)
Line 1 -- Reg[0x2C] = 0x00, was programmed 0xFF     
Line 2 -- Reg[0x2E] = 0x00, was programmed 0xDF   
Line 3 -- Reg[0xFF] = 0x01, was programmed 0x01   //reg[0xFF] should be changed to 0x00 after Line 0,but it still hold to 0x01, it will do error settings....
Line 4 -- Reg[0x3C] = 0x37, was programmed 0x32
.
”以下略过”………
PS: // 后的文字为说明用

在 Line 0 把 Reg[0xFF] 由 0x01 指定为 0x00, 然后再依序设定 Line 1 及 Line 2, OK,现在来到 Line 3 可以发现 Reg[0xFF] 还是等于 0x01,显然在设定 Line 0 时,并未将 Reg[0xFF] 写入 '0x00' 之值, 因此可以断定接下来的 Reg[0x2C], 及 Reg[0x2E] 的动作是错误的(因为即使写入不正确的 Table ,亦无法发挥效用),否则依 OV 的设定值是应该有影像出来的,另外大大您说 I2C 的速度设定为何,依源码得知 default值为 78KHz,不知大大的设定值为何,是否大大还有其它看法可以解决小弟的问题,谢谢!!
点评回复

使用道具 举报

发表于 2007-5-18 16:04:00 | 显示全部楼层
我这边i2c速度是100KHz,你的那个78K应该也不会有什么问题。ov2640是有一些寄存器读出值跟写入值不一样的。但是你贴出来的这些寄存器设置应该读出值等于写入值的。reset引脚由高置低后,你有没有再hold高呢?pwdn引脚需要一直置低的。
点评回复

使用道具 举报

 楼主| 发表于 2007-5-21 16:47:59 | 显示全部楼层
谢谢大大,我己经可以正确写入 Register 值,但是我发现
VSync 及 HSync 的频率很低(CIF -- 320 X 240),大概只有
XHz ~ X00Hz ,不知大大您的 Freq 为何,需要调整那些
Register ,才能正确将影像显现出来,谢谢!! [em10]
点评回复

使用道具 举报

 楼主| 发表于 2007-5-21 16:57:38 | 显示全部楼层
//谢谢大大,我己经可以正确写入 Register 值,但是我发现
//VSync 及 HSync 的频率很低(CIF -- 320 X 240),大概只有
//XHz ~ X00Hz ,不知大大您的 Freq 为何,需要调整那些 Register
//,才能正确将影像显现出来,谢谢!!

对了大大忘了告诉您,主频为 MClock = 12MHz , 谢谢!! [em01]
点评回复

使用道具 举报

发表于 2007-5-21 17:45:37 | 显示全部楼层
对于ov2640CIF不是400*296吗?QVGA才是320*240的阿。Mclk大于4M还是多少M的就行了,你的12M是可以的。Vsync就是出来的祯率啊,差不多是几Hz或者几十Hz的样子。Hsync在QVGA,CIF分辨率下不连续的,应该差不多是KHz的量级。
点评回复

使用道具 举报

 楼主| 发表于 2007-5-22 16:34:23 | 显示全部楼层
感谢大大的说明,由于是第一次做有关 Camera 的项目,因此对一些应该
注意的事项并不清楚,只能先猜测 datasheet 中的设定值的意思,再慢慢
调整,此不过试了很多次,还是无法显示任何的图像,不过能否请大大检视
一下小弟的波形,看是否有问题,还有可能需要更改那里 Register 设定,
才能正确的把影像显示出来,谢谢 !!
[upload=jpg]UploadFile/2007-5/07522@52RD_OV2640 - Hsync,Vsync wave.jpg[/upload]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
点评回复

使用道具 举报

 楼主| 发表于 2007-5-22 17:35:44 | 显示全部楼层
对不起大大,我再重传一次图形,谢谢..[upload=jpg]UploadFile/2007-5/07522@52RD_OV2640 - Hsync-Vsync wave.jpg[/upload]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
点评回复

使用道具 举报

发表于 2007-5-23 08:57:43 | 显示全部楼层
你可以向OV的技术支持要他的一套寄存器设置,你的这个波形看起来还可以啊,Vsync、Hsync差不多就是这个样子。OV2640其实只支持SVGA,UXGA,CIF这3个分辨率,其他的都是scale down的,都是某个分辨率下面取x*x的窗口输出,所以Hsync一般不连续。
点评回复

使用道具 举报

 楼主| 发表于 2007-5-23 09:37:23 | 显示全部楼层
谢谢大大的说明,不过小弟真正的问题应该如下:

1. 我即便使用了 OV 的缓存器设定值来作设定的,但是
   始终无法正确得到影像资料

2. 如果 OV 给我的设定值为 CIF mode,那我应该要如何
   scale down 到适合的窗口 (windowing - > 320 * 240)
   并把图秀出来,感觉上 Wince 的 OS 有因为 2640 开始传
   送资料而动作变慢(lag),应该是有送出图资,只是可能是
   master device 与之不匹配而看不见(这就是我最大的问题),
   所以才会请教大大是如何调整相关 Register 之值(或 master
   device),使之能正确对应到 display 的窗口显示出来
   
对不起问了许多问题,烦请大大能给予小弟一些其它的建议,感谢您!! [em01]
点评回复

使用道具 举报

发表于 2007-5-23 10:21:04 | 显示全部楼层
你用的是什么CPU?我的是pxa270.你看看是不是上层的驱动问题,就是与OS打交道的那边驱动还需要修改呢?还有在显示的时候调制信息最好少,或者没有,调制信息多了之后会影响同步.设置窗口就是0xff=0的时候,c0,c1,50,51,52,53,54,55,57,5a,5b,5c寄存器的设置。
点评回复

使用道具 举报

 楼主| 发表于 2007-5-23 11:49:39 | 显示全部楼层
我的 CPU 亦为 PXA270,
Master Device (VGA Controller)为 Nvidia 4800,
而 2640 的窗口的相关缓存器设定值如下:

0xc0 => 0xc8,
0xc1 => 0x96,
0x50 => 0x89,
0x51 => 0x90,
0x52 => 0x2c,
0x53 => 0x00,
0x54 => 0x00,
0x55 => 0x88,
0x57 => 0x00,
0x5a => 0x50,
0x5b => 0x3C,
0x5c => 0x00,
......

PS: 如何修改 Reg以调整 Hsync 的宽度,期符合小弟的需求呢?

谢谢 zzjloveit 大大,不知您有何建议呢?
点评回复

使用道具 举报

发表于 2007-5-23 12:33:49 | 显示全部楼层
你上面这个寄存器设置是UXGA downscale 到QVGA分辨率啊,你初始化的时候是用UXGA初始化的吗?
我是直接连接OV2640的pxa270的quick capture接口上的,没有通过其他的device.
点评回复

使用道具 举报

 楼主| 发表于 2007-5-23 13:08:32 | 显示全部楼层
大大果然厉害,居然从小弟上述的设定值就知道是从 UXGA
scale down  至 QVGA,这就是为什么您看到我之前说的
320 * 240 (MODE),就如同大大所说的 2640 并不包含
此一 MODE (QVGA),所以 OV 就依照我的想法而去
调一个 SCALE MODE 的窗口值,不过可能重点就在于您
所说的 "从 UXGA down scale 至 QVGA 分辨率" ,我并
不清楚从何可以得知,是否代表着如果由最小分辨率
(CIF 408 x 304) 直接 scale down 到我所预期的窗口
才能正确显示呢? 又该如何调整呢? 谢谢大大的分析!!
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-1-24 16:28 , Processed in 0.051680 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表