在你的代码中找到如下字段(长得差不多就行),主要是看后面的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,即2592×1944
(注1:这里垂直高度比水平宽度的高位字节要少一位,大概是因为一般需求的都是横屏吧,注意调整数值的时候不要超过上限)
(注2:ov5640的这四个参数的默认值为该硬件支持的最大分辨率,只要调整的时候不要超过默认值就行。)
举个例子,假设现在我们需要调整ov5640的分辨率至640×480,在某些例程里都会有这个调整,但是很多人可能跟我一样一开始看着那一堆十六进制数压根不知道到底是怎么搞的。
事实上,只需要将所需要的分辨率从十进制转换为十六进制的数后,再根据高低位分别填入上面的四个参数对应的数值中就行了。
eg:
然后我们将上面的代码每个参数的后两位的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(2592×1944)变为0280x01e0(640×480)
其他的分辨率也可以按照这个方式修改,只要不超出硬件的最大分辨率就行。
现在你已经学会了如何修改ov5640的分辨率大小了,快去写一个在lcd板上显示ov5640图像的工程吧(?)
下附ov5640的datasheet里面的原理图(要说还是datasheet好使,查了半天没搞懂的问题翻了下datasheet十分钟就解决了)
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_43409273/article/details/129184489
没有回复内容