上电之后要做的是通过 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那些事儿》
来源:https://www.cnblogs.com/xianyufpga/p/12275949.html