基于ARM的图像采集处理系统设计
1
摘 要
随着现代制造工业中微细加工技术的不断发展,对微细零件表面形貌测量的要求越来越高,具有较高横向及纵向分辨率的激光并行共焦显微系统可以突破光学衍射的极限要求,对物体表面进行无损检测及三维形貌重构。为了进一步实现光学系统的便携化、智能化需求,具有体积小、成本低、专用性强等一系列独特优点的嵌入式系统,无疑有着极好的应用前景。
本文主要研制了一种基于ARM的便携式图像采集处理系统。论文主要以硬件设计和软件设计两大部分完成对系统的论述:硬件设计中,通过分析实际图像采集需求后总结设计的主要性能指标,确定了采集系统的主要控制平台和图像传感芯片,给出了总体的硬件设计方案,并在此基础上完成了SCCB控制模块、图像数据捕获模块、串口调试模块等硬件接口模块的设计;软件设计中,完成了CMOS的驱动程序、图像数据采集的驱动程序、Bayer图像数据转换算法等软件设计工作,最后论述了静态图像采集系统相关调试、实验工作,结果表明此嵌入式图像采集系统基本达到预期目标,证明了设计的合理性和正确性。
本系统一定程度上提高了低功耗微控制器图像采集的效率,将图像采集系统对硬件的依赖转化为设计人员的软件设计工作,相对于传统PC机+CCD的方案,不仅在体积、成本上具有明显优势,更体现出良好的柔性,便于今后的维护、优化。
关键词:ARM,LPC2478,图像采集,便携式
2
第一章 绪论
1.1 嵌入式系统概述 1.1.1 嵌入式系统
嵌入式系统被IEEE(国际电气和电子工程师协会)定义为“是一种用来控制、监视或者辅助仪器、机械操作的装置”。无论嵌入式计算机技术如何发展,都改变不了其“内含计算机”、“嵌入到对象体系中”、“满足对象智能化控制要求”的技术本质,因此可以将嵌入式系统定义为:“嵌入到对象体系中的专用计算机应用系统”。
嵌入式系统具有3个基本特点,即“计算机性”、“嵌入性”及“专用性”:
“计算机性”是目标系统智能化、自动化控制的根本保证,内含
微处理器的现代电子系统,方才能实现目标系统的计算机智能化控制能力;
“嵌入性”则是专指起源于微型机、嵌入到目标对象系统进而实
现对象体系智能控制的特性;
“专用性”是指为了贴合对象控制需求或特定环境要求下的软硬
件的裁剪性。
嵌入式系统在很多产业中都得到了广泛的应用,包括消费电子、国防军事、工业控制等领域应用的越来越广泛,从军用的导弹系统到民用的消费电子、智能家电、汽车,嵌入式系统无处不在。 1.1.2 嵌入式处理器
通用计算机处理器的系统拥有大量的应用编程资源、外设接口总线及先进的高速缓存逻辑,但也具有能源消耗大、产生热量高、成本尺寸大等不可回避的问题,因此诞生了为各种专用应用而设计的特殊目的处理器——嵌入式处理器,主要分为以下四类:
嵌入式微处理器:在应用中将微处理器装配在专门设计的电路板
上,只保留和嵌入式应用有关的母板功能而换来系统体积和功耗的大幅减小,在功能上保留和标准微处理器一致的同时更在工作温度、抗电磁干扰、可靠性等方面得到增强。
嵌入式微控制器:即单片机,就是将整个计算机系统集成到一块
芯片中,一般以某一微处理器内核为核心,芯片内部集成ROM、RAM、总线等必要功能和外设,是目前嵌入式系统工业的主流。 嵌入式DSP处理器:对系统结构和指令进行了特殊设计,使其适
1
合于执行DSP算法,编译效率较高,指令执行速度快,在数字滤波、FFT、谱分析等方面DSP算法大量进入嵌入式领域。 嵌入式片上系统:将通用处理器内核作为SOC设计公司的标准
库,用标准的VHDL等语言描述存储在器件库中,在定义出其整个应用系统并仿真通过后即可制作样品,大大优化了系统电路板体积、功耗和可靠性。
1.2 图像采集技术的研究现状 1.2.1 图像采集系统简介
图像采集是将图像信息光电转化成便于计算机传输、存储的数字信号的过程。图像采集术在现今应用最广泛的方向是视频应用,早在上世纪无声电影的出现便开启了视频应用的时代,近年来随着计算机技术、网络技术及图像处理、视频压缩等技术的不断发展很大程度上扩展了图像采集术在各种产业领域使用,并且面对多样化的应用方面出现了基于多种处理平台的图像采集系统。
总的来说图像采集系统由光电转换和信号处理两大模块组成: 光电转换模块:用来完成对成像光信号到电信号的转换,其中的
主要转换器件从最早的光电二极管到现在的CCD、CMOS传感器的时代;
CCD(电荷耦合器件)图像传感器,具有较高的信噪比和敏感
度,功耗相对CMOS较大(3个以上电源电压),主要应用于消费级数码产品;
CMOS(互补金属氧化物半导体)图像传感器,原本是计算机
系统内一种重要芯片,用来保存系统引导最基本的资料,后来被人们应用于影像传感器领域。前期无论在信噪比、动态范围等方面均不如CCD,主要应用于消费电子产业及高端图像传感领域。
信号处理模块:根据系统应用级别、领域的不同而呈现多样化的
趋势,如在工业检测方面多用AVR单片机,在民用级生产生活中多用图像采集卡和PC机,介于近年来嵌入式技术的快速发展,在工业领域、民生生活方面都有了广泛应用:
DSP:高工作频率(500Mhz以上)、内含乘法器、在系统结
构及指令进行特殊设计的DSP处理器在视频系统的应用尤其深入,不足之处则是相对较高的成本投入及较少的外设接口;
FPGA:在ASIC(特定用途集成电路)领域现今发展最为充分
2
的平台,用标准VHDL硬件设计语言便可实现对任何芯片的仿真制造,特别善于对数字信号的逻辑处理;
ARM:近年来随着工作频率和功能模块嵌入种类的不断提
升,及特有的小体积、低功耗、接口丰富的特点在图像采集乃至视频监控领域崭露头角。
1.2.2 嵌入式图像采集系统
CMOS图像传感器内部集成了A/D,且随着近几年的不断发展,分辨率也不断提高,集成化程度高、功耗低、体积小的特点更使得CMOS模块在消费电子产业中的手机、数码相机等大放异彩。结合了图像采集系统及嵌入式系统的利弊特点,人们逐渐将嵌入式技术应用于图像采集领域,充分将嵌入式技术的专用性、便携性等特征在图像采集方面得到体现,也带来了图像采集技术在工业计量、生物医学、多媒体等多领域上的飞速发展。
现今较为常用的嵌入式图像采集方案主要有以下3种: 1、图像传感器 + FPGA + SRAM 2、图像传感器 + DSP + SRAM 3、图像传感器 + ARM + SRAM
方案1利用FPGA(现场可编程门阵列)可以较为方便的实现图像采集中多种同步信号的逻辑处理;方案2中的DSP(数字信号微处理器)所具有的高运行速度、强大数据处理能力使之在图像采集领域最先得到发展;而相对于前面两个方案,ARM开始在图像采集领域并未得到很好的运用,但近几年尤其在工业检测、便携图像采集等方向越来越得到人们的重视,随着嵌入式制造工艺的飞速发展,ARM的工作频率、数据处理能力也得到大幅提高,加上其含有丰富的接口模块,非常适合用于在工业监控、检测方面。
3
第二章 系统硬件电路设计
2.1 图像采集系统硬件总体架构
光学系统 CMOS ARM开发板
图2- 1 系统工作流程图
图2-1为本图像采集系统的工作流程图。
并行共焦光学系统为系统光学成像源,图像捕获模块选用CMOS图像传感器OV7620,控制、处理显示模块选用ARM7开发板SMART2400,软件开发、实验调试平台用PC机完成。
由图可以初步了解嵌入式图像采集处理系统的整个流程:当光学系统成像完成,用CMOS图像传感器完成对图样的获取,图像数据经过缓冲后进入ARM开发板进行差值处理,进而直接在内部存储、显示。期间可通过串口连接到PC机进行调试、处理。系统总体结构框图如图2-2。
CMOS SCCB总线控制 ARM7TDMI 存储 显示模块 上位机 调试模块 数据采集模块 图2- 2 系统总体结构框图
2.2 系统核心器件概述 2.2.1 LPC2400结构特性 1. LPC2400系列ARM概述
LPC2400系列ARM为多种类型的通信应用提供了一个理想的解决方案。它包括1个10/100以太网媒体访问控制器(MAC)、1个带4KB终端RAM的USB全速设备/主机/OTG控制器、4个UART、2路CAN通道、1个SPI接口、2个同步串行端口(SSP)、3个IIC接口和1个IIS接口。同时还带有1个4MHz的片内振荡器、98KB RAM(包括KB局部SRAM、
4
16KB以太网SRAM、16KB GPDMA SRAM和2KB电池供电SRAM)以及1个外部存储器控制器(EMC)来支持上述的各种串行通信接口。这些特性使得本设备非常适用于通信网关和协议转换器。除此以外,还有许多串行通信控制器、多用途的时钟功能和存储器特性,包括有不同的32位定时器、增强型告诉GPIO。LPC2400系列ARM链接个GPIO管脚到基于硬件的向量中断控制器(VIC),这表示了这些外部输入可产生边沿触发终端。所有的这些特性使LPC2400系列ARM特别适用于工业控制和医疗系统。
LPC2400系列的主要特性有:
ARM7TDMI-S处理器,运行频率高达72MHZ。
512KB片上Flash程序存储器,具有在系统编程(ISP)和在应用
编程(IAP)功能。Flash程序存储器位于ARM局部总线,可用于高性能的CPU访问。
有双AHB总线系统(Dual AHB System)。这使得某一外设资源的
存取操作、程序执行操作可以和另一外设资源的存取操作和程序执行操作并行不悖,从而使得各高频外设能同时运转而不引起总线堵塞。
EMC支持诸如RAM、ROM和Flash的异步静态存储器设备以及
动态存储器设备(例如SDRAM)。
先进的向量中断控制器(VIC),支持多达32个向量中断。 仅LPC2470/78:LCD控制器,支持STN和TFT显示屏的显示
有专用的DMA控制器
可选择显示分辨率(最高可达1024×768像素)。 支持高达24位的真彩色模式 串行接口:
Ethernet MAC带有MII/RMII接口和相关的DMA控制器,这
些功能位于的AHB总线上
USB2.0全速双端口设备/主机/OTG控制器,带有片内PHY
和相关的DMA控制器
4个带小数波特率发生功能的UART。其中1个带有Modem
控制I/O,还有一个带有IrDA。除此之外,全部UART都带有FIFO
3个I2C总线接口(1个开漏管脚,另外2个为标准输出管脚) CAN控制器,带有两个通道
其他外设,包括10位AD、2个PWM模块、RTC等。 2. LPC2400系列ARM体系架构
5
LPC2400系列ARM是由支持仿真的ARM7TDMI-S CPU、用于紧密耦合并高速访问片内主要存储器的ARM7局部总线、连接到高速片内外设和外部存储器的AMBA(Advanced Microcontroller Bus Architecture) AHB[4]以及连接到其他片内外设功能的AMBA APB[5]构成的.LPC2400系列ARM始终按照小端字节顺序进行配置。
LPC2400系列ARM具有两个AHB总线,这使得以太网模块的操作不受其它系统操作的干涉:
JTAG 高速GPIO 160引脚 SRAM ARM7TDMI 系统 时钟 内部RC 振荡器 PLL 系统功能 VIC SRAM EMC AHB2 AHB桥 AHB桥 AHB1 AHB到 APB桥 LCD 外部中断 定时器 IIC AHB APB 图2- 3 LPC2400开发板功能模块图
第一个AHB成为AHB1,包含VIC(中断向量控制器)、GPDMA
控制器和EMC;
第二个AHB成为AHB2,它只包含以太网模块和一个相关的16KB
SRAM。另外,该处理器还提供一个总线桥接器,允许第二个AHB
6
作为AHB1的总线主机,还允许把以太网缓冲区的扩展空间延伸到片外存储器、或者是AHB1所在的未使用存储空间。
LPC2400系列ARM的结构框图见图2-3,由于开发板所含模块较多,只列出与本系统相关的模块。 2.2.2 OV7620图像传感器
OV7620是一款具有较高分辨率(0*480)、逐行/隔行扫描模式可选的CMOS彩色/黑白数字图像传感芯片。数字输出端口支持RGB RAW/YUV的8/16bpp数字格式输出。其中的SCCB编程模式可以实现对摄像头功能寄存器的控制。 1. OV7620内部结构
OV7620内部集成一个6*492分辨率的图像阵列,一个模拟信号处理器(mux),双10bit的A/D转换器,模拟视频多路复用器(analog processing),数字格式器(digital data formatter)及视频端口,SCCB接口及其寄存器。其中数字控制包括时序模块、曝光模块和白平衡。图像传感芯片OV7620的内部功能模块图如图2-6。
图2- 4 OV7620内部原理框图
OV7620正常工作时,图像的光电转化在1/3英寸的感光元件上完成,同时在图2-6左下方的视频时序发生模块包含的各种同步信号(如VSYNC、HREF、PCLK)控制模拟信号处理器,定时的对感光阵列下方的感应电路行列像素点进行捕获,与此同时框图右下方的受SCCB接口编程
7
控制的寄存器模块对模拟信号处理器的数据格式控制,可选进入不同数据输出格式的多路复用器(mx),进而通过数字端口(Y/UV通道)或模拟测试端口(VTO)输出。 2. OV7620图像采集方法
CMOS图像阵列的设计是建立在逐行传送的扫描场读出系统和带同步像素读出电路的电子快门之上[6]。电子曝光控制算法规范则是建立在目标图像亮度基础上,即当背景光线在图像传感器正常范围内时,一般结果会比较理想;而当景象光线接近极限值甚至超出,则应该通过AEC自动曝光控制器的黑白比调节并使之满足应用要求。
OV7620与输出图像数据相关的有4路同步信号:垂直同步信号VSYNC、水平参考同步信号HREF、像素时钟信号PCLK、奇偶场同步信号FODD。其中FODD一般用于隔行扫描中,二分频即为VSYNC,在本设计中不予考虑。
各同步信号时序如图2-7。一般的图像采集方法是依靠VSYNC、HREF和PCLK3个同步信号来提示MCU捕获有效的图像数据,大致的流程为:VSYNC用来判断一帧图像数据的开始,其上升沿表示为一帧图像的到来,之后的下降沿则提示外部电路一帧有效图像数据开始;HREF是判断一行有效像素数据的依据,高电平时Y和UV通道才输出有效数据,通过示波器观察,HREF与HSYNC(水平同步信号)频率及波形几近相同,选用HREF而非HSYNC来判断一行有效数据,是考虑到对OV7620修改HREF,还可更改OV7620输出图像的开窗大小,使采集系统具有更大的灵活性和适用性;PCLK则是判断一个像素数据有效的信号,其每个负跳沿驱动图像传感器更新图像数据并在正跳沿时稳定。
图2- 5 OV7620同步信号时序图
2.3 图像采集系统硬件模块设计
系统硬件设计分为以下模块进行: SCCB控制模块
8
图像数据采集模块
数据缓冲 同步信号捕获 存储显示模块
FLASH和SDRAM的存储接口 LCD显示 上位机串口调试模块
以下便分别对各个硬件模块进行论述。 2.3.1 SCCB控制模块
图2- 8 SCCB总线接口电路图
LPC2478开发板内部有IIC模块及高速GPIO引脚模块,完成对OV7620的控制有两种方式:一是直接用IIC模块接口来实现控制;二是将两个GPIO引脚连接SCCB总线,用软件模拟总线协议的方式完成对图像传感器的寄存器配置。由于SCCB与IIC的微细区别,即在读数据时SCCB多了一个总线停止的条件,直接用IIC模块读数据会出现谬误,所以选用第二中方法,即用GPIO软件模拟控制SCCB。
设计虽然摒弃了LPC2478的IIC模块控制的方法,但可以利用其中的IIC0接口(P0.27、P0.28引脚),因为LPC2478的GPIO只有这两个端口是开漏输出,符合整个IIC规范及SCCB协议。值得注意的是驱动SCCB的SCL、SDA应上拉2K~5KΩ的电阻,SCCB总线接口电路如图2-8。 2.3.2 图像数据采集模块
当ARM完成了对CMOS的寄存器配置后,正常上电的情况下,OV7620的同步信号端口VSYNC、HREF、PCLK及数据通道Y、UV便会连续不断的输出各种同步信号和图像数据,如果直接用ARM的GPIO口对Y、UV通道采集数据效率会非常低,采集一个像素点数据(8/16bit)会让ARM
9
浪费许多等待时间,因此还需要缓冲器件的帮助。
由于一般的MCU工作频率不会高于图像传感器太多,取得一个像素点数据这一线程算上中断响应、中断延时、程序执行的时间很难在兼顾采集时间的同时采满一帧图像,所以通常会采取一定的方法使CMOS与MCU相互匹配起来,达到最好的采集效率。根据系统设计目的,权衡采集速率及图像清晰度(与有效像素点个数成正比关系),本设计中选用专门用于图像数据缓冲的FIFO芯片AL422作为图像数据的缓冲,配合适当配置图像传感器的时钟控制模块,结合起来使图像像素点个数与采集时间达到最好的平衡。 1. 缓冲电路设计
图像数据缓冲部分的核心芯片AL422缓冲芯片是一款缓存容量大小为393,216字*8 bit的FIFO,内部集成的3M-bit的DRAM附带相应的控制器,使之具有友好的硬件接口。
器件特点:
384K(393,216)*8 bits FIFO结构
支持VGA,CCIR,NTSC,PAL和HDTV图像分辨率缓冲 的读/写操作(高速I/O数据传输速率) 高速一部串行通道 读/写周期:20ns 数据存取时间:15ns 输出使能控制 自刷新
5V或3.3V电源供电
图2- 6 缓冲电路原理图
10
缓冲电路原理图如图2-9所示,AL422缓冲器件接受和释放数据靠WCK、/WE、/WRST、RCK、/RE、/RRST引脚的相互配合完成。考虑图像采集系统可以对静态黑白、彩色图像均可进行采集,用两片AL422搭建成缓冲模块。其中WCK写周期引脚与OV7620的PCLK相连(此做法可以规避用效率不高的中断嵌套方式捕获高频PCLK而采集图像的方法,直接用PCLK触发FIFO锁存数据的方式很快采集到一个像素数据),TST测试引脚外接下拉电阻下拉,DEC脚接104pF的退耦电容。 2. 同步信号捕获电路设计
由上文可知对一帧有效图像的获取质量好坏直接与MCU捕获三个同步信号VSYNC、HREF和PCLK的效率,在硬件本身的范围内尽可能用合适的软硬件设计方法来完成。
VSYNC垂直同步信号为表征一帧图像数据的到来,且低电平有效,可以直接与ARM的一个外部中断引脚相接(LPC2400的向量中断控制器VIC有32个中断源,其中外部中断EINT0~T3占据14~17通道),此处选择与EINT0的p2.10连接;HREF水平参考同步信号用来表征一行有效图像数据的到来。
图2- 10 同步信号捕获原理图
为了避免使用采集效率较低的中断嵌套的方法,在充分了解同步信号捕获关系及缓冲芯片AL422读写触发时序端口的基础上,直接将HREF同步引脚取反输出给缓冲FIFO的/WE写使能脚(为了方面软件控制,设计将LPC2478一个GPIO P3.25和HREF相与后取反接FIFO),如此既使得ARM可以软件编程控制FIFO的写入数据使能端口,又可以在极短的时间(50ns内)内完成对HREF的触发响应;同样的,将PCLK像素时钟同步引脚与FIFO的WCK写使能端口,当PCLK高电平时则拉高WCK将有效图像数据写入FIFO。
11
值得注意的是,OV7620为5V/3.3V可选电源系统,为了与LPC2400的3.3V接口电压匹配应把DOVDD跳线跳在3.3V且在外部供给DOVDD3.3V电压。同步信号接口电路如图2-10。 2.3.3 存储、显示模块 1. 存储模块
程序在嵌入式设备中一般有两种加载(load)模式:一种是在配套软件开发平台的程序直接下载目标板的ROM或FLASH存储器中进行;另一种则是加载到目标板外接的SDRAM中运行。在本文的软件开发平台ADS(Arm Development Suit)中均是可选的,一般来说都是加载到LPC2478内部的Flash中。
Flash主要分为NOR Flash和NAND Flash两个类别。
从擦写速度上来看,NAND Flash的读写编程操作是以“页”为单
位进行,擦出操作以“块”为单位,且擦除的单元面积小、擦除电路少,因此拥有较快的编程、擦出能力;
从执行代码效率来看,NOR芯片内部执行应用程序可以直接在闪
存中进行而不必将代码读入系统RAM中,且传输效率高,在1~4MB应用很高的成本效益;
从容量和成本的角度来看,NAND Flash的单元尺寸将近是NOR
的一半,生产过程的简化更使其具有更高的性价比;
图2-11为SST39VF1601和HY57V561620CLT-HI与LPC2478的接口硬件图。
图2- 11 NOR Flash、NANDFlash与LPC2478接口
将LPC2478的EMC(片外存储器控制器)A[12:0]与SDRAM地址线
12
A0~A12相连,A[14:13]与SDRAM的Bank选择信号BA0、BA1连接用以对SDRAM的4个存储阵列进行选择,16位半字数据线与输出数据线DQ0~DQ15相连,片选位LnSDCS0、行列选通位LnSDRAS、CAS分别与SDRAM的nSCS、nSRAS、nSCAS连接,剩下的时钟信号位CLKOUT等也分别连好,如此便完成了ARM与SDRAM的硬件连接,可将SDRAM当做ARM的一个SRAM来适用,值得注意的是LPC2478的只有最多256MB的片外存储空间,不可超出。 2. 显示模块
设计选用了与LPC2478的LCD控制器适配的320*240 LCD屏,屏内集成了TFT液晶显示控制芯片SSD12的。SSD12是一款包含电源管理、液晶驱动、显示缓冲区等诸多功能于一身的单芯片液晶控制器,内部显示缓冲区拥有高速读写能力。
图2- 12 LCD模块与LPC2478接口电路图
图2-12接口电路采用的是RGB色彩空间5:6:5的接法。LPC2478的P1.26~P1.29、P2.13接SSD12的数据线D11~D15,作为B(蓝)分量数据通道;P1.20~P1.25接D5~D10作为G(绿)分量数据通道;P2.6~P2.9、P4.29接D0~D4作为R(红)分量通道;剩下的控制信号LCDPWR、LCDM及同步信号LCDFP、LCDLE、LCDFP对应的与SSD12相连。 2.3.4 UART串口通讯模块
为了实现图像采集系统与ARM及上位机的数据通讯,需要一种通用的总线接口实现,设计了UART串行通讯模块模块。针对PC机典型的9针RS-232C电平串行接口,模块选用了MAX232CWE芯片进行电平转换。
MAX232CWE芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+3.3V单电源供电,芯片分为三个部分:
第一部分是电荷泵电路,由1、3、4、5脚及电容C12、C13构成,
功能是产生正负12V两个电源提供给RS-232电平需要;
13
第二部分是两组数据转换通道用以串口总线数据的输入输出,
7~10脚为第一组数据转换通道,11~14为第二组通道,此处只用第二组。
第三部分是供电部分。
图2- 13 串行接口硬件电路图
RS-232C串口的接线方式有全串口连接(带Modem接口)和3线连接等方式,此调试通讯模块只需完成对所采集的图像帧数据传输到PC机上,只需采用较简洁的3线连接方式,硬件电路图如图2-13。
14
第三章 系统软件程序设计
3.1 系统总体软件设计
嵌入式图像采集处理系统是一个集合软硬件的嵌入式便携系统,对静态图像信息进行相对快速的捕获、存储和显示以及利用PC对数字图像进行分析处理是我们的目标。前一章节主要论述了系统的硬件芯片选择及外围接口电路设计,本章将对驱动这些硬件设施的软件设计做详细阐述。
为了方便系统的调试与维护,对应于硬件的模块设计,系统软件的设计按照模块化进行,总体的软件框图如图3-1:
初始化模块 图像采集模块 存储显示模块 上位机调试模块
图3- 1 系统总体软件功能框图
由图可以看出系统软件设计分为以下模块进行: 初始化模块
嵌入式ARM驱动bootloader的设计 CMOS驱动程序设计 图像采集模块
CMOS与ARM工作匹配 同步信号捕获的软件设计 处理显示模块
片外存储SDRAM驱动设计 Bayer图像数据的差值算法 数字图像的LCD显示 上位机调试模块
以下各小节将分别对上述模块的软件设计工作进行论述。
15
3.2 系统初始化模块的软件设计
图像采集系统的核心器件是控制芯片LPC2478及CMOS图像传感器OV7620,其中以FIFO缓冲芯片AL422及串口通信UART辅助图像的采集及调试。由于LPC2478开发板和OV7620本身具有极高的集成度,各自都可以视为一个小型系统,因此想让它们互相匹配工作的前提便是让其自身先“做好准备”,即初始化。 3.2.1 LPC2400的bootloader软件设计
人们在使用PC机时,开机后的一系列画面比如处理器、各种外围硬件设备的初始化操作由BIOS(Basic Input/Output System)来完成,同样的对于嵌入式系统,需要相似的软件驱动来在开始任务前对所配备的硬件设施进行准备,但考虑成本、MCU性能等方面因素不能直接用像BIOS那种固件程序,而是用一种简化的代码来实现相似功能操作,成为Bootloader,即系统的引导加载程序。
Bootloader的作用主要包括以下7条: 分配中断向量表 初始化存储器系统 初始化堆栈
初始化有特殊要求的硬件模块 初始化用户程序执行环境 切换处理器工作模式 调用主应用程序 3.2.2 CMOS驱动程序设计
考虑到图像采集现场光线明暗变化、后续处理平台的可移植性等现实因素,需要对OV7620的内部寄存器参数进行修改,因此必须通过SCCB总线对其进行寄存器初始化。 1. SCCB总线的数据传输
SCCB总线上传输一个数据位需要遵循以下规范:
数据的有效性:SIO_D线上的数据必须在SIO_C高电平器件保持
稳定
起始和停止信号:在SCCB协议中,唯一违反上述数据有效规范
的是起始、停止信号
起始:SIO_C高电平时,SIO_D从高电平变为低电平 停止:SIO_C高电平时,SIO_D从低电平变为高电平
16
应答:发送到SIO_D线上的每个字节必须是八位,每个字节后必须跟一个应答位。应答的时间脉冲器件,发送器释放SIO_D(高),之后接收器必须将SIO_D拉低。
SCCB总线上每传输一个位数据必须产生一个时钟脉冲。主机产生起始信号后,发送的第一个字节为寻址字节,从最高位(MSB)到最低位开始传输,且寻址字节的最低位(LSB)为报文方向位,“0”表示主机写从机,“1”表示读,如图3-2所示:
MSB LSB R/W 从地址 图3- 2 首字节的位数据格式
SCCB总线中一个基本的数据传输单元称为“相”(phaes)。下面列出数据读写时的三种基本单元:
三相写周期 两相写周期 两相读周期
这三种基本读写单元其实很相像,两相写为三相写周期的子集,两相读则一般跟在写周期后紧接着进行,图3-3给出三相写周期的示意图。
图3- 3 三相写周期数位图
不难看出,首字节的1~7位为从机ID号,具体不同器件可在OV公司官网上查看得知(OV7620的ID号“写”为0x42,“读”为0x43),0位为读写控制位,此时为0(写);第二字节是子地址,即目标寄存器地址;第三字节为修改目标的8位寄存器的值。如此便可以对的在SCCB总线上找到目标从机中目标寄存器的值进行配置。值得注意的是:
两相读之前一定要进行一次三相或两相写的操作,否则读操作找
寻不到目标寄存器
每位字节后都有一个数据应答位NA,NA是此次传输数据的接收
机给予发送机的应答,一般为发送机将SIO_D线闲置(拉高),在应答的时间脉冲里,总线会判断接收机是否拉低SIO_D线,是则
17
为应答成功继续传输,否则总线停止。
SCCB没有重复起始概念,一次操作(写或读)后一定要加总线停
止指令。
图3-4、3-5分别是对从机ID号为X、目标寄存器号为Y分别进行读写操作的软件流程图。
写操作 发送起始信号 读操作 发送起始信号 对从机寻址,R/W=0 对从机寻址,R/W=1 N SIO_D是否拉低 Y 对从寄存器寻址 SIO_D是否拉低 Y 发送1字节数据 N N SIO_D是否拉低 Y 发送1字节数 SIO_D是否拉Y 发送非应答信号 N N SIO_D是否拉低 Y 发送停止信号 发送停止信号 主机操作 从机操作
图3- 4 SCCB读写数据软件流程图
2. OV7620的SCCB初始化
SCCB总线中的SIO_D的预充电(pre-charge)时间为15ns,充电保持时间为15us,所以延时程序不易设置过长,此处设置7us。在充分遵守SCCB协议的基础上编写配置OV7620目标寄存器的软件代码,图3-5、3-6是写入和读出寄存器值的软件流程图。
18
发送起始信号 发送寄存器号字节 N 从机是否应答 SIO_C和D电平是否正常 Y 发送从机ID号字节 从机是否应答 从机是否应答 Y 总线停止 N Y Y 发送寄存器值字节 N N
图3- 5 对OV7620内寄存器写操作
发送起始信号 总线停止 发送从机ID号字节 N SIO_C和D电平是否正常 Y 发送从机ID号字节 拉低SIO_D(确认) 读一字节 读一字节 N 从机是否应答 拉高SIO_D(非确认) Y 发送寄存器号字节 总线停止 从机是否应答
图3- 6对OV7620内寄存器读操作
19
3.3 图像采集模块的软件设计
采集一帧图像数据的一般流程如图3-7。
初始化 使能PCLK对应的定时器捕获脚中断 使能VSYNC对应的外部中断0 PCLK正跳沿? N VSYNC负跳沿? Y 使能HREF对应的外部中断1 Y 是否采完一行? Y N HREF高电平? Y 一帧图像采集完 是否采完一帧? N Y 采集一个像素点 N N
图3- 7 一帧图像采集流程图
图3- 8 AL422写数据时序图
以写入AL422数据为例,如图3-8为ALL422写数据时的时序图,不难看出当/WE正跳沿表征了写入数据的开始,而后每遇到一个WCK正跳沿便出发DI0~7写入AL422一字节数,二者的逻辑关系与HREF和PCLK几乎相同。如此便利用了AL422高频率响应的写入时序信号WE和WCK
20
完成了对HREF和PCLK的捕获。整个写FIFO的软件流程设计如图3-8。
开始 使能VSYNC对应的外部中断0 N PCLK有效? N VSYNC有效? Y N Y WCK有效 HREF有效? Y WEE置位,使能FIFO的写使能WE 写入8位数据
图3- 9 写入AL422 8位数据
将FIFO数据读入LPC2478则较为容易,直接把AL422与读出操作有关的两个时序信号RRST和RCK与GPIO相连,用软件模拟高低电平的方式即可获得缓冲后的图像数据,将8位数据写入AL4228流程如3-9所示。 3.4 处理显示模块的软件设计 3.4.1 片外SDRAM存储驱动设计
由于LPC2400开发板拥有SDRAM控制器,因此硬件电路连接正确后,只需要初始化外部总线和配置好SDRAM控制器各项参数,进行初始化后就可以把SDRAM当做SRAM来适用了操作方法如图3-10: 1. 配置LPC2400的外部总线
由于系统上电后,LPC2400的管脚会恢复默认设置,因此要使用它来控制SDRAM芯片,必须对其管脚进行相应配置,以下是相应程序代码:
PINSEL6 = 0x55555555; //D0~D15 PINSEL8 = 0x15555555; //A0~A14 PINSEL9 |= 0x00040000; //nWE
PINSEL5 = 0x05010115; //配置nCAS,nRAS,nDYS,nCKEOUT0 EMCControl |= 0x10; //禁止镜像 2. 配置SDRAM控制器各种时序参数
21
查看HY57V561620的数据手册,可以清楚看到其各项的动态演示参数要求,在此不再赘述。 3. 初始化SDRAM
SDRAM操作方法 配置外部总线 根据SDRAM芯片数据手册配置参数 SDRAM初始化 当做SRAM使用
图3- 10 SDRAM操作方法
初始化过程主要分为以下几个步骤:
时钟稳定后,SDRAM要求至少等待100us,期间可以发出NOP
命令
执行一条对所有Bank进预充电的命令 至少等待tRP个时钟周期
执行8次自动刷新命令,刷新周期为tRFC 设置模式寄存器MR(Mode Register)
设置完MR后,等待tMRD个时钟周期后,SDRAM正常工作 代码程序部分如下:
/*使能时钟,CLKOUT运行输出控制时钟,发送NOP命令*/ EMCDynamicControl = 0x0000083; DelayNS(2);
/*发送全部预充电命令,自刷新模式*/ EMCDynamicControl = 0x00000103; DelayNS(2);
/*自动刷新周期值设为2*16=32个CCLK*/ EMCDynamicRefresh = 0x00000002;
for(i = 0;i < 0x80;i ++); //等待128AHB时钟周期,相当于8次刷新
22
3.4.2 数字图像的LCD显示
LPC2478板内集成的LCD控制器完成了像素编码数据格式的转换,并为多种彩色和单色LCD屏接口提供了3种通用同步信号以驱动LCD:
1. RGB色彩空间的显示数据
2. 相应的同步时序信号,包括垂直同步、水平同步和像素同步信号 3. 对LCD的各种使能控制信号
因此只需对其内部的各个控制寄存器初始化配置后便可以较为简便的对LCD屏进行驱动显示。LCD控制器的初始化是对其内部的各功能模块的软件配置工作,包括:
引脚模块的初始化,对数据引脚、控制引脚在LPC2478引脚连接
模块的初始化配置;
时序控制器的初始化,用以产生对应LCD屏尺寸的水平、垂直同
步信号,通过二位扫描的方式显示图像;
显示屏时钟发生器的初始化,驱动LCD模块的二位扫描速率; LCD控制寄存器的初始化,包括对LCD电源使能、选择LCD屏
种类和位深、LCD使能等控制信号的初始化。
在完成对LCD控制器上述功能模块软件初始化后,即可叫容易的实现图像在LCD上的显示,图像显示的程序流程图如图3-11所示:
开始 设置LCD时序 引脚选择并使能LCD功能 设置LCD极性和时钟信号 设置上屏基址 选择LCD类型及使能信号 禁能LCD控制和数据信号 禁止LCD中断 设置像素时钟为8MHz 延时后,使能数据输出 设置像素时钟为8MHz 图像显示
图3- 11 LCD图像显示程序流程图
23
参考文献
[1]王道乾 刘定智 文俊浩,基于ARM 处理器的MP3播放器分析与实现,计算机工程与设计[L],2007,28(7):1595~1597
[2]王 奇,基于嵌入式linux的多媒体音乐播放器的设计与实现,信息技术[L],2009,(6):102~104
[3]王建民 张宏壮,基于Qt的嵌入式媒体播放器系统的设计,微计算机信息(嵌入式与SOC)[L],2008,24(7-2):~66
[4] 周彩宝,刘应学,ARM体系以及AMBA总线分析[J].计算机工程,2003, [5] 周彩宝,刘应学,ARM体系以及AMBA总线分析[J].计算机工程,2003, [6] 嵌入式机器视觉系统的研究与开发
[7] 王田苗.嵌入式系统设计与实例开发.北京:清华大学出版社,2003.10 [8] 马忠梅、马广云等.ARM嵌入式处理器结构与应用基础.北京:北京航空航天大学出版社,2002.1
[9]孙玉芳、袁文菊、张海峰.嵌入式设计及Linux驱动开发指南-基于ARM9处理器.北京:电子工业出版社,2005.2
[10] 黄素贞.基于CPLD技术的CMOS图像传感器高速采集系统.现代电子技术,2004.4
[11] OmniVision Serial Camera Control Bus(SCCB)Functional Specification,Last Modified:26 February 2003 Document Version:2.1
[12] 王庆友.图像传感器应用技术 北京:电子工业出版社,2003.9 p224 [13] 黄素贞等.黑白CMOS图像传感器OV9120的原理及应用.国外电子元器件,2004.12
[14] 李飚等.CMOS图像传感器芯片OV5017及其应用.电子技术应用,2001.4
[15] 侯雨石凳.数码相机CMOS图像传感器的特性参数与选择.光学技术,2003.3
24
25
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- azee.cn 版权所有 赣ICP备2024042794号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务