基于SPCE3200系统的视频采集系统的设计与实现.doc

上传人:laozhun 文档编号:2391626 上传时间:2023-02-17 格式:DOC 页数:30 大小:1.13MB
返回 下载 相关 举报
基于SPCE3200系统的视频采集系统的设计与实现.doc_第1页
第1页 / 共30页
基于SPCE3200系统的视频采集系统的设计与实现.doc_第2页
第2页 / 共30页
基于SPCE3200系统的视频采集系统的设计与实现.doc_第3页
第3页 / 共30页
基于SPCE3200系统的视频采集系统的设计与实现.doc_第4页
第4页 / 共30页
基于SPCE3200系统的视频采集系统的设计与实现.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《基于SPCE3200系统的视频采集系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《基于SPCE3200系统的视频采集系统的设计与实现.doc(30页珍藏版)》请在三一办公上搜索。

1、本科生毕业论文 基于SPCE3200系统的视频采集系统的设计与实现系 别 计算机与信息工程学院 班 级 电科 姓 名 学 号 答辩时间 目 录摘要:1关键词:1前言21 绪论21.1视频采集系统研究背景及意义21.2研究现状41.2.1 视频图像采集系统发展现状41.2.2 视频图像编码发展现状42 基于SPCE3200的视频采集存储系统方案43 SPCE200视频采集系统硬件平台分析设计73.1 SPCE3200处理器硬件结构73.2 视频采集系统模块的选取83.2.1 图像采集模块的选取83.2.2 显示模块的选取103.2.3 存储模块及文件系统选取103.2.4 按键接口设计114 视

2、频采集系统的系统结构及软件平台的分析和设计114.1 编视频采集系统的系统结构:114.2 编译仿真调试环境124.3 嵌入式操作系统简介134.3.1 eCos简介144.4 eCos在SPCE3200上的移植144.4.1 RedBoot在SPCE3200上的移植144.4.2 应用程序在SPCE3200上的移植154.4.3 设置脚本实现应用程序脱机工作164.5 视频采集存储程序分析和设计174.5.1 系统初始化设置174.5.2 视频采集编码和文件存储的实现194.5.3 软件系统整体设计215 系统测试225.1 系统的功能测试225.2 系统性能分析246 结论24参考文献:2

3、5谢 辞26附录:27基于SPCE3200系统的视频采集系统的设计与实现武耀 指导教师:张婧婧摘要:本文以分析嵌入式视频采集系统的性能为目的,在介绍数字视频采集和视频压缩研究现状的基础上,研究了视频信号采集、编码压缩、存储系统,并利用SPCE3200嵌入式处理器,优选了CMOS图像传感器模块、TFT-LCD显示模块和SD卡,构建了数字视频开发平台。通过分析SPCE3200的开发环境,移植了eCos嵌入式操作系统最小系统redboot到SPCE3200芯片中,并采用模块化设计思路,按照功能依次编写了各软件功能模块。所设计的系统在保证原有图像质量的前提下实现了视频数据的实时压缩。关键词:视频采集;

4、SPCE3200;编码压缩The Design And Implementation Of Video Capture System Based On SPCE3200Wu Yao Tutor: Zhang JingjingAbstract:To analyze the performance of embedded video capture system for the purpose in the introduction of digital video capture and video compression Research on the basis of the video s

5、ignal acquisition, encoding, storage systems, and using SPCE3200 embedded processors optimized CMOSthe image sensor module, TFT-LCD display module and SD card, built digital Video Development Platform. By analyze SPCE3200 development environment, transplantation eCos embedded operating system minimu

6、m system redboot to SPCE3200 of the chip, and uses a modular design concept, according to the function, followed by the preparation of various software modules. The design of the system under the premise of ensuring the original image quality of real-time video data compression.Key words: video acqu

7、isition;SPCE3200;compression coding前言视频信号从采集、存储到传输都以模拟信号为主,个人计算机的普及使计算机成为视频信号的处理主体。由于个人计算机具有高速通用扩展总线,通过扩展视频采集卡可以实现视频模拟信号到数字信号的转变。数字化后的视频文件在存储和传输过程中,尤其在视频的后期处理中可以采用数字信号处理算法在计算机上实现各种复杂的处理变换。新的嵌入式系统的出现对于视频的处理提出了新的需求。最初的嵌入式系统以可编程控制器的形式出现,只有监测、伺服、设备指示等功能,无法满足视频处理的需求。随着微电子工艺水平的提高,大量高可靠、低功耗的面向I/O设计的微控制器一举成

8、为嵌入式系统领域中的新秀,各种嵌入式操作系统开始得到迅速发展,数字信号处理技术的应用研究也开始在嵌入式系统上展开。嵌入式图像及视频处理成为信号处理研究中一个重要的分支,大量在计算机上实现的数字信号处理算法通过与嵌入式系统的结合产生了大量优秀的应用平台和案例。1 绪论1.1视频采集系统研究背景及意义视频和图像是多媒体的重要部分,它可以生动和直观的形式表现信息。随着信息技术的发展,网络技术和信息技术已经广泛地应用在国民生产的各个领域,特别是大规模集成电路的广泛使用和数字视频处理理论研究的发展,数字化的视频处理产品层出不穷,早期大量采用的模拟视频采集存储系统正在被数字技术所代替,从视频采集、视频编码

9、到海量视频文件的存储等,数字技术几乎涵盖了视频采集存储系统的所有组成部分,设计高性能的视频处理系统平台和研究视频处理算法已经成为现阶段视频处理系统的热点问题1。在各种数字化视频处理系统方案中,个人计算机以其高速运算和易扩展的特性,结合优秀的数字视频处理算法,使得个人计算机在视频处理领域得到一定的发展和应用。随着嵌入式系统性能的提高,大量以前只能够在计算机上完成的任务可以在嵌入式系统中完成,加之嵌入式系统在价格上的优势,出现了大量基于嵌入式系统的视频处理系统。具体比较见表1-1:表1-1 常用芯片比较优势劣势DSPDSP的主要优势是速度,它可以在一个指令周期中同时完成一次乘法和一次加法,这非常符

10、合快速傅立叶变换的需求。DSP有专门的指令集,主要是专门针对通讯和多媒体处理的2。DSP为提高数字计算效率,牺牲了存储器管理的方便性,对多任务的支持要差的多,所以DSP不适合于作多任务控制作用。ARMARM最大的优势在于速度快、低功耗、芯片集成度高,多数ARM芯片都可以算作SOC,基本上外围加上电源和驱动接口就可以做成一个小系统了,具有比较强的事务管理功能,可以用来跑界面以及应用程序等,其优势主要体现在控制方面。速度和数据处理能力一般。SPCE3200内置MPEG4硬件编解码模块,并外扩其它用于多媒体、机器人领域的功能模块。它专长于图像、视频处理,可以输出图像、声音到电视机以及LCD上显示,具

11、备强大的音频、视频、图像数据的处理能力。控制能力和数据处理能力一般。没有前两者专项突出。通过对资料的分析,本设计选择了凌阳科技公司推出的SPCE3200处理器作为视频采集系统的核心,由于其内部集成了一个MPEG4编码解码模块,所以在实现视频编码过程中可以减少对于处理器计算资源的需求,再通过其他外部设备性能的分析,最终确定了新的设计方案。本文在设计实现硬件系统平台时,首先研究和分析SPCE3200处理器的结构和接口特点,在完成了SPCE3200最小系统后,扩展了CMOS图像传感器模块、TFT-LCD模块和SD卡。选择并移植了eCos嵌入式操作系统的最小系统,并使用MPEG4模块最终设计实现了嵌入

12、式视频采集存储系统。系统测试结果显示,在320像素240像素分辨率下可以实现15帧/秒的实时视频采集和压缩编码,编码后的视频文件采用FAT文件格式存放在SD卡上。1.2研究现状 1.2.1 视频图像采集系统发展现状嵌入式系统与个人计算机在体系结构上有差异,原有的视频图像处理技术需要根据嵌入式系统的特点进行改进,运算性能上,嵌入式系统无法与计算机相比,因此减小视频压缩编码算法的时间和空间复杂度是嵌入式视频采集存储系统实现的前提。目前嵌入式的视频处理系统平台大都采用多媒体处理器、DSP处理器、FPGA或专用视频处理芯片实现。1.2.2 视频图像编码发展现状视频图像编码技术广泛应用于通信、广播电视和

13、等众多领域,促成了许多视频编码标准的产生。国际上两大视频编码标准化组织ITUT与ISO/IEC分别制定了H26x和MPEGx两大系列视频编码国际标准,主要应用于实时视频存储和因特网等相关系统。最早提出的一种编码协议是H261视频编码国际标准。H263视频编码国际标准是低码率图像压缩标准,支持全码率应用,对运动补偿使用半像素精度,采用无限制的运动向量以及基于语法的算术编码, H263标准能够在低码率下实现比H261标准更好的图像效果。MPEG4视频编码国际标准引入了基于视听对象的编码方式,采用了形状编码、自适应DCT、任意形状视频对象编码等一些新的技术,大大提高了视频通信的交互能力和编码效率。现

14、阶段,此标准为数字视频通信及其相关应用提供了标准的算法及工具,建立了能被多媒体传输、存储、检索的统一数据格式,作为优秀的视频编码标准,在数字视频的编码和存储中得到了广泛的应用。H264视频编码国际标准是两大国际标准化组织在H263和MPEG4两种标准基础上共同制定的,它克服了两种编码标准的弱点,在混合编码的框架下引入了新的编码方式,在相同的视频质量下带宽仅为MPEG-4标准的1/3,能够在较低的带宽上实现高质量的图像传输,可以作为未来宽带交互式新媒体的标准之一,将会具有更广阔的应用前景3。2 基于SPCE3200的视频采集存储系统方案实现基于SPCE3200的视频采集系统,需要硬件资源、嵌入式

15、操作系统和应用软件开发平台,按照功能模块依次确定系统的实现方案。具体方案如表2-1:表2-1 各模块参考方案视频采集模块外部存储模块视频输出接口方案一USB接口NANDFlash控制器LCD接口方案二CMOS传感器接口SD卡控制器TV编码接口方案三无USB控制器无视频采集模块大都采用USB接口或CMOS传感器接口两种方式。USB接口是支持即插即用的通用串行总线接口,包括了USB控制器、控制器驱动程序、USB芯片驱动程序、USB设备以及USB设备驱动程序五部分。SPCE3200处理器内部集成了USBl1协议标准的USB控制器,可以选用USB接口摄像头作为视频采集的输入设备;CMOS传感器接口是一

16、种并行的CMOS图像传感器接口,SPCE3200处理器集成了CMOS传感器接口控制器,采用这种接口标准的CMOS图像传感器都可以通过该接口连接到SPCE3200处理器。通过对两种接口地比较,由于USBl1接口的传输速度最高为12Mbps,如果要实现320像素X 240像素RGB图像15帧/秒的传输则需要27648Mbps以上的接口速度才能够实现,使用USB接口的摄像头不可行,本设计中视频采集模块采用了CMOS图像传感器模块实现。视频文件的存储需要一个大容量的外部存储设备。SPCE3200处理器集成了NANDFlash控制器、SD卡控制器和USB控制器,外部存储设备可以从以上三种中选择,考虑到采

17、集的数据需要与计算机进行交换,所以SD卡和U盘可以用于本设计中视频数据存储。SD卡接口采用9针接口,使用命令方式完成数据的存储和读取,与USB接口相比较,驱动程序设计难度较低,本设计中数据存储设备采用SD卡实现。在视频压缩编码设计中,SPCE3200处理器在计算机性能上与S3C2410处理器相比还具有一定的差距,用处理器集成的MPEG4编码解码模块可以实现CIF模式下最高30帧/秒的编码速度,从性能上达到了视频实时压缩的要求。本设计中视频压缩编码采用SPCE3200处理器内部集成的MPEG4编码解码模块。MB:MacroBlock,搜索块DC:Direct Current,直流MV:Mean

18、Variation,平均差值DCT:Discrete Cosine Transform,离散余弦变换IDCT:Inverse Discrete Cosine Transform,离散余弦逆变换VLC:Variable Length Coding,可变长编码图2-1 SPCE3200 MPEG4的结构框图在视频输出接口上,SPCE3200处理器提供了LCD接口和TV编码接口,开发系统已经提供了一块320像素X240像素的LCD显示模块,因此显示输出可以首选LCD显示模块。通过对以上系统实现方案地分析,基于SPCE3200的视频采集存储系统可以从硬件和软件上确定设计方案,其中,系统硬件部分以SPC

19、E3200处理器为核心,前端视频数据采集采用视频模块实现,采集到的视频数据使用处理器集成的MPEG4编码器压缩后以AVI文件格式存储在SD卡上。图2-2 硬件结构图系统软件按照嵌入式操作系统、驱动程序、图形化用户界面和用户应用程序四个层次依次自下向上设计,软件结构如图2-3所示:图2-3 软件结构图3 SPCE200视频采集系统硬件平台分析设计3.1 SPCE3200处理器硬件结构SPCE3200处理器是由台湾凌阳科技公司推出的一款基于S+oare7内核的32位处理器,该处理器片内集成了MPEG4编码解码器、CMOS图像传感器控制器、SD卡控制器、LCD控制器、USB控制器、TV编码控制器等用

20、于多媒体处理的功能模块,具有强大的音频、视频、图像处理能力,适用于PDA、便携式播放器、监控设备、机器人等设备开发。SPCE3200处理器采用低电压、低功耗设计,核心工作电压为3V36V,核心频率为最高为162MHz,可以使用32768Hz实时时钟、具有12位ADC、16位DAC、UART、SPI、12C等通用接口,支持DRAM扩展,支持65536色(RGB565格式)隔行/逐行扫描视频输出,MPEG4编码器在CIF模式下可实现最高30帧/秒的视频编码。SPCE3200芯片的外观如图3-1所示。图3-1 SPCE3200芯片全貌3.2 视频采集系统模块的选取使用SPCE3200芯片进行系统开发

21、时,需要一套基本的SPCE3200最小系统开发平台。SPCE3200芯片本身集成了部分外设控制器,因此最小系统中仅仅需要扩展SDRAM、Flash作为SPCE3200片外存储设备即可实现SPCE3200最小系统核心。本设计中需要使用到的CMOS图像传感器模块、LCD显示屏、SD卡接口、手柄等就是在最小系统的基础上扩展后实现的。3.2.1 图像采集模块的选取视频采集系统的图像采集模块采用CMOS图像传感器来实现, CMOS图像传感器体积小,功耗低、集成度高。传感器的每个像素旁就直接连着ADC,信号直接放大并转换成数字信号。CMOS传感器通常集成专用的DSP芯片进行图像处理,并将图像数据转换为标准

22、格式后才再进行进一步的编码处理4。本设计选用的是OmniVision公司的OV7720图像传感器,如图3-2:图3-2 CSI 模 组该传感器集成了640像素X480像素的传感器阵列、图像处理器,具有RawRGB、RGB、YCbCr多种图像格式输出,支持VGA、QVGA和CIF模式,具有自动增益控制、自动曝光控制、自动白平衡控制、自动空白填充、自动背光补偿功能,VGA模式下最大图像传输速度可达60帧/秒,性能上可以达到实时视频采集的要求。SPCE3200内置的CMOS传感器接口CSI(CMOS Sensor Interface),CSI提供了与CMOS传感器的时钟、数据以及同步信号接口,相关引

23、脚有CSI_CKO(提供给CMOS图像传感器工作频率)、CSI_CKI(接收CMOS图像传感器的像素时钟输出)、CSI_HS (CMOS图像传感器的水平同步时钟)、CSI_VS(CMOS图像传感器的垂直同步时钟)、CSI(CMOS图像传感器的数据输出总线)。CSI共有31个寄存器,通过对这31个寄存器的设置可以实现对COMS传感器的控制和视频数据读取。CMOS摄像头工作原理如图3-3:图3-3 摄像头工作原理在初始化设备时需要对CMOS图像传感器的接口格式、时钟、像素时钟、输出图像格式进行初始化,并且设定图像缓冲区的地址,在启动CSI模块后,视频数据将按照设计的图像格式写入设定缓存中。CSI模

24、组和实验设备可以直接插接在一起,或通过排线连接在一起。3.2.2 显示模块的选取视频采集系统的图像显示模块采用LCD显示器来实现,LCD作为新一代的主流显示器以其具有低功耗、体积小、显示稳定等优点,在便携系统中得到广泛应用。本设计中使用的TFT-LCD显示模块是Giantplus公司的GPG3224012QS4液晶显示模块,该模块集成了Ll9322驱动模块,采用24位并行RGB数据格式,320像素240像素分辨率。SPCE3200的TFT-LCD接口可以支持多种输入格式的TFT-LCD,支持的分辨率为320像素240像素。TFT-LCD控制器相关引脚有:LCD_CLK(时钟信号)、LCD_AC

25、T(数据使能信号)、LCD_VS(垂直同步信号)、LCD_HS(水平同步信号)、LCD_Data15:0(16位数据总线)。TFT-LCD控制器包含有32个寄存器,通过对这32个寄存器的操作,是以实现TFT-LCD显示方式的控制。在初始化控制器时需要对LCD的时钟、数据格式、行信号和场信号以及显存的地址进行设置,启动控制器后,显存中的图像数据将按照设定的格式输出到TFT-LCD模块4。3.2.3 存储模块及文件系统选取数字安全(SD,Secure Digital)闪存卡,专门为满足安全使用、大容量、高性能音视频电子产品的存储配件而设计的。SD存储卡的通讯通过一种新式9针串行接口实现,可工作在一

26、个低电压范围内,接口中除了电源和地外还包括CLK(时钟信号)、CMD(双向的命令/响应信号线)和DAT0-DAT3(4位双向数据总线)。SD卡内部的存储区域是以扇区为单位管理,在对存储区域的数据进行擦除、写和读操作时,必须以扇区为单位进行,通常SD卡的每个扇区为512字节。在SPCE3200芯片中SD卡控制器共有10个寄存器,通过对这10个寄存器的操作,可使用SD卡控制器扩展SD卡存储设备。文件的存储需要文件系统的支持,为了保证SD卡中存储的视频文件可以在计算机上读取,必须要在SD卡上建立一个兼容的文件系统5。FAT(File Allocation Table)文件系统作为一种通用的文件系统常

27、用于嵌入式系统的应用程序,它是一种遵循POSIX规范的文件系统,在SPCE3200开发环境中提供了一个通用FAT文件系统。通过API函数的调用,能够完成文件系统初始化、存储设备的挂载与卸载、打开文件、关闭文件等丰富的文件操作,可以在嵌入式系统下实现与Windows操作系统相同的文件操作和管理。本设计中存储模块选取了SD卡,使用FAT文件系统,视频文件使用open()函数创建并打开一个视频文件,在视频数据读取并实现压缩编码后,将输出的帧数据直接写入打开的视频文件中,在采集完成后,使用close()函数关闭文件,完成一次视频采集和存储。UFAT的层次结构如图3-4所示:图3-4 文件系统层次结构3

28、.2.4 按键接口设计按键是用户与系统交互的重要方式,通过与GPIO(General Purpose I/O ports)连接,可以实现高低电平的输入。SPCE3200拥有79个I/O,其中有8个专门用作GPIO端口,其余I/O与模块复用。8个专用GPIO可以分为IOA和IOB二组,共有6个相关寄存器。可以实现GPIO的输入、输出、中断等功能的设置和数据的读写。4个按键分别与IOA0、IOAl和IOB0、IOBl相连,当有按键按下后,与之相连的GPIO的输入电平将发生改变,通过读取寄存器的值就可以知道具体的按键位置。4 视频采集系统的系统结构及软件平台的分析和设计4.1 编视频采集系统的系统结

29、构:图4-1 系统结构图4.2 编译仿真调试环境SPCE3200处理器开发环境采用S+corelDE。S+coreIDE提供了菜单栏、工具栏、Workspace窗口、编辑区、Output窗口。其中菜单栏里提供了编辑调试工程常用的功能选项;工具栏里提供了常用的工具和一些调试工具;Workspace窗口显示当前工程;编辑区用于编写程序;Output窗口用于看到工程的编译、链接、查询变量或者函数等信息。该集成开发环境可以安装在Windows XP操作系统上,支持GDB调试。为用户提供了强大支持,工作界面如图4-2所示:图4-2 S+core IDE工作界面4.3 嵌入式操作系统简介目前,国际上用于信

30、息电器的嵌入式操作系统有40种左右,常见的一类嵌入式操作系统如Palm OS、Windows CE和Linux等为集成内存管理单元MMU的处理器设计;另外的一类嵌入式操作系统如u CLinux、u C/OS-II、eCos等为没有集成内存管理单元MMU的处理器设计。因为SPCE3200处理器没有集成内存管理单元MMU,因此可运行在SPCE3200处理器的常用嵌入式操作系统主要包括以下几种如表4-1:表4-1 没有集成MMU嵌入式操作系统对比CLinuxC/OSIIeCos概述CLinux是一种开放源码的嵌入式Linux操作系统, uCLinux已经被成功地移植到了很多平台上,编译后的目标文件只

31、有几百KB,有优秀的网络功能,支持各种文件系统并提供了丰富的API函数。C/OSII是一种结构小巧,开源代码的实时操作系统。u C/OSII专门为嵌入式应用而设计,大部分代码是用C语言编写的,可以使用标准的C交叉编译器、汇编器、连接器等软件工具实现移植。eCos即嵌入式可配置操作系统,是实时嵌入式操作系统,代码量很小,适合于深度嵌入式应用,eCos源码开放、可配置、可移植、并提供了一个公共软件基础结构,使得嵌入式软件开发更加容易。特点u CLinux的文档十分欠缺,对于设计人员来说,往往需要通过分析源代码的方法解决移植中出现的问题,如果没有一定的开发经验,实现移植困难较大。u C/OSII在性

32、能上稍显不足,由于没有文件系统和驱动程序的支持,后续的程序开发将不得不直接面向硬件本身,程序设计难度较高eCos有一套配置系统工具,移植容易,eCos的系统层次清晰,配置方法简单,增加驱动模块容易。凌阳公司也提供了大量的驱动程序和应用程序支持。凌阳公司也针对本设计中所使用的开发平台提供了大量的驱动程序和应用程序支持,为系统开发提供了必要的技术支撑,在系统设计时,不需要花费大量的时间去移植操作系统和驱动程序,因此在本方案中选用eCos嵌入式操作系统。4.3.1 eCos简介eCos的高度可配置性是它的关键特性之一,开发人员可以通过使用ecos配置工具配置系统构件来满足应用的需求,从而实现源码行级

33、别的配置,即实现源代码中某一行或者是某几行的选择配置,除去所有不必要的功能模块,达到eCos的资源负载小,eCos配置工具如图4-3所示:图4-3 eCos配置工具界面4.4 eCos在SPCE3200上的移植eCos在SPCE3200上的移植主要包括了RedBoot的移植、应用程序的移植两部分。凌阳公司为开发者提供了一套基本的内核和组件,能够简单的完成体系结构抽象层和变体抽象层的移植,并且提供了部分主要硬件设备的驱动程序。4.4.1 RedBoot在SPCE3200上的移植SPCE3200在加电复位后,首先由RedBoot初始化硬件系统,然后将应用程序加载到RAM中完成应用程序的启动。Red

34、Boot下载通过S+core IDE开发环境。打开S+core IDE开发环境,选择Tools菜单下的“Easy Writer”,如图4-4所示:图4-4 Easy Writer菜单在弹出的EZWriter对话框中,选择Body为“SPCE3200”,如图4-5所示:图4-5 Easy Writer对话框点击“Download”按钮,等待下载成功,出现“Succeeded!”提示,就完成了redboot的移植。4.4.2 应用程序在SPCE3200上的移植首先需要在PC端建立一个TFTP Server,选择Tftpd32这款小软件来建立TFTP Server,设置redboot的IP地址和PC

35、的IP地址为同一网段,保证网络连通。其次在PC端配置TFTP Sever的目录为工程目录下的DEBUG文件夹下。IP地址设置为本机IP地址。最后用超级终端连接redboot系统,使用命令ip_addr,load,fis create这3个命令将应用程序烧录到Nor Flash中。过程如图4-6:图4-6 下载程序4.4.3 设置脚本实现应用程序脱机工作通过超级终端输入 “fconfig” 命令:将第一项的“Run script at boot: false”中的“false”改为“true”。然后输入“fis load dv,go”两条命令就可以实现脱机运行。过程如图4-7:图4-7 配置Re

36、dBoot启动脚本这样重启系统,在2s内没有按“Ctrl+C”组合键,系统便会自动执行DV应用程序了。4.5 视频采集存储程序分析和设计系统软件可以根据实现功能的不同划分为若干子模块。第一个子模块是视频采集编码模块,该模块使用OV7720图像传感器将图像信息进行采集,采集后的视频数据使用MPEG4编码器压缩后写入AVI文件中,存入SD卡中。同时TFT-LCD显示屏可以根据视频数据显示出视频。4.5.1 系统初始化设置硬件系统在上电复位后,各设备需要进行初始化,所有设备的初始化都是通过与其相关的控制器和寄存器的设置来实现的,具体初始化过程如下:1、LCD控制器需要初始化时钟配置寄存器、时钟选择寄

37、存器、接口选择寄存器、TFT控制寄存器、TFT帧数据格式选择寄存器、TFT输出数据顺序寄存器、TFT行扫描和场扫描寄存器、TFT起始位置寄存器等,相关的初始化代码如下:/设置接口选择寄存器,选择TFT AUO模式*P_LCD_INTERFACE_SEL=TFT_INTERFACE;/LCD模式时钟使能*P_LCD_CLK_CONF=C_LCD_RST_DIS|C_LCD_CLK_EN;/设置TFT-LCD数据模式*P_TFT_DATA_FMT=TFT_HOR_ACT;/TFT-LCD管脚输出数据格式*P_TFT_DATA_SEQ=TFT_DATA_SEQ;/设置TFT-LCD的行信号*P_TF

38、T_HOR_ACT=TFT_HOR_ACT;*P_TFT_HOR_FRONT=TFT_FOR_FRONT;*P_TFT_HOR_BACK=TFT_HOR_BACK;P_TFT_HOR_SYNC=TFT_HOR_SYNC;/设置TFT-LCD的场信号*P_TFT_VER_ACT=TFT_VER_ACT;*P_TFT_VER_FRONT=TFT_VER_FRONT;*P_TFT_VER_BACK=TFT_TFT_VER_BACK;*P_TFT_VER_SYNC=TFT_VER_SYNC;/设置TFT-LCD显示的起始位置*P_TFT_COL_WIDTH=TFT_WIDTH;以上代码包含于void

39、TFT_Init()函数中,完成以上寄存器初始化后LCD控制器将实现对TFT显示屏的控制,指定显示区域中的图像数据将会显示在LCD屏幕上。2、CSI控制器是OV7720的接口控制器,其初始化包括了CSI接口的选择、使能模块时钟、选择OV7720图像传感器传感器的时钟、设置CSI模块功能及输入输出诗句格式、设置CSI缓冲区,相关的初始化代码如下:/选择CSI的接口格式为:CCIR656*P_CSI_INTERFACE_SEL|=C_CSI_PORT_CCIR656;/使能时钟、时钟不复位*P_CSI_CSI_CLK_CONF=C_CSI_CLK_EN|C_CSI_RST_DIS;/选择OV772

40、0的时钟作为象素时钟*P_CSI_CLK_SEL=C_CSI_PIXELCLK_SRC;/设置CSI的缓冲区地址*P_CSI_BUFFER_SA1=FB1_Addr;*P_CSI_BUFFER_SA2=FB2_Addr;*P_CSI_BUFFER_SA3=FB3_Addr;/设置CSI的模式*P_CSI_TG_CTRL=CR_SET;以上代码包含于void CSI_Init0函数中,完成以上寄存器初始化后OV7720图像传感器即可开始视频数据采集,采集后的数据将存入指定的缓冲区中。3、SD卡控制器控制器的初始化包括SD卡接口设置、时钟设置、SD卡总线传输模式设置、中断设置,相关的初始化代码如下

41、:/选择SD卡使用的端口*P_NAND_GPIO_PULL=C_SD_PORT_SEL;/选择复用端口为SD接口*P_SD_INTERFACE_SEL=C_SD_PORT_SEL;/使能SD模块时钟*P_SD_CLK_CONF=C_SD_CLK_EN|C_SD_RST_DIS;/设置SD卡扇区为512字节*P_SC_MODE_CTRL=(51216)/设置SD数据总线为4bit*P_SD_MODE_CTRL=*P_SD_MODE_CTRL|C_SD_BUS_4BIT;/使能SD控制器*P_SD_MODE_CTRL=*P_SD_MODE_CTRL|C_SD_PORT_EN;/使能SD卡卡插入检测

42、中断*P_SD_INT_CTRL=C_SD_CARDDETECT_INTEN;/初始化*P_SD_COMMAND_SETUP=C_SD_74CLK_START;4、MPEG编码解码是SPCE3200所特有的一个模块,使用该模块可以在CIF模式下实现最高30帧/秒的编码,极大地提高了该处理器在视频处理方面的性能。用于控制编码器中所有模块的共有106个控制寄存器,所有寄存器的初始化操作包含于void mp4 _reset()函数中。4.5.2 视频采集编码和文件存储的实现CSI控制器初始化完成后图像传感器便立即开始视频采集,采集后的数据分别存放到原始图像的3个缓冲区中,将缓存中图像进行编码前,首先

43、需要设置P_MPEG4_SRAM EN寄存器,以开启MPEG模块内部SRAM,并设置P_MPEG4_MODE_CTRL1寄存器,选择MPEG4工作在编码模式,然后通过P_MPEG4_HOROFFSET_LOW 、P_MPEG4_HOROFFSET_HIGH 、P_MPEG4_VEROFFSET_LOW和P_MPEG4_VEROFFSET_HIGH四个寄存器设定源图像缓冲区和P_MPEG4_VLCBUFFER SAx(x:1,2,3)寄存器VLC编码数据缓冲区的起始地址。进行P帧编码时需要参考前一帧的图像,第一帧参考图像的缓冲区起始地址可以通过P_MPEG4_WRITEBUFFER SAx(x=

44、l,2,3)寄存器进行设置,之后的每一帧图像都以上一帧图像作为参考图像,两个参考图像缓冲区P_MPEG4_WRITEBUFFER_SEL和P_MPEG4_REFBUFFER_SEL分别用于读取上一帧图像的数据和写入当前帧的图像数据,两个寄存器的设定值需要在每完成一帧图像的编码时交换二者的数值。接下来设置P_MPEG4_WIDTH_LOW和P_MPEG4_WIDTH HIGH两个寄存器以确定视频图像的大小。同时,还需要设置P_FRAMEBUFFER_HSIZE寄存器的值,用以设定保存源图像的缓冲区宽度。一个I帧中的P帧数量可以通过设置P_MPEG4_PFRAME_NUMBER寄存器的内容自动在编

45、码固定个数的P帧后完成编码一个I帧的编码。量化的幅度可以通过设置P_MPEG4_IFRAME_QSCALE 和P MPEG4_PFRAME_QSCALE寄存器来调节,量化幅度越大,产生的压缩代码就会越小,图像的质量也就越差,因此这两个寄存器的设置需要平衡压缩代码的大小和图像质量。完成上述设置之后,设置P_MPEG4_COMPRESS_CTRL寄存器的MJPGENC位启动编码操作。编码是否完成可以通过读取P_MPEG4_COMPRESS_CTRL寄存器的EOFSTATUS位或读取中断信号来判断。编码完成后,读取编码数据长度寄存器P_MPEG4_VLCSIZE_LOW、P_MPEG4_VLCSIZ

46、E_MID和P_MPEG4_VLCSIZE_HIGH即可得到此次编码的长度。视频文件在编码前先创建,并将文件头信息预先写入文件头部,在编码的同时,每完成一个P帧的编码即向文件中写入一帧数据,当编码完成后,将此次编码的长度加入文件,然后关闭文件,即完成文件存储。以上功能由int MP4_Encode_withAVI_ToFromFile()函数实现,在其上层是void AVI_Encode()函数,主程序首先创建一个文件名,然后将文件名以参数的形式传递给AVI_Encode()函数,然后由int MP4_Encode_withAVI_ToFromFileoi函数完成编码和文件写入工作。AVI_E

47、ncode()函数代码如下:void AVI_Encode(char*fileName)int ret;int gnfpl;gSDCardInsert=1;gSDCardPresent=1;gSDCardWfiteProtect=0;fs_init0; /初始化文件系统ret=fs_mount(0); /挂载SD卡mp4_reset0; /初始化MPEG4模块g_nfpl=MP4_Open_File_SDCard(fileName,0_CREAT|O_WRONLY); /打开SD卡中文件MP4_Encode_withAVI_ToFromFile(g_nfpl);/AVI编码并保存在SD卡已打开的文件中

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号