您的当前位置:首页正文

基于STM32F407与OV2640的图像采集系统的设计

2024-05-24 来源:易榕旅网
基于STM32F407与OV2640的图像采集系统的设计

杨才生;吴状肥;万国义

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

【期刊名称】《汽车实用技术》

【年(卷),期】2018(000)013

【总页数】3页(P142-144)

【关键词】STM32F407;OV2640;嵌入式系统

【作 者】杨才生;吴状肥;万国义

【作者单位】上汽通用五菱汽车股份有限公司,广西柳州 545007;上汽通用五菱汽车股份有限公司,广西柳州 545007;上汽通用五菱汽车股份有限公司,广西柳州 545007

【正文语种】中 文

【中图分类】U462

引言

随着计算机技术的发展,嵌入式系统越来越多应用在各种微型控制系统中,如智能驾驶系统、机器人视觉系统、场景监控系统等,这些系统中大量使用摄像头,虽然市面上有很多摄像头可直接使用,但是具有个性化的摄像头还是需要用户自己设计和研究,比如要求摄像头嵌入到控制系统中、要求具有视频捕捉功能、要求具有图像识别、对象跟踪功能等。在智能驾驶系统中中的图像采集与处理技术,在汽车主动安全领域具有非常重要的意义。

1 系统结构与功能

一套完善的图像采集系统由硬件和软件两个部分组成,其中硬件部分主要包括微控制器、摄像头、图像存储设备等,软件部分主要用来驱动摄像头,并实现图像的传输、存储与处理等任务。

2 硬件设计

2.1 最小系统

(1)电源电路

电源电路用于给视觉系统提供功率需求,本设计要求电源模块能将24V车载电源转

化成+5V和+3.3V两个级别,其中+5V给摄像头等模块供电,+3.3V给MCU供电。图1是24V转+5V的电路原理图:

图1 24伏转5伏电源电路

图1中,MURB1620CT用于防止电源反接,SMAJ36A通过吸收浪涌冲击实现对电路中的元器件的保护,LM2575S型调压器可输出高达3A的稳定电流,从而为摄像头等外设的工作提供了保证。

为了使STM32型微控制器正常运行,需要给其提供3.3V稳定的电压,图2所示为采用REG1117-3.3型集成三端稳压器实现+5V到+3.3V的转换:

图2 5伏转3.3伏电压

作为常用的降压型稳压器,REG1117-3.3可将 4.8~10V的输入电压稳定在+3.3V,且保证输出电流高达 800mA,完全满足图像采集系统微处理器的功耗需求。

(2)复位电路

STM32F407是低电平复位的,所设计的复位电路如图3所示,其中R13和C23构成了上电复位电路:

图3 复位电路

(3)JTAG调试接口

图4 JTAG调试接口

通过JTAG调试接口既可对STM32F407内部数据进行监测,又可实现 ISP(In-System Programmer,在系统编程),便于对微控制器的FLASH等器件进行编程。图4所示为本设计所采用的20引脚JTAG调试接口。

2.2 摄像头接口

STM32F407自带数字同步并行摄像头(DCMI)接口,该接口能够接收外部8~14位CMOS摄像头模块发出的像素数据流。STM32F407为OV2640型摄像头模块提供的接口如图5所示:

图5

在该接口中使用了微控制器的如下引脚资源:

DCMI(D[0:7]):用于接 OV2640型摄像头模块的数据输出引脚;

DCMI_HSYNC:用于接OV2640型摄像头模块的水平同步信号引脚;

DCMI_VSYNC:用于接OV2640型摄像头模块的垂直同步信号引脚;

DCMI_PIXCLK:用于接 OV2640型摄像头模块的像素时钟信号引脚。

2.3 存储器接口

STM32F407自带的标准的SD卡接口使用4位SDIO接口驱动,最高通信速度可达 48Mhz(分频器旁路时), 最高每秒可传输数据 24M字节,完全满足图像传输速度的要求,SD卡的接口电路如图6所示:

图6 SD卡接口电路

3 软件设计

3.1 摄像头驱动

OV2640的初始化

OV2640型摄像头模块的初始化包括以下几个方面的配置和操作:

(1)选择控制对象为图像传感器,通过向 RA_DLMT寄存器写入0x01实现;

(2)软复位OV2640,通过COM7寄存器写入0x80实现;

(3)设置图像参数,包括:输出模式,白平衡,亮度,对比度,特效,分辨率等。

图像格式控制

由于YUV422格式的图像直接读取其像素的Y分量即可获得该像素的灰度信息,因此驱动 OV2640时优先考虑YUV422格式图像数据的输出。OV2640输出YUV422格式图像数据需要依次通过以下配置实现:

(1)通过向RA_DLMT寄存器写0x00选择控制对象为摄像头模块内置DSP。

(2)通过 IMAGE_MODE寄存器切换摄像头模块的数据输出格式。

(3)通过CTRL0寄存器控制摄像头模块的使能。

3.2 图像的缓存

图像传感器采集到的像素数据缓存在 32位数据寄存器DCMI_DR中,然后通过DMA传输至外部存储设备。STM32F407的直接存储器访问DMA可以在无需任何CPU操作的情况下通过DMA快速移动数据实现外设与存储器之间的高速数据传输,这样节省的CPU资源可供其它操作使用。

在本设计中,DCMI每次触发DMA请求时DMA仲裁器根据当前请求的优先级启动图像数据流从 DCMI_DR到FIFO的传输。当图像数据量达到FIFO的阈值时,FIFO中缓存的图像数据被转移至外部SRAM中。当数据流项数寄存器达到零时DCMI请求DMA终止当前的数据传输事务。

3.3 SD卡的驱动

为了实现大量图像数据的存储,图像缓冲区中的像素数据要被及时转移至SD卡中,使用SD卡进行图像存储主要通过以下函数来实现:

//写SD卡

//buf:写数据缓存区

//sector:扇区地址

//cnt:扇区个数

//返回值,错误状态,0,正常,其它,错误

u8 SD_WriteDisk(u8*buf,u32 sector,u8 cnt)

{

u8 sta=SD_OK;

u8 n;

long long lsector=sector;

lsector<<=9;

if((u32)buf%4!=0)

{

for(n=0;n{

memcpy(SDIO_DATA_BUFFER,buf,512);

sta=SD_WriteBlock(SDIO_DATA_BUFFER,lsector+512*n,512);

buf+=512;

}

}else

{

if(cnt==1)sta=SD_WriteBlock(buf,lsector,512);

else sta=SD_WriteMultiBlocks(buf,lsector,512,cnt);

}

return sta;

}

4 结束语

本文基于STM32F407型微处理器和OV2640型摄像头加SD卡的设计方案不仅成本低廉,而且功能齐全,整体效果较好,硬件平台设备较为成熟。在软件方面,程序流程严谨,逻辑严密,而且驱动程序较为完善,各个模块之间不存在耦合性,系统运行稳 定、可靠。

参考文献

【相关文献】

[1] 黄健,罗国平,杜丽君.基于STM32F407平台OV2640驱动程序设计[J].通讯世界, 2015(19):246-247.

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

[3] 李大朋,曹国华.基于STM32单片机驱动面阵CCD实时图像显示的研究[J].长春理工大学学报(自然科学版), 2014(1):37-40.

[4] 万天添.融合指纹与指静脉图像采集系统[D].杭州:杭州电子科技大学,2017.

[5] 邢方诚,王素珍,宗卫华,等.基于 STM32CubeMX 的高速嵌入式图像采集系统[J].单片机与嵌入式系统应用,2016, 16(5):42-45.

[6] 龙再川,赵凯生,洪明坚,等.ARM系统中DMA方式在数据采集中的应用[J].电子设计工程, 2007(2):66-69.

因篇幅问题不能全部显示,请点此查看更多更全内容