某verilog菜狗最近开始研究摄像头了,查了很多资料说的都太高级了,这里记录一下一些非常简单的傻瓜都能看懂的ov5640调整分辨率的方式
在你的代码中找到如下字段(长得差不多就行),主要是看后面的24位数据。
在这24位数据里面,其中前16位为你需要调整的参数的地址(不同参数的具体地址可以通过查询ov5640的datasheet得到,在这里我们只列出需要调整的参数地址),后8位为你需要调整的数值。
10'd223: lut_data <= {8'h78 , 24'h38080A};//水平宽度高字节[11:8],默认值为0A
10'd224: lut_data <= {8'h78 , 24'h380920};//水平宽度低字节[7:0],默认值为20
10'd225: lut_data <= {8'h78 , 24'h380a07};//垂直高度高字节[10:8],默认值为07
10'd226: lut_data <= {8'h78 , 24'h380b98};//垂直高度低字节[7:0],默认值为98
如上所示,0x3808,0x3809,0x380a,0x380b分别为需要的视频分辨率的水平和垂直高低字节。
ov5640的分辨率默认值为QSXGA,即2592x1944
(注1:这里垂直高度比水平宽度的高位字节要少一位,大概是因为一般需求的都是横屏吧,注意调整数值的时候不要超过上限)
(注2:ov5640的这四个参数的默认值为该硬件支持的最大分辨率,只要调整的时候不要超过默认值就行。)
举个例子,假设现在我们需要调整ov5640的分辨率至640x480,在某些例程里都会有这个调整,但是很多人可能跟我一样一开始看着那一堆十六进制数压根不知道到底是怎么搞的。
事实上,只需要将所需要的分辨率从十进制转换为十六进制的数后,再根据高低位分别填入上面的四个参数对应的数值中就行了。
eg:
十进制 |
十六进制 |
640 |
0280 |
480 |
01e0 |
然后我们将上面的代码每个参数的后两位的0A改成02,20改成80,07改成01,98改成e0:
10'd223: lut_data <= {8'h78 , 24'h380802};//水平宽度高字节[11:8],默认值为0A
10'd224: lut_data <= {8'h78 , 24'h380980};//水平宽度低字节[7:0],默认值为20
10'd225: lut_data <= {8'h78 , 24'h380a01};//垂直高度高字节[10:8],默认值为07
10'd226: lut_data <= {8'h78 , 24'h380be0};//垂直高度低字节[7:0],默认值为98
即将原来的0A20x0798(2592x1944)变为0280x01e0(640x480)
其他的分辨率也可以按照这个方式修改,只要不超出硬件的最大分辨率就行。
现在你已经学会了如何修改ov5640的分辨率大小了,快去写一个在lcd板上显示ov5640图像的工程吧(?)文章来源:https://www.toymoban.com/news/detail-457296.html
下附ov5640的datasheet里面的原理图(要说还是datasheet好使,查了半天没搞懂的问题翻了下datasheet十分钟就解决了)文章来源地址https://www.toymoban.com/news/detail-457296.html
到了这里,关于ov5640分辨率调整傻瓜攻略【verilog版】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!