• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

ov5640分辨率调整傻瓜攻略verilog版

武飞扬头像
泽言_
帮助1

verilog菜狗最近开始研究摄像头了,查了很多资料说的都太高级了,这里记录一下一些非常简单的傻瓜都能看懂的ov5640调整分辨率的方式

在你的代码中找到如下字段(长得差不多就行),主要是看后面的24位数据。

在这24位数据里面,其中前16位为你需要调整的参数的地址(不同参数的具体地址可以通过查询ov5640的datasheet得到,在这里我们只列出需要调整的参数地址),后8位为你需要调整的数值。

  1.  
    10'd223: lut_data <= {8'h78 , 24'h38080A};//水平宽度高字节[11:8],默认值为0A
  2.  
    10'd224: lut_data <= {8'h78 , 24'h380920};//水平宽度低字节[7:0],默认值为20
  3.  
    10'd225: lut_data <= {8'h78 , 24'h380a07};//垂直高度高字节[10:8],默认值为07
  4.  
    10'd226: lut_data <= {8'h78 , 24'h380b98};//垂直高度低字节[7:0],默认值为98

如上所示,0x38080x38090x380a0x380b分别为需要的视频分辨率的水平和垂直高低字节。

ov5640的分辨率默认值为QSXGA,即2592x1944

(注1:这里垂直高度比水平宽度的高位字节要少一位,大概是因为一般需求的都是横屏吧,注意调整数值的时候不要超过上限)

(注2:ov5640的这四个参数的默认值为该硬件支持的最大分辨率,只要调整的时候不要超过默认值就行。)

举个例子,假设现在我们需要调整ov5640的分辨率至640x480,在某些例程里都会有这个调整,但是很多人可能跟我一样一开始看着那一堆十六进制数压根不知道到底是怎么搞的。

事实上,只需要将所需要的分辨率从十进制转换为十六进制的数后,再根据高低位分别填入上面的四个参数对应的数值中就行了。

eg:

十进制

十六进制

640

0280

480

01e0

然后我们将上面的代码每个参数的后两位的0A改成0220改成8007改成0198改成e0

  1.  
    10'd223: lut_data <= {8'h78 , 24'h380802};//水平宽度高字节[11:8],默认值为0A
  2.  
    10'd224: lut_data <= {8'h78 , 24'h380980};//水平宽度低字节[7:0],默认值为20
  3.  
    10'd225: lut_data <= {8'h78 , 24'h380a01};//垂直高度高字节[10:8],默认值为07
  4.  
    10'd226: lut_data <= {8'h78 , 24'h380be0};//垂直高度低字节[7:0],默认值为98

即将原来的0A20x0798(2592x1944)变为0280x01e0(640x480)

其他的分辨率也可以按照这个方式修改,只要不超出硬件的最大分辨率就行。

现在你已经学会了如何修改ov5640的分辨率大小了,快去写一个在lcd板上显示ov5640图像的工程吧(?)

下附ov5640的datasheet里面的原理图(要说还是datasheet好使,查了半天没搞懂的问题翻了下datasheet十分钟就解决了)

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfakgi
系列文章
更多 icon
同类精品
更多 icon
继续加载