STM32和OV2640的嵌入式图像采集系统设计

发布时间:2017-12-29 阅读量:1330 来源: 我爱方案网 作者:

基于STM32嵌入式系统及200万摄像头OV2640设计了图像采集系统,分析了系统的基本硬件架构,分别对不同模块的功能特点作出了简单的介绍;对系统的软件设计给出了详细的说明,介绍了系统初始化的基本思路和流程,以及相关外围设备模块在程序中的使用;并给出了系统的整体设计思路,实现了系统的稳定运行。

引言

随着电子产品向低功耗、低价格、智能化的方向发展,利用视频传感器采集图像成为研究热点,如可视门铃、安全监控、赛车自动循迹、烟叶图像采集、草本叶子图像采集等。本文根据在线采集、分析、存储图像的需求,设计了嵌入式图像采集系统,运用嵌入式芯片STM32对图像信息进行采集、显示和存储。

1 系统结构与功能

图像采集系统以基于ARM公司的Cortex—M3内核的STM32F103RBT6(以下简称STM32)处理器为核心,配合OV2640摄像头和TFT液晶显示器,是一款采集像素多、实时性好且成本低廉的图像采集系统。

图1:系统硬件结构框图

系统的硬件结构框图如图1所示,系统通过J—Link口实现程序在STM32上的仿真、在线调试,利用J—LINK仿真编程器将编译之后的二进制文件烧写到Flash中,系统每次上电时便可从Flash启动文件系统,图像采集系统采用OV2640摄像头模块,输出显示采用2.4英寸TFT液晶显示屏,可将采集到的数据保存在SD卡中。当存储按键按下时,系统接收中断,同时将从OV2640摄像头采集到的数据显示在液晶显示屏上。

2 硬件设计

2.1 CPU处理器

本系统用的是32位的Cortex-M3内核的STM32芯片STM32F103RBT6,支持Thumb2指令集,STM32F103RBT6内部的Flash有128K,SRAM大小为20 K,有64个增强I/O口、2个USART、2个12位的A/D转换器。它的供电电压为2.0~3.6 V,拥有省电模式,可以保证低功耗需求。CPU主频最高可以达到72 MHz。

2.2 OV2640摄像头

OV2640具有体积小、工作电压低、兼容I2C总线接口等特点。通过SCCB总线控制,支持RawRGB、RGB(GRB4:2:2、RGB565/555/444)、YUV(4:2:2)和YCbCr(4:2:2)输出格式,可以输出整帧、二次转换分辨率、取特定区域等方式的各种分辨率的8位或10位的图像帧数据,UXGA(1 632×1 232)图像最高达到15 fps。因此,编程者可选择不同图像质量、数据格式,而且,OV2640的高灵敏度适合低照度环境,它的低电压特性适合嵌入式开发应用,摄像头数据口连接CPU的示意图如图2所示。采用摄像头的8位数据模式,摄像头高8位接CPU的I/O口的低8位,低2位悬空。

图2:OV2640摄像头连接示意图

2. 3 SCCB总线

SCCB(OmniVision Serial Camera Control Bus)与I2C总线协议类似,使用SIO-0和SIO-1两根数据线进行传输和控制。SIO-1是控制线,提供传输过程中的时钟脉冲控制信号,SIO-0是串行双向数据传输线,根据控制信号通过串行的方式发送数据。在很多设计中,经常采用I/O口模拟I2C总线的传输,对于SCCB,也可以采用这样的方式。

采用I/O口模拟SCCB总线的要点如下:对于SCL所连接的引脚,在寄存器中设置为输出,而SDA所接的引脚,在数据传送过程中,基于IODIR值的改变,动态改变引脚为输入或输出方式。

2.4 LCD显示模块

本设计所用的为2.4英寸的TFT液晶显示屏,内部集成有ILI9320 LCD控制芯片,可以直接控制数据的显示。ILI9320可以用来读写寄存器、GRAM,还可显示动态图形的RGB输入接口。显示控制芯片有RGB接口模式与i80系统接口模式,设计选用i80-system接口模式。

i80-system接口是通过设置IM[3:0]来决定的,同时这几个位也决定了数据传输位数的模式,通过硬件设置IM0位高电平,IM1位高电平,把模式设置为了8位i80-system接口传输模式。连接示意图如图3所示。

图3:系统与ILI9320连接图

要写数据到屏上显示,只需要对寄存器0x0022进行写操作即可,当这个寄存器的数据更新时,地址指针(AC)会自动增加或减小,读数据也是同样的道理。

2.5 SD卡接口电路设计

通常而言,SD卡电路设计有两种模式:SPI模式和SD卡模式,由于引脚资源限制,对于连接STM32的方式,采用第一种设计电路,通过STM32上面的SPI接口来和SD卡进行数据通信,引脚如图4所示。

图4:SD卡槽连接图

在SPI模式中,数据通过STM32的MOSI与MISO进行传送,SCK信号线用来提供工作时钟,当SD卡收到复位命令(CMD0)时,SD卡立即进入SPI模式。要注意的是,在发送CMD0之前须发送大于74个的时钟周期;另外,在SD卡初始化时,CLK时钟频率最大不能超过400 kHz。

3 软件设计

3.1 系统初始化

系统初始化主要是对CPU时钟进行初始化,以及设置外围电路的时钟分频比,设置中断。其流程可描述如下:


3.2 摄像头初始化

首先,通过SCCB总线设置OV2640的寄存器数据,主要是配置摄像头输出数据格式类型和输出图像数据大小,达到初始化OV2640的目的OV2640初始化流程较为简单,伪代码如下:



3.3 LCD显示模块

通过对ILI9320的读写操作时序控制进行仔细的分析后,初始化TFT屏幕,其实质就是对寄存器的设置。程序中对LCD控制器操作的函数接口主要有以下3个:

LCD_WR_REG16() //写寄存器命令
LCD_WR_DATA16() //写寄存器数据
LCD_RD_DATA16() //读寄存器数据

3.4 主程序流程与系统实现

程序运行流程如图5所示,系统启动之后,先按照程序初始化设备,并打开外部中断,如果检测到门铃有按键输入,则启动摄像头与CPU之间的数据传输,启动TFT液晶显示器与CPU之间的数据传输,在液晶显示器上实时显示摄像头所拍摄到的画面,并鸣响蜂鸣器。

图5:程序运行流程

如果用户需要,还可以启动拍照,并将照片保存为Bmp的格式文件在SD卡上。同时,在延时一段时间之后,如果没有任何中断触发,则系统运行至低功耗状态,关液晶屏。

实验效果图如图6所示。

图6:系统效果图

从图6中可以看出,STM32加OV2640方案的效果比较令人满意,摄像头的清晰度较高,实时性较好,2.4英寸的显示屏能满足图像显示的需求。

结语

本文基于STM32处理器和OV2640摄像头加2.4英寸TFT液晶显示屏的设计方案不仅成本低廉,而且功能齐全,整体效果较好,硬件平台设备较为成熟。

在软件方面,程序流程严谨,逻辑严密,而且驱动程序较为完善,各个模块之间不存在耦合性,系统运行稳定、可靠。


以上就是小编为大家介绍的有关“STM32和OV2640的嵌入式图像采集系统设计”的相关知识,有想了解更多的朋友可以看以下相关文章。希望通过小编的介绍能给大家带来帮助!


STM32和OV2640的嵌入式图像采集系统设计”的相关文章:


基于嵌入式Linux的视频图像采集与传输-原文链接: 
http://www.52solution.com/knowledge/5623.html

相关资讯
核心对比!无源晶振与有源晶振在结构和工作原理的本质区别

无源晶振与有源晶振是电子系统中两种根本性的时钟元件,其核心区别在于是否内置振荡电路。晶振结构上的本质差异,直接决定了两者在应用场景、设计复杂度和成本上的不同。

温度稳定性对RTC晶振的计时误差影响与分析

RTC(实时时钟)电路广泛采用音叉型32.768kHz晶振作为时基源,但其频率稳定性对温度变化极为敏感。温度偏离常温基准(通常为25℃)时,频率会产生显著漂移,且偏离越远漂移越大。

从参数到实践!剖析有源晶振的频率稳定度、老化率及正确接线方案

有源晶振作为晶振的核心类别,凭借其内部集成振荡电路的独特设计,无需依赖外部电路即可独立工作,在电子设备中扮演着关键角色。本文将系统解析有源晶振的核心参数、电路设计及引脚接法,重点阐述其频率稳定度、老化率等关键指标,并结合实际电路图与引脚定义,帮助大家全面掌握有源晶振的应用要点,避免因接线错误导致器件失效。

如何对抗晶振老化?深入生产工艺与终端应用的防老化指南

晶振老化是影响其长期频率稳定性的核心因素,主要表现为输出频率随时间的缓慢漂移。无论是晶体谐振器还是晶体振荡器,在生产过程中均需经过针对性的防老化处理,但二者的工艺路径与耗时存在显著差异。

无源晶振YSX321SL应用于高精度HUD平视显示系统YXC3225

在现代汽车行业中,HUD平视显示系统正日益成为驾驶员的得力助手,为驾驶员提供实时导航、车辆信息和警示等功能,使驾驶更加安全和便捷。在HUD平视显示系统中,高精度的晶振是确保系统稳定运行的关键要素。YSX321SL是一款优质的3225无源晶振,拥有多项卓越特性,使其成为HUD平视显示系统的首选。