文献学习(一)基于 STM32 和 OV7670 的图像采集与显示系统设计

学习文献:李慧敏,樊记明,杨笑.基于STM32和OV7670的图像采集与显示系统设计[J].传感器与微系统,2016,35(09):114-117.

摘要: 针对传统图像采集与显示方案存在成本高、便携性差等问题,设计了一种基于 STM32 和 OV7670的图像采集与显示系统。以 STM32F103ZET6 微控制器为主控单元,采用串行摄像机控制总线(SCCB)控制 OV7670 图像传感器输出 RGB565,QVGA 的图像数据,同时实时显示在 TFT LCD 上,并将图像以 BMP格式保存在 SD 卡中。实验结果表明:得到的图像清晰流畅,且该系统具有低成本、低功耗、小体积等优点,可满足图像处理与识别的需要。

关键词: STM32; OV7670; 图像采集与显示; 图像处理

一、元器件及名词解释

STM32F103 —— ST 公司生产的基于ARM Cortex — M3 内核的 32 位微控制器,主频可达 72 MHz,具有 高 性 能、低 功 耗、低 成 本、稳 定 等 诸 多 优 点.

OV7670 —— OmniVision 公司生产的一款 1/6 寸、有效像素30 万的互补金属氧化物半导体(CMOS)图像传感器,它通过美国 OmniVision 公司定制的 2 线/3 线制串行摄像头控制总线(serial camera control bus,SCCB)进行控制,输出并行的 8 位图像数据,VGA 图像输出最高可达 30 帧/s.

TFT(Thin Film Transistor)LCD——薄膜场效应晶体管LCD,是有源矩阵类型液晶显示器(AM-LCD)中的一种。 液晶平板显示器,特别TFT-LCD,是目前唯一在亮度、对比度、功耗、寿命、体积和重量等综合性能上全面赶上和超过CRT的显示器件,它的性能优良、大规模生产特性好,自动化程度高,原材料成本低廉,发展空间广阔,将迅速成为新世纪的主流产品,是21世纪全球经济增长的一个亮点.

QVGA & VGA——QVGA和VGA都是指的屏幕分辨率,也就是指屏幕在横向和纵向上,能够显示的点的数量。VGA的标准是640*480,即横向有640个点,纵向有480个点。QVGA是VGA的四分之一,即横向和纵向各小一半,即分辨率为320*240.

SCCB——串行摄像机控制总线协议的英文名简称,相当于一个简易的I2C协议。同时也代表软件配置控制委员会,常用的2线制SCCB总线是与I^2C总线类似的两线串行总线,仅需 SIO_C(串行时钟线)和 SIO_D(串行数据线)便能实现双向数据传输.

ACK (Acknowledgement)——是确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符。表示发来的数据已确认接收无误。在TCP/IP协议中,如果接收方成功的接收到数据,那么会回复一个ACK数据。通常ACK信号有自己固定的格式,长度大小,由接收方回复给发送方.

AHB——高级高性能总线,一种系统总线。主要用于高性能模块(如CPU、DMA和DSP等)之间的连接.

SD 卡——安全数码卡(secure digital memory card),是一种基于半导体快闪记忆器的新一代记忆设备,广泛使用在便携式装置上.

BMP——(Bitmap,位图文件)是 Windows 操作系统中的标准图像文件格式,图像深度可选,一般不压缩,没有失真,扫描顺序为自左到右、自下到上。BMP 文件一般由文件头、信息头、调色板、位图数据这 4部分组成。

二、系统总体方案

图1  系统总体框图

STM32 微控制器——整个系统的核心单元,负责图像数据的处理和各模块的控制等,STM32 通过对图像传感器寄存器的读写来控制它采集一帧的图像.

OV7670——负责图像数据的采集.

AL422B帧缓存——由于图像传感器的像素时钟高达 24 MHz,通过STM32 的 IO 口来直接采集数据比较困难,容易造成数据丢失,且对 CPU 会造成较大的负担,所以使用 AL422B 作为先入先出(FIFO),当一帧图像缓存完后,STM32 才将这一帧图像写入显存或暂存到内存中.

TFT LCD——选取2.8in(1in=2.54cm) 320*240分辨率的TFT实现图像的实时显示。控制器为 ILI9341,显示方式为 RGB565,接口为 16位 8080 并口.

外扩SRAM——由于一帧 RGB565 格 式、QVGA (320 × 240) 尺 寸 的 图 像 高 达150 KB,而 STM32F103ZET6 的内部 SRAM 只有 64 KB,故外扩 1MB 的 SRAM 实现图像处理中间数据的暂存.

SD 卡——可以将图像以 BMP 图片文件格式进行掉电存储,方便计算机等其他设备的查看。SD 卡支持 2 种操作模式:SD 卡模式和 SPI 模式。SD 卡模式具有更快的速度,而 SPI模式则具有更好的兼容性.

FATFS——一个免费开源、用标准 C 语言编写、专为小型嵌入式系统设计的 FAT 文件系统模块,用户不必理会 FATFS 的内部结构及复杂的 FAT 协议,只需调用它提供的一系列应用接口函数,如 f_open、f_close、f_read 和 f_write 等,就可轻易实现文件的读/写.

三、图像采集

1、SCCB驱动

STM32 通过 SCCB 对 OV7670 寄存器的读写实现图像数据的采集与输出。本系统使用 IO 口模拟 SCCB 来实现对 OV7670 的控制,SIO_C 口配置为推挽输出,SIO_D 口读数据时配置为上拉输入、写数据时配置为推挽输出,然后根据 SCCB 时序图来编写驱动程序

图2  SCCB驱动程序流程

2、图像数据输出

本系统采用 QVGA(320 × 240)模式、RGB565 格式输出图像数据,每帧图像 240 行,每行 320 个像素,刚好与 TFT LCD 的分辨率及颜色格式相匹配。

一帧图像的缓存(从OV7670 存储图像数据至 FIFO 的过程):等待 VSYNC 帧同步信号→复位 FIFO 写指针→使能 FIFO 写→等待第二个VSYNC 帧同步信号→禁止 FIFO 写.

完成帧缓存后需要将图像数据从 FIFO 读出过程:复位 FIFO 读指针→给 FIFO 读时钟→读第一个像素高字节→给 FIFO 读时钟→读第一个像素低字节并将高低字节组成 16 位数据→给 FIFO 读时钟→循环读取剩余像素至结束.

以上两步可获取一帧完整的图像数据,之后进行图像显示或暂存到外部SRAM中.

三、图像显示

1、LCD驱动

本系统使用 2.8 寸 320 ×240 分辨率的 TFT LCD 作为图像显示设备,控制器为 ILI9341,显示方式为 RGB565,接口为16位 8080 并口.

驱动LCD:采用STM32内部自带的静态存储控制器(flexible static memory controller,FSMC)总线。原因:由于一帧图像数据高达 150KB,为加快显示速度。具体做法:将 LCD 当作 16 位外部 SRAM 来控制,LCD 的RS(命令/数据标志)信号作为地址线以区分命令和数据,与 STM32 的 FSMC _ A10 相连接。LCD 和外扩的 1MBSRAM 均挂在 FSMC 总线上,它们使用不同的片选信号以进行区分,LCD 接 FSMC_NE4,SRAM 接 FSMC_NE3。

FSMC 的工作模式:由于对 LCD 控制器 ILI9341 的写操作比读操作快得多,工作模式配置为异步模式 A(ModeA),即读/写时间分别由不同的寄存器来控制.

\star  STM32 FSMC HADDR和FSMC_A对应的问题

我们操作的是HADDR[25:0],那么如果我们要用8位的,那么就一一对应;而16位,我们需要每次从外部取16位数据,但是HADDR中每个地址对应取出来的数是8位,所以我们就让地址一次加2,那么这样就相当于第0位没用了,所以我们才16位 HADDR[25:1]与FSMC_A[24:0]对应相连。在 16 数据宽度时,STM32 内部 AHB 地址总线HADDR[25∶ 1]对应的外部存储器地址为 FSMC_A[24∶ 0],即右 移 了 一 位。故 LCD 写 命 令 ( 数 据) 时 的 地 址 为0x6C000000 + 0x07FE (0x0800),而 不 是 0x6C000000 +0x03FE(0x0400),即 FSMC_A10 对应 HADDR11.

2、图像显示


图3  图像显示流程图

四、图像保存

1、SD卡

本系统使用 SPI 模式操作 SD卡,SD 卡与主机的通信采用发送应答机制,即主机每发送一个命令,SD 卡都会给出一个应答,以告知主机该命令的执行情况或返回主机需要的数据.

图4  SD卡初始化和读数据流程图

2、FATFS 文件系统

使用 FATFS 来管理 SD 卡,实现文件的读/写功能。FATFS层次结构如下:

图5  FATFS层次结构图

用户需要编写的是FATFS 模块提供的底层接口,包括存储媒介读/写接口(disk I/O)和供给文件创建修改时间的实时时钟。

3、BMP编码

将采集到的图像以 BMP 的图片文件格式保存在 SD 卡中,保存流程如下:

图6  BMP图片保存流程图

五、测试结果与分析

测试过程中,图像画面显示清晰流畅,QVGA(320 × 240)输出达到10 帧/s,从图片中可以清晰地看出扬声器焊点的位置.

最后遗留问题

1、时序图怎么看

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容