正点原子 发表于 2020-12-7 17:03:23

【正点原子FPGA连载】第四十四章OV5640摄像头RGB-LCD灰度显示实验

本帖最后由 正点原子 于 2021-1-23 15:33 编辑

1)实验平台:正点原子达芬奇FPGA开发板
2)购买链接:https://detail.tmall.com/item.htm?id=624335496505
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz_dafenqi.html
4) 正点原子官方B站:https://space.bilibili.com/394620890
5)对正点原子FPGA感兴趣的同学可以加群讨论:905624739 点击加入:





第四十四章OV5640摄像头RGB-LCD灰度显示实验


前面的实验介绍了OV5640摄像头的HDMI灰度显示实验,在本次实验中,将摄像头采集的RGB565格式数据到转换为YUV格式的数据,转换后的灰度数据送到LCD显示。
本章包括以下几个部分:
4444.1简介
44.2实验任务
44.3硬件设计
44.4程序设计
44.5下载验证

44.1简介
我们在“OV5640摄像头HDMI灰度显示实验”中对YUV灰度显示作了详细的介绍,如果大家对这部分内容不是很熟悉的话,请参考“OV5640摄像头HDMI灰度显示实验”中的简介部分。
44.2实验任务
本节实验任务是使用达芬奇开发板达到OV5640摄像头采集RGB565格式的数据,RGB565格式的数据通过算法转换,将数据格式转换为YCbCr格式,然后通过LCD屏实时显示灰度图的目的。
44.3硬件设计
本章节中硬件设计与OV5640的LCD显示实验完全相同,此处不再赘述。
44.4程序设计
根据实验任务,首先设计如图 44.4.1所示的系统框图,本章实验的系统框架延续了“OV5640摄像头HDMI灰度显示实验”的整体架构。本次实验包括以下模块:时钟模块、图像分辨率设置模块、DDR控制器模块、摄像头驱动模块、图像处理模块和LCD顶层模块。其中时钟模块、DDR控制器模块、图像处理模块、图像分辨率设置模块和摄像头驱动模块没有做任何修改,这些模块在“OV5640摄像头HDMI灰度显示实验”中已经说明过,这里不再详述,本次实验只是将HDMI顶层模块替换成了LCD顶层模块。
OV5640摄像头LCD灰度显示系统框图如下图所示:


图 44.4.1 顶层系统框图
由上图可知,时钟模块(clk_wiz_0)为LCD顶层模块、DDR控制模块以及OV5640驱动模块提供驱动时钟。OV5640驱动模块控制着传感器初始化的开始与结束,传感器初始化完成后将采集到的数据写入图像处理模块。图像处理模块将摄像头数据进行处理后存入DDR控制模块。顶层模块从DDR控制模块中读出数据并驱动显示器显示,这时整个系统才完成了数据的采集、缓存与显示。需要注意的是图像数据采集模块是在DDR3和传感器都初始化完成之后才开始输出数据的,避免了在DDR3初始化过程中向里面写入数据。
顶层模块的原理图如下图所示:

图 44.4.2 顶层模块原理图
FPGA顶层模块(ov5640_lcd_yuv)例化了以下五个模块:时钟模块(clk_wiz_0)、OV5640驱动模块(ov5640_dri)、图像处理模块(vip)、DDR控制模块(ddr3_top)和LCD顶层模块(lcd_rgb_top)。
时钟模块(clk_wiz_0):时钟模块通过调用MMCM IP核实现,共输出2个时钟,频率分别为200Mhz(DDR3参考时钟)和50Mhz时钟。200Mhz时钟作为DDR控制模块的参考时钟,由MIG IP核产生的ui_clk(本次设计为100Mhz)作为DDR控制模块的驱动时钟,50Mhz时钟作为OV5640驱动模块、摄像头图像分辨率设置模块和LCD顶层模块的驱动时钟。
OV5640驱动模块(ov5640_dri):OV5640驱动模块负责驱动OV5640 SCCB接口总线,将像素时钟驱动下的传感器输出的场同步信号、行同步信号以及8位数据转换成DDR读写控制模块的写使能信号和16位写数据信号,完成对OV5640传感器图像的采集。
图像处理模块(vip):对采集后的图像数据进行处理,并将处理后的数据存入DDR控制模块。
DDR控制模块(ddr3_top):DDR读写控制器模块负责驱动DDR片外存储器,缓存图像传感器输出的图像数据。该模块将MIG IP核复杂的读写操作封装成类似FIFO的用户接口,非常方便用户的使用。
有关DDR控制模块的详细介绍请大家参考“OV7725摄像头RGB-LCD显示实验”章节。
LCD顶层模块(lcd_rgb_top):LCD顶层模块负责驱动LCD屏的驱动信号的输出,同时为其他模块提供屏体参数、场同步信号和数据请求信号。有关LCD驱动模块的详细介绍请大家参考“OV7725摄像头RGB-LCD显示实验”章节。
44.5下载验证
首先将FPC排线一端与RGB-LCD模块上的J1接口连接,另一端与达芬奇开发板上的RGB-LCD接口连接。连接时,先掀开FPC连接器上的黑色翻盖,将FPC排线蓝色面朝上插入连接器,最后将黑色翻盖压下以固定FPC排线,如图 44.5.1和图 44.5.2所示。

图 44.5.1 正点原子RGBLCD模块FPC连接器

图 44.5.2 达芬奇开发板连接RGB-LCD液晶屏
接下来分别连接JTAG接口和电源线,并打开电源开关。
最后将下载器一端连电脑,另一端与开发板上的JTAG端口连接,连接电源线并打开电源开关。
接下来我们下载程序,验证OV5640 RGB-LCD灰度显示功能。下载完成后观察RGB-LCD模块显示的图案如下图所示,说明OV5640 RGB-LCD灰度显示程序下载验证成功。


图 44.5.3 LCD实时显示灰度图像
页: [1]
查看完整版本: 【正点原子FPGA连载】第四十四章OV5640摄像头RGB-LCD灰度显示实验