OV5640(2):配置寄存器

谁都会走 提交于 2020-02-08 12:58:53

  上电之后要做的是通过 SCCB 协议对摄像头的寄存器进行配置,SCCB 协议在之前的博客中已经详细介绍过,其写和 IIC 完全相同,读和 IIC 相比多了个 STOP 信号。本篇博客不讲 SCCB,而是关注寄存器配置的要点。

一、图像窗口

  由这段英文可知,OV5640使用寄存器 0x3800 ~ 0x3814 进行窗口设置。物理像素尺寸(Physical pixel size)是整个传感器的全部尺寸大小。ISP 输入尺寸是从像素阵列中读出来的全部尺寸。通常,ISP 的输入尺寸(input size)越大,图像的帧速率(frame rate)就越小。数据的输出尺寸(data out size)就是 OV5640 的图像输出尺寸了。图像尺寸和 ISP 的输入尺寸有关,也和当和 x_offset ,y_offset 这两个有关。

这些寄存器功能如下表所示:

  0x3808 ~ 0x380B 用于设置输出的窗口大小,可根据需要进行修改。而其他寄存器大多时候使用预设值都没什么问题。

 

二、图像输出格式

  OV5640支持多种图像数据格式,而 VGA 多使用 RGB565 格式,因此寄存器这边需要配置成 RGB565。

1、选定RGB

  寄存器 0x501F 用于选择图像输出格式,我们需要 RGB 格式,因此低三位设置成 001,即 0x01。但是 RGB 有多种格式,如 RGB323、RGB565、RGB888等,需要进一步配置。

2、选定RGB565

  寄存器 0x4300 用于更进一步的选择,高 4 位选择 6 则代表 RGB565,低 4 位则代表 RGB565 像素的排列格式,多选 0 或 1,后面拼接时注意即可。

 

三、RAW 转 RGB565

  上表可知,1个 RGB565 像素需要两个字节才能表示,这是怎么回事?在 OV5640 数据手册中没有发现相关说明,但在 OV7725 摄像头中找到了。

  摄像头默认的像素格式是RAW,2个RAW像素合成1个RGB565像素。这张图说明了一切,其像素排列在这指的是寄存器0x4300设置为 8'h60 的情况,是可以通过设置成其他值来改变排列顺序的。

 

四、图像输出时序

  这张图和VGA时序图非常相似,照着 VGA 的来理解即可。图中对应的像素格式是 RAW,tp 指的是 Time_pclk,即OV5640输出1个像素占用的时间。但是我们选择的像素格式是RGB565,1个RGB565像素由 2 个RAW像素构成。因此在使用这张图时,RGB565的 Time_pclk 是 2个pclk 的时钟周期,即 RGB565 tp = 2tp。(1)为帧时间,此次我们的pclk是84Mhz,因此帧率 = 84Mhz x2 / 5596992 = 30.026,即帧率为 30fps。

 

  其他还有许多要说明的,但目前就学了这么点,后面遇到要注意的则再更新。关于寄存器配置,网上很多配置好的值,大多数不用改,关注几个子重要的即可。

 

参考资料:[1]开源骚客《SDRAM那些事儿》

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!