一、系统设计情况
本人应项目要求,做一个小型的摄像头显示系统,使用的是STM32/GD32F103C8T6核心板,加上带FIFO的OV7670以及2.8寸的TFT彩屏进行测试,经过努力,实现了实时的图像显示工作,可达一秒一帧的较清晰320*240的图像显示效果。
二、核心板资源分配情况
2.1 OV7670
由于仅仅利用OV7670的FIFO获取图像数据,虽然核心板的资源不多,但我还是完成了对仅有资源的合理分配,OV7670引脚分配如下。
2.1.1 OV7670代码
OV7670代码主要就SCCB.c和OV7070.c,对摄像头进行初始化工作。由于代码量大,加上我第一次写博客,不知道咋放去。。。这里就不放了,直接看成果吧。
2.2 TFT屏幕
ITI9341 控制器支持的最大分辨率为 240*320,拥有一个 172800 字节大小的 GRAM。同时支持 8 位、9 位、16 位、18 位并口数据总线,还支持 3 线制和 4 线制 SPI 串口。由于并行控制需要大量的 IO 口,所以最常用的还是 SPI 串口控制。ITI9341 还支持 65K、262K RGB颜色显示,显示色彩很丰富,同时支持旋转显示和滚动显示以及视频播放,显示方式样。ITI9341 控制器使用 16bit(RGB565)来控制一个像素点显示,因此可以每个像素点显示颜色多达 65K 种。像素点地址设置按照行列的顺序进行,递增递减方向由扫描方式决定。ITI9341 显示方法按照先设置地址再设置颜色值进行。显示屏网上买的,20块钱一个,这里没有触摸屏功能(要是有的话,本就对资源不够的核心板来说,雪上加霜)。
2.2.1 SPI通信方式
三、实际图像测试结果
3.1 山外多功能调试助手(大分辨率版)
波特率为256000,上传的图像大约十秒一帧,效果如下所示,这个凑得太近不大清晰,我在查找为什么图像上有一个点的问题的时候采集到的一幅图像,是我的鼠标。
大家看,果然屏幕上有一个点,我本来以为是屏幕的问题,结果找了商家重新对屏幕进行初始化了以后还有,原来是摄像头镜头芯片的问题,我把摄像头取下擦拭镜头芯片后,消失了。
3.2 屏幕测试
当我关掉串口的功能的时候,屏幕的刷新率达到了近乎一秒一刷,我欣喜若狂。不过焦距一般都比较小,但对我项目来说,本来就要凑近看,没有影响,在焦距内的图像还是相当清晰。
下面是我的鼠标滑轮部位。
下面是正在刷新的一帧。
还有屏幕的引脚也比较清楚。
视频效果如下:
图像测试