控制微处理器读取摄像头数据的方法及摄像头控制器.pdf

上传人:b*** 文档编号:1042706 上传时间:2018-03-27 格式:PDF 页数:20 大小:749.98KB
返回 下载 相关 举报
摘要
申请专利号:

CN02121212.0

申请日:

2002.06.10

公开号:

CN1464407A

公开日:

2003.12.31

当前法律状态:

授权

有效性:

有权

法律详情:

专利申请权、专利权的转移(专利权的转移)变更项目:专利权人变更前权利人:联想(北京)有限公司 地址: 北京市海淀区上地信息产业基地创业路6号 邮编: 100085变更后权利人:联想(北京)有限公司 地址: 北京市海淀区上地创业路6号 邮编: 100085; 联想移动通信科技有限公司 地址: 厦门市火炬高新区信息光电园岐山北二路 邮编: 361006登记生效日:2008.6.27|||授权|||实质审查的生效|||公开|||实质审查的生效

IPC分类号:

G06F13/24

主分类号:

G06F13/24

申请人:

联想(北京)有限公司;

发明人:

刘鹏

地址:

100085北京市海淀区上地信息产业基地创业路6号

优先权:

专利代理机构:

北京德琦知识产权代理有限公司

代理人:

张颖玲

PDF下载: PDF下载
内容摘要

本发明公开了一种控制微处理器读取摄像头数据的方法,关键在于:在摄像头和微处理器之间设置一个摄像头控制器,当摄像头向微处理器传送数据时,先将数据输出到摄像头控制器中,再由摄像头控制器通过中断方式控制微处理器从其内部读取数据。本发明还同时公开了一种实现上述方法的摄像头控制器,连接于摄像头和微处理器之间。采用本发明的摄像头控制器和控制方法,能缓存摄像头的数据并控制数据的输出,可在增加极少成本的前提下,降低微处理器的数据访问频率,充分合理地利用微处理器的处理能力,进而大幅度的提高系统性能。

权利要求书

1: 1、一种控制微处理器读取摄像头数据的方法,其特征在于:在摄像头 和微处理器之间设置一个摄像头控制器,当摄像头向微处理器传送数据时, 先将数据输出到摄像头控制器中,再由摄像头控制器通过中断方式控制微 处理器从其内部读取数据。 2、根据权利要求1所述的方法,其特征在于该方法进一步包括:摄像 头控制器预先在其内部定义一段固定的内存空间来存储摄像头的输出数 据。 3、根据权利要求1或2所述的方法,其特征在于该方法进一步包括: 摄像头控制器实时判断帧信号、行信号和列信号的变化,如果帧信号变化 指示新的帧开始,则摄像头控制器设置当前行和列的值为0;如果行信号变 化指示新的行开始,则摄像头控制器设置当前列的值为0,同时行的值加1; 如果列信号变化指示新的像素点开始,则摄像头控制器设置当前列的值加 1,且读取摄像头的输出数据,存储于摄像头控制器预先设定的内存空间中。 4、根据权利要求3所述的方法,其特征在于该方法进一步包括:摄像 头控制器读取摄像头的输出数据后,先去掉每个10位数据的最低两位,再 将每四个去掉低两位的数据组合为一个32位的数据,存储于摄像头控制器 预先设定的内存空间中。 5、根据权利要求1所述的方法,其特征在于该方法进一步包括:当摄 像头控制器设定的内存中所存储的摄像头输出数据量达到该设定内存总量 的一半时,摄像头控制器产生半容量中断HALF_IRQ给微处理器。 6、根据权利要求1所述的方法,其特征在于该方法进一步包括:当摄 像头控制器设定的内存中所存储的摄像头输出数据量等于该设定内存总量 时,摄像头控制器产生满容量中断FULL_IRQ给微处理器。 7、根据权利要求5所述的方法,其特征在于当微处理器响应半容量中 断HALF_IRQ进入中断服务流程时,该方法进一步包括: a
2: 设置数据读取的内存起始地址为0; b1.微处理器从摄像头控制器设定的内存中读取数据,读完后当前内存 地址加1; c1.判断当前内存地址的值是否等于摄像头控制器所设内存总量的一 半,如果不是,则返回步骤b1;否则,将摄像头控制器设定的内存空间等 分为两部分,然后把前半段内存地址与后半段内存地址进行交换。 8、根据权利要求6所述的方法,其特征在于当微处理器响应满容量中 断FULL_IRQ进入中断服务流程时,该方法进一步包括: a
3: 设置数据读取的内存起始地址为0; b2.微处理器从摄像头控制器设定的内存中读取数据,读完后当前内存 地址加1; c2.判断当前内存地址的值是否等于摄像头控制器所设内存总量,如果 不是,则返回步骤b2;否则,系统读取一个错误标志,将与该错误数据相 关的数据丢弃。 9、一种摄像头控制器,用于设置在摄像头和微处理器之间,控制微处 理器从摄像头读取数据,其特征在于该控制器包括: 数据分析读取模块,用于判断摄像头信号的变化,并根据信号变化设 置参数值或读取图像数据; 缓存模块,用于缓冲存储数据分析读取模块从摄像头读取的图像数据; 中断产生模块,用于判断缓存模块的当前存储状态,并根据当前存储 状态产生中断给微处理器,控制微处理器从其内部读取数据。 10、根据权利要求9所述的摄像头控制器,其特征在于:所述的缓存 模块为摄像头控制器预先在其内部设定的一段固定的内存空间。 11、根据权利要求9所述的摄像头控制器,其特征在于:所述的摄像 头信号为帧信号、或行信号、或列信号。 12、根据权利要求9所述的摄像头控制器,其特征在于:所述的参数 值为当前行的值、或当前列的值。 13、根据权利要求9所述的摄像头控制器,其特征在于:所述的当前 存储状态为缓存模块中存储的数据已达到总容量的一半,或缓存模块容量 已满。 14、根据权利要求9或13所述的摄像头控制器,其特征在于:所产生 的中断为半容量中断HALF_IRQ,或满容量中断FULL_IRQ。 15、根据权利要求9所述的摄像头控制器,其特征在于:摄像头与摄 像头控制器之间通过总线方式连接。 16、根据权利要求9所述的摄像头控制器,其特征在于:微处理器与 摄像头控制器之间以直接存储器存取(DMA)方式连接。

说明书


控制微处理器读取摄像头数据的方法及摄像头控制器

    【技术领域】

    本发明涉及摄像头数据读取技术,尤指一种控制微处理器读取摄像头数据的方法及摄像头控制器。发明背景

    随着电子和通信技术的飞速发展,人们对各类电子系统实时通信功能的要求越来越高,因此,一些系统引进了一系列的通信功能,例如:蓝牙和GSM以及802.11b等等,在这些系统上大都要引进图像的功能,因而,增加摄像头的要求将是非常必要的。

    目前,在引进摄像头的过程中,通常引进CMOS摄像头,该CMOS摄像头与微处理器的连接关系如图1所示,CMOS摄像头11通过IO模拟方式与微处理器12相连,微处理器12不断查询IO的状态,识别CMOS摄像头11输出信号的变化情况,以便进一步处理。

    对于常用的互补金属氧化物半导体(CMOS)摄像头而言,参见图2所示,CMOS摄像头的输出接口主要输出以下几种信号:CMOS摄像头工作时需要的时钟信号MCLK、I2C串行总线的时钟SCLK、I2C串行总线的数据SDATA、CMOS摄像头的输出数据ADC[9:0]、CMOS摄像头的点时钟HCLK、CMOS摄像头的行时钟VCLK以及CMOS摄像头的帧时钟SOF。其中,ADC[9:0]表示由模拟转化成的数字数据,10个比特位中3位代表红色,3位代表蓝色,4位代表绿色。图2给出了摄像头工作时上述信号的变化情况,从图中可以看出,摄像头工作时,通过HCLK信号地变化可输出每一个像素红绿蓝的数值,其中的col.48、col.49等即表示第48、49行等;当HCLK信号变化到摄像头所设定的每一行的像素值时,VCLK发生变化,指示下一行开始;当VCLK信号变化到摄像头所设置的每一列的像素值时,SOF信号发生变化,指示新的帧开始,如此周而复始,摄像头就能够正常工作了。

    由于现有的CMOS摄像头与微处理器之间没有摄像头控制器,一般微处理器采用通用输入输出(GPIO)方式来完成信号变化的处理。如图3所示,当系统初始化时,系统首先要设置SOF、HCLK、VCLK和ADC[9:0]的初值,即:初始化这些信号。当摄像头正常工作时,微处理不断查询IO的状态,微处理器对信号的处理过程如图4所示:

    a1.判断当前采集的信号中,SOF信号是否指示新的一帧开始,如果是,则设置当前行和列的值为0,进入步骤b1,否则,直接进入步骤b1;

    b1.判断当前采集的信号中,VCLK信号是否指示新的一行开始,如果是,则设置当前列的值为0,且行的值加1,进入步骤c1,否则,直接进入步骤c1;

    c1.判断当前采集的信号中,HCLK信号是否指示新的像素点开始,如果是,则读取ADC[9:0]上的数据到指定的为存储该行列像素准备的微处理器内存中,设置当前列的值加1,返回步骤a1,否则,直接返回步骤a1。

    从上述处理过程可以看出,由于微处理器中没有集成摄像头控制器,微处理器要通过查询IO状态来采集摄像头的输出信号,那么,当该CMOS摄像头像素较多时,微处理器必须不断的进行扫描输入,才能不断的读取该CMOS摄像头上的数据。由于CMOS摄像头的工作方式为连续工作的,因此为了保证不使数据丢失,微处理器必须将大部分性能都消耗在CMOS摄像头的数据读取上,这对于本来性能就不是很高的嵌入式微处理器来说,几乎不能够再完成其它任务了,如此使CMOS摄像头的应用有很大困难。但如果直接把CMOS摄像头集成到微处理器上,又会使微处理器的性能大大降低。另外,有些微处理器中没有设置CMOS或其它类摄像头的接口,更无法为该微处理器系统引入摄像头。发明内容

    有鉴于此,本发明的主要目的在于提供一种控制微处理器读取摄像头数据的方法,使其在增加极少成本的前提下,降低微处理器的数据访问频率,充分合理地利用微处理器的处理能力,进而大幅度的提高系统性能。

    本发明的另一目的在于提供一种摄像头控制器,使其能缓存摄像头的数据并控制数据的输出,进而提高整个系统的处理性能。

    为达到上述目的,本发明的技术方案是这样实现的:

    一种控制微处理器读取摄像头数据的方法,其是在摄像头和微处理器之间设置一个摄像头控制器,当摄像头向微处理器传送数据时,先将数据输出到摄像头控制器中,再由摄像头控制器通过中断方式控制微处理器从其内部读取数据。

    该方法进一步包括:摄像头控制器预先在其内部定义一段固定的内存空间来存储摄像头的输出数据。

    在上述方法中,摄像头控制器实时判断帧信号、行信号和列信号的变化,如果帧信号变化指示新的帧开始,则摄像头控制器设置当前行和列的值为0;如果行信号变化指示新的行开始,则摄像头控制器设置当前列的值为0,同时行的值加1;如果列信号变化指示新的像素点开始,则摄像头控制器设置当前列的值加1,且读取摄像头的输出数据,存储于摄像头控制器预先设定的内存空间中。其中,摄像头控制器读取摄像头的输出数据后,先去掉每个10位数据的最低两位,再将每四个去掉低两位的数据组合为一个32位的数据,存储于摄像头控制器预先设定的内存空间中。

    在读取数据的同时,当摄像头控制器设定的内存中所存储的摄像头输出数据量达到该设定内存总量的一半时,摄像头控制器产生半容量中断HALF_IRQ给微处理器。当摄像头控制器设定的内存中所存储的摄像头输出数据量等于该设定内存总量时,摄像头控制器产生满容量中断FULL_IRQ中断给微处理器。

    在微处理器侧,当微处理器响应半容量中断HALF_IRQ进入中断服务流程时,该方法进一步包括:

    a1.设置数据读取的内存起始地址为0;

    b1.微处理器从摄像头控制器设定的内存中读取数据,读完后当前内存地址加1;

    c1.判断当前内存地址的值是否等于摄像头控制器所设内存总量的一半,如果不是,则返回步骤b1;否则,将摄像头控制器设定的内存空间等分为两部分,然后把前半段内存地址与后半段内存地址进行交换。

    当微处理器响应满容量中断FULL_IRQ进入中断服务流程时,该方法进一步包括:

    a2.设置数据读取的内存起始地址为0;

    b2.微处理器从摄像头控制器设定的内存中读取数据,读完后当前内存地址加1;

    c2.判断当前内存地址的值是否等于摄像头控制器所设内存总量,如果不是,则返回步骤b2;否则,系统读取一个错误标志,将与该错误数据相关的数据丢弃。

    本发明还提供了一种摄像头控制器,用于设置在摄像头和微处理器之间,控制微处理器从摄像头读取数据,摄像头与摄像头控制器之间通过总线方式连接,微处理器与摄像头控制器之间以直接存储器存取(DMA)方式连接;该控制器包括:

    数据分析读取模块,用于判断摄像头信号的变化,并根据信号变化设置参数值或读取图像数据;

    缓存模块,用于缓冲存储数据分析读取模块从摄像头读取的图像数据;

    中断产生模块,用于判断缓存模块的当前存储状态,并根据当前存储状态产生中断给微处理器,控制微处理器从其内部读取数据。

    其中,所述的缓存模块为摄像头控制器预先在其内部设定的一段固定的内存空间。所述的摄像头信号为帧信号、或行信号、或列信号。所述的参数值为当前行的值、或当前列的值。所述的当前存储状态为缓存模块中存储的数据已达到总容量的一半,或缓存模块容量已满。所产生的中断为半容量中断HALF_IRQ,或满容量中断FULL_IRQ。

    由上述方案可以看出,本发明的关键在于:在原有的摄像头和微处理器之间增加一个摄像头控制器,用来缓存和控制图像数据,以减轻微处理器的负担,提高系统的性能。

    因此,本发明所提供的控制微处理器读取摄像头数据的方法及摄像头控制器,由于增加了摄像头控制器,在微处理器工作时,摄像头先将数据存储到摄像头控制器中,存储到一定数量时,产生中断,微处理器再通过DMA方式,统一读取。如此,可使微处理器从繁琐的查询、判断、移位操作中解脱出来,减轻了微处理器的负担,降低了微处理器的访问率,更有利于微处理器对自身处理能力的合理分配,进而大幅提高系统性能,提高系统效率。而且,以成熟的可编程芯片作为摄像头控制器,只需要增加很小的成本,相对于系统性能的提高,性能价格比也提高了。附图说明

    图1为CMOS摄像头工作时输出信号的时序图;

    图2为现有技术中CMOS摄像头与微处理器的连接关系示意图;

    图3为现有技术中微处理器处理CMOS摄像头信号的初始化流程图;

    图4为现有技术中微处理器处理CMOS摄像头信号变化的流程图;

    图5为本发明摄像头控制器与摄像头和微处理器的连接关系示意图;

    图6为本发明摄像头控制器处理摄像头信号的工作原理图之一;

    图7为本发明摄像头控制器处理摄像头信号的工作原理图之二;

    图8为本发明摄像头控制器处理摄像头信号的工作原理图之三;

    图9为本发明摄像头控制器中中断产生的原理图之一;

    图10为本发明摄像头控制器中中断产生的原理图之二;

    图11为本发明微处理器对HALF_IRQ中断服务的流程图;

    图12为本发明微处理器对FULL_IRQ中断服务的流程图。具体实施方式

    下面结合附图及具体实施例对本发明再作进一步详细的说明。

    为了解决现有技术中的问题,本发明为摄像头制作了一个控制器,如图5所示,在摄像头51和微处理器52之间增加一个摄像头控制器50,该摄像头控制器50设置有两个接口,一个面向摄像头51,另一个面向微处理器52,使得摄像头控制器50成为摄像头51与微处理器52之间的纽带,用来缓存大量的图像数据并控制其向微处理器的输出。该摄像头控制器50中主要包括三个部分:数据分析读取模块、缓存模块和中断产生模块,其基本的工作原理就是:摄像头控制器50的数据分析读取模块实时判断摄像头51中帧信号、行信号和列信号的变化,并根据信号变化设置当前行列的值或读取图像数据;然后将从摄像头51读取的图像数据缓存于缓存模块中;当摄像头控制器50的中断产生模块检测到所存图像数据量已达到自身内存容量的一半或容量已满时,则向微处理器52发中断,微处理器52将当前摄像头控制器50中存储的图像数据一次读出,进行处理。摄像头51与摄像头控制器50之间通过总线方式进行访问,包括数据总线和地址总线,以加快访问速度;摄像头控制器50与微处理器52之间以DMA方式连接,一次性读取数据,从而提高了微处理器的处理效率。

    本发明所增加的摄像头控制器采用可编程逻辑器件实现,比如:FPGA、CPLD,或其它具有同等功能的芯片。本实施例中,摄像头控制器采用FPGA。首先,在FPGA中为要存储的图像数据分配一些内存,但由于FPGA内存资源的限制,在FPGA中不可能按照:行数×列数×10bit分配,只能分配几行需要的内存,例如:4行×列数×32bit。其次,要在内存中定义一个数据指示当前启始的数据为第几行,再定义一个数据指示当前的数据是否有效。

    参见图6~图8所示,FPGA读取图像数据并缓存的工作原理是这样的:由于FPGA是并行工作的,因此,对SOF信号、VCLK信号和HCLK信号的处理在硬件上是并行完成的。当SOF信号指示新的帧开始时,FPGA设置当前行和列的值为0,然后继续判断,否则一直循环判断;当VCLK信号指示新的行开始时,FPGA设置当前列的值为0,且行的值加1,然后继续判断,否则一直循环判断;当HCLK信号指示新的像素点开始时,FPGA设置当前列的值加1,且读取ADC[9:0]上的数据,将每4个ADC[9:0]数据组合为一个32位的数据,再将该32位数据存放到FPGA为该像素点分配的内存中,然后继续判断,否则一直循环判断。在读取并组合数据时,由于微处理器接口通常是32位的,所以组合为32位的数据。但4个ADC[9:0]数据组合为一个32位数据时,会多出8位数据,最简单的方法是直接去掉每个ADC[9:0]中的最低两位,如此虽然会对数据结果有影响,但影响不大,而对系统优化来说,却方便了很多。

    在FPGA侧,当FPGA检测到当前所存储的图像数据容量已达到自身随机存储器(RAM)容量的一半时,FPGA会产生HALF_IRQ中断给微处理器,指示当前的数据已到最大容量的一半,提醒系统读取,同时指示该数据有效,如图9所示。当FPGA检测到当前所存储的图像数据容量已等于自身随机存储器(RAM)的容量时,FPGA会产生FULL_IRQ中断给微处理器,同时指示当前未存入RAM的数据无效,如图10所示。

    在微处理器侧,微处理器响应HALF_IRQ中断后,进入HALF_IRQ中断服务处理流程,如图11所示:

    a2.先设置数据读取的起始地址为0;

    b2.然后微处理器从FPGA定义的内存中读取数据,读完当前地址的数据后,将地址加1;

    c2.判断当前地址的值是否等于FPGA所定义的内存最大容量的一半,如果不是,则返回步骤b2;否则,设置系统内存的顺序,即:将所定义的内存空间等分为两部分,把前半段内存与后半段内存的地址进行交换,其中的数据等待下次中断时读取。也就是说,当前半部分的内容读空后,将后半部分的内容顶替上来,如此,对于微处理器来说,读取的永远是内存中前半部分的内容,可降低微处理器处理程序的复杂度。

    在微处理器侧,微处理器响应FULL_IRQ中断后,进入FULL_IRQ中断服务处理流程,如图12所示:

    a3.先设置数据读取的起始地址为0;

    b3.然后微处理器从FPGA定义的内存中读取数据,读完当前地址的数据后,将地址加1;

    c3.判断当前地址的值是否等于FPGA所定义内存的最大容量,如果不是,则返回步骤b3;否则,系统读取一个错误标志,将与最后发生错误的数据相关的数据丢弃,比如说:如果某帧数据没有全部存入FPGA所定义的内存时,内存容量就已满,则该帧数据就会发生错误,应该丢掉。

    可见,在上述方案中,微处理器不用实时去读取摄像头的输出数据,而是由中断触发一次性读取一定量的数据,避免了微处理器只忙于读取摄像头输出数据而不能处理其它事务的现象发生,使微处理器能够合理运用自身的处理能力,进而提高了系统性能和效率。

    通过下面具体的应用实例,可进一步看出增加摄像头控制器的优越之处。本实施例中,微处理器系统采用INTEL的SA1110,为该处理器配备的CMOS摄像头为MOTOROLA的MCM20114,彩色VGA,分辨率为640×480。由于该处理器没有CMOS摄像头的接口,因此采用型号为XILINX的SPARTAN-II X2S100-5PQ208C的FPGA,作为该CMOS摄像头和SA1110处理器系统之间的摄像头控制器。假定该CMOS摄像头每秒钟提供30帧的图像数据,FPGA为缓冲分配的容量为640×4×32bit。

    那么,如果通过现有技术中的GPIO模拟方式读取数据,由于全部的流程是通过软件完成,可以算出系统进行查询的周期为:

                   周期=1/(640×480×30)=1/9216000即:该查询的频率为9.216MHz。

    而采用FPGA为摄像头控制器后,由于FPGA相当于一个缓冲,所以微处理器的访问频率明显降低,可以算出此情况下系统进行查询的周期为:

                   周期=640×4×4/(640×480×30)=1/900即:其访问频率为900Hz,比前种方式降低了10240倍。可见,该控制器可大幅提高系统的性能。

    本发明不仅适用于CMOS摄像头,还可用于其它摄像头,只需根据接口的不同对相应的处理流程略加改动。总之,以上所述仅为本发明的较佳实施例而已,并非用来限定本发明的保护范围。

控制微处理器读取摄像头数据的方法及摄像头控制器.pdf_第1页
第1页 / 共20页
控制微处理器读取摄像头数据的方法及摄像头控制器.pdf_第2页
第2页 / 共20页
控制微处理器读取摄像头数据的方法及摄像头控制器.pdf_第3页
第3页 / 共20页
点击查看更多>>
资源描述

《控制微处理器读取摄像头数据的方法及摄像头控制器.pdf》由会员分享,可在线阅读,更多相关《控制微处理器读取摄像头数据的方法及摄像头控制器.pdf(20页珍藏版)》请在专利查询网上搜索。

本发明公开了一种控制微处理器读取摄像头数据的方法,关键在于:在摄像头和微处理器之间设置一个摄像头控制器,当摄像头向微处理器传送数据时,先将数据输出到摄像头控制器中,再由摄像头控制器通过中断方式控制微处理器从其内部读取数据。本发明还同时公开了一种实现上述方法的摄像头控制器,连接于摄像头和微处理器之间。采用本发明的摄像头控制器和控制方法,能缓存摄像头的数据并控制数据的输出,可在增加极少成本的前提下,降。

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

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1