谁做过OV7670到VGA的显示 ?
OV7670是30fps,而vga是60fps,如何处理显示问题,需要去隔行吗 ?直接显示是否可行 ? 得缓存吧 坛里貌似有人做过,搜一下 需要一个足够大的RAM即可,其余的就是把时序控制好,控制好的话连FIFO都不需要的。其余的就是稍微配置一下OV7670的寄存器就可以了。 想用vga显示,看了下资料 vga 640*480是25mhz的工作频率,而且是60fps,而OV7670的工作频率是24mhz,是30fps,如果是写入sdram 如何同步 ? 够缓存应该可以 哦,请教,你是怎么做的,用coms的 vsync 去同步vga,还用用vga的vsync 去同步cmos ? atom100 发表于 2014-9-16 07:20哦,请教,你是怎么做的,用coms的 vsync 去同步vga,还用用vga的vsync 去同步cmos ? ...
用coms的时序写入。用vga的时序写出。coms是八根线传输,时钟为50M。vga为16根线并行输出。频率为25M。控制好时序,每两个时钟当摄像头写满16个数据的时候把VGA数据读出来就行了。问题是你的sdram时序上的开销能不能搞得定。其次就是摄像头的寄存器配置稍微有点麻烦 看你板子用什么做缓存,
找crazybingo的板子,现成的例程。
ov7670+sdram+vga输出。。。。。
看ov7670应该是24mhz的频率,正好是640*480 ?
我看crazybingo 板子的代码是 给ov7670的 频率是 25mzh,这也行? cxhy 发表于 2014-9-16 07:38
用coms的时序写入。用vga的时序写出。coms是八根线传输,时钟为50M。vga为16根线并行输出。频率为25M。控 ...
我看ov7670是24M 或 48m,正好是 行*列的 扫描数,如用25m和50m 多出来的 周期 岂不是读取完一帧后又去多读取 了一部分数据? atom100 发表于 2014-9-16 20:27
我看ov7670是24M 或 48m,正好是 行*列的 扫描数,如用25m和50m 多出来的 周期 岂不是读取完一帧后又去 ...
这个就看你怎么控制了啊,我给而且摄像头有一个输入时钟的啊。就是你给摄像头的工作时钟,我设置的是50M,我觉得这样控制简单一点吧,别人的不清楚。 哦,ov7670的最高时钟频率是48mhz,如果使用50mhz,长期共组是否会影响寿命 atom100 发表于 2014-9-17 07:44
哦,ov7670的最高时钟频率是48mhz,如果使用50mhz,长期共组是否会影响寿命
这个没注意到。不过我的摄像头现在看起来好好的。貌似没有什么问题 本帖最后由 atom100 于 2014-9-18 06:14 编辑
再请问下 你的vga用的是25Mhz?
ov7670 如果用50mhz的 时钟,一秒产生多少帧的图像 ?我看那个手册写的是最高频率是48mhz,ov7670就是用50mhz的频率 应该一秒也只产生30多帧的图像吧? 即30*(1+48/50帧的图像),
那你i为何不给ov7670使用25mhz的时钟?
ov7670使用24mhz和48mhz的 一秒都是产生640*480的图像,但频率不同 的情况下,效果有什么不同呢 ?
无论vga使用的频率是多少,25mhz,50mhz,还是65mhz等其他频率,按vga的规定, 一秒都应该读取60帧的图像吧?如果用25mhz,是640*480 ,60帧/秒, 你是隔一个读一个,即30帧 ,差不多能和ov7670对上?
atom100 发表于 2014-9-18 05:47
再请问下 你的vga用的是25Mhz?
ov7670 如果用50mhz的 时钟,一秒产生多少帧的图像 ?我看那个手册写的是 ...
楼主的意思我大致明白了,我也不清楚楼主的代码写了多少了。摄像头的工作频率和VGA屏的工作频率都是由我设定的,至于为什么要用50M的,那是因为我自己的最小系统就是自带的50M晶振,我没有必要专门换成48M的自找麻烦。另外,VGA的输入频率也是我给的,之所以设置成OV7670工作频率的两倍是因为当我使用VGA显示的时候每一个像素需要占用掉16位的位宽(我使用的是RGB565格式,所以有16位)。但是摄像头采集到数据却是8位的数据输出,所以我需要把摄像头采集到的数据拼接成一个16位宽的数据传输出去。所以我必须提高摄像头的工作频率!我觉得关键不在于摄像头每秒能够采集到多少,我更关心的是摄像头能传出去多少东西!只有在每一个VGA的显示周期里面摄像头必须连续送来两次数据才能正常显示。
至于楼主说的“无论vga使用的频率是多少,25mhz,50mhz,还是65mhz等其他频率,按vga的规定, 一秒都应该读取60帧的图像吧?“我觉得不应该是这样的,楼主试一试再看看我说的对不对。 楼主参考一下这个帖子,http://www.amobbs.com/thread-5573537-1-1.html 本帖最后由 atom100 于 2014-9-19 22:06 编辑
我的vga显示显示 color bar没问题,
但是 接受显示ov7670的图像,一直是乱屏,屏幕 从左到右分成 5条,混乱的重影显示,但是 对光照明暗 有反应,
应该是数据 错位了,
现在我给ov7670是25mhz,vga也是25mhz,通过一个sdram的两个bank来乒乓操作
但我总觉得ov7670每秒出来的图像帧数 和 vga要显示的帧数 不一致,哪怕差一点,无论如何也乒乓不了啊 ? ov7670出的图像个数和vga要显示的图像个数 只要差一点,而中间没有同步的话,总会一直循环错位的,怎么能显示出正常的图像呢?
但是网上 crazybing 哥的代码是用了乒乓操作的,
我用类似的代码将ov7670的 图像显示到 vga上,就是重影
你用sdram没有,是否使用了两个bank的乒乓操作 ?
是不是 ov7670可以配置为 24到 48 之间的任何一个频率输入?
比如25mhz,此时 也是每秒 输出30帧? cxhy 发表于 2014-9-19 13:44
楼主的意思我大致明白了,我也不清楚楼主的代码写了多少了。摄像头的工作频率和VGA屏的工作频率都是由我 ...
请问你用50mhz驱动ov7670,用同源的25mhz驱动vga,是否使用了sdram做缓存?
二者如何同步的?
我搞好几天了,用ov7670到sdram 再到vga,vga显示 都是花瓶,但对光线的明暗有反应 本帖最后由 atom100 于 2014-9-19 22:03 编辑
看下 这个表
如果你的11寄存器设置为80的话,那么 内部时钟等于外部时钟,我想ov7076输出帧的个数 应该是以时钟的个数 为依据输出的,而不是固定的 30帧/秒(30帧/秒是在特定的时钟输入条件下才实现的,比如输入24mhz,并且寄存器11设置为80的条件下),如果你用的是50mhz时钟输入的话,我想一秒应该输出60多帧图像,正好差不多和 vga 一秒内显示60帧图像相近,所以 你的显示很稳定,没有花屏?? atom100 发表于 2014-9-19 20:06
我的vga显示显示 color bar没问题,
但是 接受显示ov7670的图像,一直是乱屏,屏幕 从左到右分成 5条,混乱 ...
我用的是SRAM,自己写的SDRAM不敢用,,,好多bug。直接用SRAM简单一点,只是存图像而已。不需要那么大的空间。 atom100 发表于 2014-9-19 20:08
是不是 ov7670可以配置为 24到 48 之间的任何一个频率输入?
比如25mhz,此时 也是每秒 输出30帧? ...
摄像头的频率是随便配给的,我的理解是由于频率的不同会影响到从摄像头读出数据的频率,但是未必会影响到摄像头的采集速率(我个人认为的,我自己没有验证过)。 atom100 发表于 2014-9-19 22:01
看下 这个表
大致来说就是这样的。 本帖最后由 atom100 于 2014-9-21 22:51 编辑
cxhy 发表于 2014-9-20 11:45
大致来说就是这样的。
这个是ov7670的VGA输出时序图,你 研究这张图了吗?
vga的显示 一帧 应该是480行*640列吧 ?
但这张图的 的一行数据 是有 640列 ,输出应该是 640个 8位的数据吧?而16位数据才组成一个像素的,这样 一个HSYNC的周期输出的数据 只有320个啊 ?
需要两个 HSYNC的周期 才能 输出640个16位的数据吧 ?
VSYNC 的周期是 1/60秒,这样一秒可以送出 30帧数据,
这样需要两个VSYNC的周期 才能送出 一帧480行*640列 的 16位的RGB565数据 数据? 本帖最后由 atom100 于 2014-9-22 00:58 编辑
如果 设置为图中所示 RGB模式,ov7670的输入时钟 应该必须是48mhz吧?这样按OV7670的输出模式,即两个pclk时钟输出一个16位的像素,才能等价于使用24mhz时钟情况下1个pclk 输出一个16位像素数据
你是不是设置 使用50mhz时钟输入,同时地址为12的寄存器设置为了 0x04? 本帖最后由 atom100 于 2014-9-22 08:00 编辑
请教,ov7670的vga输出分辨率是多少,我怎么看着像是480*320分辨率呢?而不是480*640啊 ??
这个和 ov7670的说明书,前面所写的 640 x 480 pixels are active (307,200 pixels)不一致 ?
谁知道,求教 atom100 发表于 2014-9-21 22:45
这个是ov7670的VGA输出时序图,你 研究这张图了吗?
vga的显示 一帧 应该是480行*640列吧 ?
但这张图 ...
楼主,,,问题木有你想象的那么复杂,你看看这个图片。楼主看看这份资料吧。应该会有帮助的。 atom100 发表于 2014-9-22 07:57
请教,ov7670的vga输出分辨率是多少,我怎么看着像是480*320分辨率呢?而不是480*640啊 ??
这个和 ov7 ...
看那份资料就好了,有具体的代码的。
页:
[1]