一、系统设计情况

       本人应项目要求,做一个小型的摄像头显示系统,使用的是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通信方式

4 线制 SPI 总线写模式时序如下图所示:
CSX 为从机片选, 仅当 CSX 为低电平时,芯片才会被使能。
D/CX 为芯片的数据/命令控制引脚,当 DCX 为低电平时写命令,为高电平时写数据。
SCL 为 SPI 总线时钟,每个上升沿传输 1bit 数据。
SDA 为 SPI 传输的数据,一次传输 8bit 数据。
高位在前,先传输。
      对于 SPI 通信而言,数据是有传输时序的,即时钟相位(CPHA)与时钟极性(CPOL)的组合:
CPOL 的高低决定串行同步时钟的空闲状态电平,CPOL = 0,为低电平。CPOL 对传输协 议没有很多的影响; CPHA 的高低决定串行同步时钟是在第一时钟跳变沿还是第二个时钟跳变沿数据被采集, 当 CPHL = 0,在第一个跳变沿进行数据采集; 这两者组合就成为四种 SPI 通信方式,国内通常使用 SPI0,即 CPHL = 0,CPOL = 0。

三、实际图像测试结果

3.1 山外多功能调试助手(大分辨率版)

波特率为256000,上传的图像大约十秒一帧,效果如下所示,这个凑得太近不大清晰,我在查找为什么图像上有一个点的问题的时候采集到的一幅图像,是我的鼠标。

 大家看,果然屏幕上有一个点,我本来以为是屏幕的问题,结果找了商家重新对屏幕进行初始化了以后还有,原来是摄像头镜头芯片的问题,我把摄像头取下擦拭镜头芯片后,消失了。

3.2 屏幕测试

当我关掉串口的功能的时候,屏幕的刷新率达到了近乎一秒一刷,我欣喜若狂。不过焦距一般都比较小,但对我项目来说,本来就要凑近看,没有影响,在焦距内的图像还是相当清晰。

下面是我的鼠标滑轮部位。

 下面是正在刷新的一帧。

 还有屏幕的引脚也比较清楚。

视频效果如下:

图像测试

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐