基于闪存卡的视频图像数据存储方法
2012-08-27王露露胡增康
王露露,王 利,胡增康
(中北大学机电工程学院,山西 太原 030051)
0 引言
视频图像采集系统是多媒体信息处理、视频监控等系统的前端子系统,视频图像采集系统的实现是进行数字图像处理、多媒体和网络传输的前提。目前国内外的研究主要集中于图像采集系统采集速度的提高、新算法的研究以及算法的优化等方面[1],对于大容量视频图像数据存储的研究较少。
在视频图像存储技术领域,普通的外扩XDRA M存储容量小,存储数据的速率较慢,占用I/O端口太多,影响视频系统整体的传输速率。因此,文中提出了基于闪存卡的视频图像数据存储方法。
1 视频图像系统简介
1.1 传统视频图像采集系统
传统的视频图像采集系统如图1所示。
图1 传统视频图像系统原理图Fig.1 Schematic diagram of traditional video i mage system
其工作原理:视频图像采集端为CCD相机,控制芯片将采集到的视频图像数据存储到与控制芯片相连接的外扩XDRA M,视频图像数据经过计算机处理后显示出来。
1.2 数字图像传感器
随着CMOS工业的发展,近几年来数字图像传感器得到迅速的发展。数字图像传感器在片内对信号进行数字化,即在片内集成ADC。
OV7670是Omni Vision公司生产的1/6英寸,30万像素低功耗CMOS彩色图像传感器,提供单片VGA摄像头和影像处理器的所有功能。该产品VGA图像最高达到30帧/s,用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程可以通过SCCB总线进行内部寄存器编程控制,SCCB总线与I2C 总线兼容[2-3]。
1.3 高速单片机
随着单片机在各领域全面深入地发展与应用,出现了高速、大寻址范围、运算能力强的高速单片机。
C8051F340是CYGNAL公司生产的完全集成的混合信号片上系统型MCU,其资源丰富,外围电路非常简单,兼容性好。其主要特点为:1)高速、流水线结构的8051兼容的微控制器内核,速度最高可达48 MIPS;2)硬件实现增强型SPI串行接口;3)4个通用的16位定时器;4)多达40个端口I/O;5)具有5个捕捉/比较模块和看门狗定时器功能的可编程计数器/定时器阵列(PCA)[4]。
1.4 SD卡
SD卡(Secure Digital Memory Card)是一种基于半导体快闪记忆器的新一代记忆设备,它广泛地使用在便携式装置上,例如数码相机、个人数码助理(PDA)和多媒体播放器等。
德城区1997年一、二、三产业的产值比例分别占地区经济发展总数的12.8%,58.02%,29.08%,到2017年3个产业的比例分别为2.13%,38.05%,59.80%.德城区第一、二产业比值有所下降,第三产业迅速发展,第二产业比值虽有所下降,但由于经济总量的增加,第二产业的经济产值也有大幅度上升.由于二、三产业的大幅度上升,大量工厂、服务产业占地面积扩大,直接表现为城市建成区面积的扩大.
SD卡由日本松下、东芝及美国San Disk公司于1999年8月共同开发研制。大小犹如一张邮票的SD记忆卡,重量只有2 g,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性[5]。
SD卡的出现提供了一个便宜的、结实的、卡片式的存储媒介,容量从16 MB到最高32 GB不等,可为众多应用提供充足的外部存储空间[6-7]。
2 基于闪存卡的视频数据存储
2.1 视频图像采集系统
视频图像采集系统由图像数据采集模块与图像数据存储模块两大部分组成。其包括:1)OV7670 CMOS图像传感器;2)FIFO缓存AL422B数据存储器;3)C8051F单片机;4)SD卡;5)TFT液晶。系统原理框图如图2所示。
图2 系统原理框图Fig.2 Schematic diagram of the system
图1 与图2经过比较分析可知:采用传统的视频图像采集系统有三大不足:1)CCD光敏阵列难与驱动电路及信号处理电路单片集成,并且CCD阵列驱动脉冲复杂,需要使用相对高的电压;2)视频图像数据的存储由于使用传统的外扩XRA M,存储数据的速度较慢,其占用的I/O端口太多,浪费I/O端口资源,影响整个系统的传输速率;3)传统的视频数据显示通过计算机显示,很难脱机进行视频图像数据处理,显示结构庞大,携带非常不方便。
基于上述分析,传统视频图像采集系统不能满足多媒体信息处理、视频监控等场合的应用。因此,文中采用C8051F单片机为核心处理器控制OV7670数字图像传感器对视频图像数据进行采集,使用SD卡对视频数据进行存储,视频数据的存储速率有了极大的提高。
2.2 视频数据存储的硬件改进
在视频图像采集系统中,图像数据量庞大,图像数据采样速率很快,这就必须利用高速的存储器件对采集的图像数据进行存储。因此,文中选取SD卡对视频图像数据进行存储。SD卡的存储有SPI和SD两种工作模式,相对于SD模式,SPI模式可以简化主体,降低成本设计,C8051F340单片机具有增强型SPI串行接口,对SD卡操作容易。
图3是SD卡与C8051F340单片机的接口电路图,单片机作为主机,SD卡作为从机,使用单片机SPI的三线模式进行数据存储。
图3 SD卡与单片机的接口电路图Fig.3 Circuit diagram of SD car d and MCU
2.3 视频数据存储的软件改进
SD卡的读写操作是以块为单位进行的,一个数据块的长度通常是一个扇区,为512 B。SD卡在SPI模式下写操作有两种,一种是单块写(命令为CMD24)操作,另外一种是多块写(命令为CMD25)操作。单块写每次只写一个扇区,多块写操作是从指定的扇区开始写。多块写操作的速率比多次单块写同样扇区数的操作速率要快,因此为了提高图像数据的存储速率,采用SD卡的多块写操作,每次写6个扇区。
多块写命令是SD卡存储数据的主要操作,主要对这部分程序进行优化与改进。原程序使用C语言编写,现改成C语言中嵌入汇编的办法来优化程序。写多块命令采用汇编语言进行编写,在很大程度上提高了代码的执行速度,从而提高了SD卡存储数据的速率。
SD卡实际的写入速率是数据存储模块的关键,采用16位自动重装载定时器T2对SD卡存储速率进行测试。C8051F340的时钟频率为48 MHz,T2的时钟源为系统时钟的1/12,为4 MHz,T2计数初值设为15 A0 H,定时时间为15 ms,开定时器T2中断,用变量Counter_ms记录定时器中断的次数。将512 B数据重复写入SD卡的扇区中,数据写入SD卡的时间用变量ti me(单位:ms)表示,可采用公式(1)来计算。
式中,T MR2 H为T2高字节值,T MR2L为T2低字节值。Ti me用unsigned long型表示,占用4个字节。将C8051F340单片机与PC机通过串口相连,计算出的ti me值通过串口调试助手显示。
3 实验及结果分析
本文把调试好的系统进行了实验,分别进行了静态、动态实验,采集到了正确的实验数据。
在图像采集模块中,要采集到一帧正确的图像数据,最为关键的是要判断OV7670的系统时钟XCLK与像素时钟PCLK的同步信号,OV7670的帧起始信号VSYNC和行同步信号HREF,采用GW双通道示波器观察并记录以上两种正常工作的时序信号。图4为XCLK与PCLK的时序关系,图5为VSYNC与HREF的时序关系。
图4 XCLK与PCLK时序时序关系Fig.4 Ti ming relation of XCLK and PCLK
图5 VSYNC与HERF时序关系Fig.5 Ti ming relation of VSYNC and HERF
系统中OV7670的外部时钟选择16 MHz的有源晶振,根据图4可以知道,XCLK时钟与PCLK同步为16 MHz,信号时序正确。在图5中,当HREF为低电平期间,VSYNC高电平持续300μs后,变为低电平时一帧图像开始,由于VSYNC脉宽持续时间很短,图像采集时采取检测VSYNC信号由低电平到高电平的变化开始一帧图像数据的采集。以上两幅图的时序关系说明OV7670正常工作,可以采集到正确的图像数据。
图6和图7是使用C语言和汇编语言对SD卡的多块写CMD25命令进行软件编程,分别写入30 000个扇区所用的时间,实验结果通过串口助手显示。
图6 使用C语言CMD25命令SD卡写入时间Fig.6 SD card writing ti me by using C
图7 使用汇编CMD25命令SD卡写入时间Fig.7 SD car d writing ti me by using ASM
如图6所示,C语言编程SD卡写入时间为:011E24 H,011D49 H,011D72 H,选取一个中间值011D55 H=73 045 ms,则可算出向SD卡存储数据的速率为:30 000×512×8/(73 045×10-3×1 024×1 024)=1.6 MB/s。
如图7所示,汇编语言编程SD卡写入时间为:74B8 H,744FH,7512 H,选取时间744FH=29 775 ms,可算出C8051F340单片机向SD卡存储数据的速率为:30 000×512×8/(29 775×10-3×1 024×1 024)=3.94 MB/s。
基于上述分析可知,SD卡采用多块写CMD25命令,且使用汇编语言对多块写操作进行编程,SD卡的存储速率最高可达3.94 MB/s,SD卡实际的存储速率达到了数据存储模块的设计要求。
4 结论
本文提出了基于闪存卡的视频图像数据存储方法。视频数据存储模块中用SD卡替代了普通的外扩XDRA M,利用汇编语言对SD卡多块写操作命令进行了程序优化。实验表明:SD卡的视频图像数据存储速率有了很大的提高,数据存储速率最高可达3.94 MB/s,系统可以满足低速微型飞行器侦察任务对图像数据存储速率的要求。SD卡的存储中没有涉及到文件系统,在PC机上只能看见图像数据的编码,下一步工作是将图像数据以b mp文件的格式存入SD卡,在PC上直观的查看存储的图像数据。
[1]郭祥东.基于FPGA的视频图像采集系统的设计[J].九江学院学报,2009,155(6):15-19.GUO Xiangdong.Design of video capture system based on FPGA[J].Journal of Jiu Jiang University,2009,155(6):15-19.
[2]OV7670/OV7171 CMOS VG(640×480 CA MERACHIPT M Sensor with Omni Pixel Technology.Omni Vision Advanced Inf or mation Preli minary Datasheet Version 1.4[Z].USA:Omni Vision Technologies,2006.
[3]乔永征,梁志毅.基于OV7670和FPGA的图像采集系统设计[J].计算机测量与控制,2009,17(9):1 857-1 859.QIAO Yongzheng,LIANG Zhiyi.Image acquisition system based on OV7670 and FPGA[J].Co mputer Measurement & Control,2009,17(9):1 857-1 859.
[4]Silicon Laboratories.C8051F34 xdata sheet[DB/OL][2012-01-22].http://www.sila-bs.com.Revision 0.
[5]窦振中.基于单片机的嵌入式系统工程设计[M].北京:中国电力出版社,2008.
[6]何立明.单片机应用技术选编[M].北京:北京航空航天大学出版社,1997.
[7]谢瑞和.串行技术大全[M].北京:清华大学出版社,2003.