掌桥专利:专业的专利平台
掌桥专利
首页

一种基于CX3芯片的相机稳定采集装置及方法

文献发布时间:2023-06-19 18:29:06


一种基于CX3芯片的相机稳定采集装置及方法

技术领域

本发明涉及成像设备领域,具体涉及一种基于CX3芯片的相机稳定采集装置及方法。

背景技术

目前市面上的大多数USB3.0 VISION(简称U3V)协议的工业相机的使用还是FX3芯片配合FPGA的架构方案。由于有DDR进行数据缓存,总线阻塞的异常处理表现更好。但是系统设计较为复杂,成本相对较高,加上FPGA芯片的功耗和散热问题,很难实现小型化成本相机设计。

部分厂商FPGA芯片提供了Mipi输出并行数据转化的架构方案,这种芯片集成了MIPI硬核,降低了开发难度,此方案也是无帧存的相机方案,同样会存在总线堵塞丢帧的问题,但是由于有FPGA芯片,成本相对于CX3的相机还是高一些,架构复杂一些。

并且,随着芯片成本的上涨,货期变差,越来越多的相机采用无FPGA芯片的设计,进行设计时,开发板提供的示例为CX3芯片基于UVC格式的简易采集系统,能够实现图像数据采集及UVC格式封装图像数据并通过USB3.0接口发送出去,能够支持300MB带宽的sensor采集,可以适用于一些低速sensor的应用。但是,这种设计提供的状态机仅能够支持UVC协议的连续采集,当总线出现阻塞的时候采集会发生错乱,无法保证长时间采集的稳定性,无法支持工业相机的重要采集方式触发采集。当使用U3V协议时,由于状态机是固定的,为保证传输速度,DMA通道需要配置为自动模式,自动模式下,根据状态机,只有当buffer数据满的时候buffer会自动发送给UIB。另外就是帧结束的时候,CPU可以参与,提前结束buffer。但是其他时候CPU都无法获取到buffer。即当前的状态机的DMA buffe都是在有图像数据到来的时候才能够获取到的,没有多余的buffer头包和尾包,无法进行数据信息的协调发送。

综上,CX3芯片提供的状态机有一个问题,虽然适用于UVC协议,UVC协议的头包可以和图像数据放在一起发送。但是如果要遵循U3V协议就会有问题,头包、尾包都是需要独立包发送的,原状态机没有发送头包尾包的位置。并且CX3的状态机,厂商定义为固定的,不可修改的状态机。由于无法发送头包和尾包,现有CX3芯片尚无法解决从传感器进行数据采集并在U3V协议下向外输出的问题。没有头包和尾包的图像数据将无法正常显示。

发明内容

针对上述问题,本发明希望提供一种通过CX3芯片(CYUSB3065)直接控制Mipi接口的传感器,实现了遵循标准USB3.0VISION协议的小型化、低成本、低功耗、架构简单、易于开发维护的工业相机的采集系统固件设计。本发明实现了基于CX3芯片的固定状态机,在USB3.0VISION协议下的稳定信号传输,不需要使用FPGA,既可以大幅度降低成本、缩小相机体积,减少发热量,又可以保证信号的稳定。

本发明的方案包含了基于CX3芯片实现的USB3.0VISION协议控制、采集过程中总线阻塞情况的异常处理、通用触发采集方案解决了上述问题。

针对这一问题,本发明提供了一种基于CX3芯片的相机稳定采集方法,所述方法包括:

(1)、监测图像采集信号,当接收到图像采集信号时对CX3芯片进行配置,使CX3的DMA通道进入override模式;

(2)、从CX3芯片的DMA通道获取buffer;

(3)、根据U3V协议生成数据头包,将头包存储在所获取的buffer内,并向外发送;

(4)、对CX3芯片的DMA通道进行复位,复位至正常工作模式,接收来自图像传感器的图像数据,并通过DMA通道向外发送;

(5)获取当前传感器所拍摄图像的尺寸,基于图像尺寸计算出相应出每张图像的数据量,根据所计算出的数据量确定图像数据发送所需的buffer数量

(6)实时监测是否达到所确定的图像数据所需的buffer数量,当达到所需的buffer数量时,对CX3芯片的DMA通道进行设置使其进入override模式;

(7)从CX3芯片的DMA通发获取buffer;根据U3V协议生成数据尾包,将尾包存储在所获取的buffer内,并向外发送;

(8)对CX3芯片进行复位,复位至正常工作模式。

在一种优选实现方式中,在所述步骤(3)和(8)中,通过DMA通道进行数据发送。

在另一种优选实现方式中,所述CX3芯片从图像传感器接收图像数据。

在另一种优选实现方式中,所述CX3芯片将头包数据、图像数据以及尾包数据传输到USB接口。

在另一种优选实现方式中,所述方法还包括判断当前相机的采集模式,如果是连续模式,在所述步骤(6)之后,从CX3芯片的DMA通道获取buffer;根据相机预设配置生成下一个数据头包,将下一个数据头包存储在所获取的buffer内,并向外发送;对CX3芯片进行复位,复位至正常工作模式。

在另一种优选实现方式中,所述方法还包括从相机的固件参数存储模块里获得当前图像传感器所拍摄图像的尺寸。

在另一种优选实现方式中,所述方法还包括基于Api的接口,配置CX3芯片的工作。

本发明还提供一种基于CX3芯片的相机稳定采集装置,所述相机稳定采集装置包括CX3芯片,所述CX3芯片的输入端与相机的传感器通信连接,输出端与USB输出端口通信连接,并且所述CX3芯片的固件与外部控制装置通信连接,所述相机稳定采集装置在收到图像采集指令时,按照所述的方法进行图像采集和输出。

技术效果

1、本发明可以在不修改CX3芯片的状态机的情况下,实现U3V协议的封装,使原有使用U3V协议控制相机的用户不需要重新开发应用端,无缝切换相机。

2、本发明可以应用没有帧存的相机架构,这样的相机架构更倾向于单机低速传感器的应用方案,但是由于是USB设备,PC的USB外设较多,因而会发生短时间的总线阻塞。通过本发明的方法对相机固件的采集通道进行设计,解决由于总线阻塞或者总线错误导致的异常情况处理,能够使相机长时间稳定采集。

3、本发明方法配合状态机的切换和不同sensor的特点,可以实现工业相机常用的采集方式触发采集方案。

4、本发明方法通过使用CX3芯片解决了MIPI接口传感器数据输出必须经过FPGA的问题,实现了MIPI接口传感器数据直接接入状态机并进行输出,无需FPGA芯片即可实现相机采集系统,架构简单、成本较低、并且能够有效降低相机的体积和散热。

附图说明

图1为CX3与传感器的架构以及连接示意图;

图2为信号采集过程中的行、列信号示意图;

图3为CYUSB3065内缓存结构的示意图;

图4为触发模式下基于CX3的采集管理示意图。

具体实施方式

本实施例基于CX3芯片的相机稳定采集方法进行描述。本实施例的方法包括下述步骤:

(1)、监测图像采集信号,当接收到图像采集信号时对DMA通道进行配置,使DMA通道进入override模式;

(2)、从CX3芯片的DMA通道获取buffer;

(3)、根据U3V协议生成数据头包,将头包存储在所获取的buffer内,并向外发送;

(4)、对DMA通道进行复位,复位至正常工作模式,接收来自图像传感器的图像数据,并通过DMA通道向外发送;

(5)获取当前传感器所拍摄图像的尺寸,基于图像尺寸计算出相应出每张图像的数据量,根据所计算出的数据量确定图像数据发送所需要的buffer数量;

(6)实时监测是否达到所确定的图像数据发送完成,当达到buffer计数时,对DMA通道进行设置使其进入override模式;

(7)从CX3芯片的DMA通道获取buffer;根据U3V协议格式生成数据尾包,将尾包存储在所获取的buffer内,并向外发送;

(8)对CX3芯片进行复位,复位至正常工作模式。

下面结合附图对实现本发明方法的CYUSB3065芯片(下称CX3)以及其实现本发明方法的过程进行更详细描述。

图1为CX3状态机的简图,从图中可以看出,CX3器件有一个集成的MIPI CSI-2模块,该模块的一侧硬连接到GPIF II接口,另一侧提供MIPI CSI-2接口,用以连接到支持MIPI CSI-2的图像传感器。GPIF II模块及其固定功能状态机通过DMA通道将图像传感器的数据发送到USB接口。

如图所示,CX3前端连接图像传感器,用于从图像传感器接收图像数据,CX3与图像传感器之间分别设置时钟线和数据线,分别用于统一时钟和数据通信。CX3内部还包括固定功能GPIF II状态机、DMA通道、控制器。

由于CX3芯片中的状态机只有在有数据到来时,才能够获取到buffer。UVC协议的头包尾包可以与图像数据放在一起发送出去,所以使用此状态机没有问题,但是U3V协议的头包尾包数据均需要独立发送,不能够与数据放在一起发送。有图像数据到来时获取到的这个buffer如果用来发送了头包,就没有buffer能够发送当前帧的数据。

因此,为了解决这个问题,本发明在进行信号采集时,控制器监测图像采集信号,当接收到图像采集信号时对CX3芯片进行配置,使CX3芯片的DMA通道进入override模式。从CX3芯片的DMA通道获取buffer,GPIF II模块发送DMA buffer后,将通过中断通知控制器。

然后,控制器根据相机U3V协议生成数据头包,添加头信息,将头包存储在所获取的buffer内,并将DMA buffer传送到USB接口模块。在GPIF II侧,DMA buffer中的数据被自动包装。

当头包数据发送完成之后,对CYUSB3065芯片的DMA通道进行复位,复位至正常工作模式,向图像传感器发送触发信号,图像传感器进行信号采集并向CYUSB3065芯片发送,CYUSB3065芯片逐帧接收来自图像传感器的图像数据,并通过DMA通道向外发送。

如图2所示,图像采集一张图像时,会有帧和行的概念,一帧图像传输时首先会有帧有效FV,在帧有效期间会输出整张图像数据,一张图像输出完成后会有一个帧消隐的时间切换到下一帧图像数据输出,这个期间是没有任何有效数据的。一帧图像又由若干行数据组成,每一行输出时会有一个行有效LV信号,一行图像输出完成后会有一个行消隐的时间切换到下一行数据输出。在每一帧数据采集时,在场有效FV上升沿到来时,行信号LV有效,开始地址累加,数据发送,直到场信号FV下降沿到来,控制DMA结束数据传送,完成一帧数据的采集,回到状态机初始位置等待下一帧数据的到来。

工业相机一般采集模式会分为单帧采集模式和连续采集两种模式。连续采集模式中,开始采集后持续进行图像输出,直到接收到停止采集信号。单帧采集模式开始采集后,只采集一张图像就自动停采,需要再次发送下一个开始采集信号才可以采集下一帧图像。

无论何种采集模式:

当固件(CX3的CPU)接收到开启流通道后,GPIF状态机回到初始状态。

当固件接收到关闭流通道后,立即停止sensor采集,停止状态机,复位DMA通道。

当固件接收设置开采时,需要先从CX3芯片的DMA通道获取buffer,根据U3V协议格式分别生成当前帧的数据头包,发出头包后,设置sensor开采,启动DMA传输。

当固件接收到停采命令,等待当前帧传输完成,设置sensor停采,固件从CX3芯片的DMA通道获取buffer,根据U3V协议格式分别生成当前帧的数据尾包。

连续采集模式:

传输图像数据,到最后一个buffer时,固件(CPU)先将DMA通道的模式修改为override模式,从CX3芯片的DMA通道获取buffer,根据U3V协议格式分别生成当前帧的数据尾包和下一帧的数据头包,并向外发送,发送之后将DMA通道的模式重置为正常模式;这样重复,直至接收到停采命令。

单帧采集模式:

设置开始采集时,固件先从CX3芯片的DMA通道获取buffer,根据U3V协议生成数据头包,将头包存储在所获取的buffer内,并向外发送,设置sensor开采,启动DMA,传输图像数据,到最后一个buffer时,设置sensor停采,从CX3芯片的DMA通道获取buffer,根据U3V协议格式分别生成当前帧的数据尾包。再次发送开采时,重复上面的步骤。这样完成了本次采集的过程,等待下一次的图像采集命令。

需要说明的是,CX3芯片的DMA通道进入override模式,需要reset DMA通道进入configured状态,此种方案可以稳定采集。

由于本发明的相机是基于CX3架构,没有FPGA芯片和DDR做一级缓存,为保证传输的效率及总线阻塞导致的buffer传输受阻。在优选实现方式中,通道配置两个线程,通过两个线程交替切换可以减少单个线程内buffer切换的时间。每个线程至少要有4个DMAbuffer,通过配置多个buffer可以增加缓存能力。buffer的大小尽可能大一些,减少DMA搬运的次数,如图3所示。

采集异常情况处理方案

图像传输正常流程就是:发送头包->循环发送数据包->发送尾包,这样的流程。但是图像传输过程中总线可能会出现阻塞,或者由于CPU占用导致的接收数据buffer没有被及时取走,导致数据丢失,后面的采集无法正常进行,所以需要针对这种异常做下面的设计方案:

整体原则为当出现阻塞时可以允许帧ID跳跃,但是每帧数据都需要正常结束,影响帧数尽可能少,对于任意一帧图像,若检测到传输阻塞,对于当前所采集到的该帧数据中的剩余数据,以短包(或者0长度包)和尾包替换剩余数据,即补足短包和尾包,这样才能保证端正常结束一帧数据,下一帧正常开始。其中,短包的数据量远小于正常数据包的数据量,比如,设置为4个字节。

需不需要短包的条件是:发送的数据量是否等于上层驱动请求的数据量,如果等于则不需要用短包补足,如果不足,必须补足足够的短包,否则尾包会被当成数据包,导致数据错乱。

注:所需短包个数是根据U3V协议计算出的,传输一帧图像所需的数据包个数与实际发出的数据包个数的差,就是需要补发的数据包个数。

如果一帧数据大小为2M+32*1024+576,分为1M一个数据包,不足1M的按照1024字节一个数据包,每个数据块都需要一个短包结束。

·如果已发送的数据<1M,则需要发送35个短包;

·如果已发送的2M>数据>=1M,则需要发送34个短包;

·如果已发送的2M+32*1024>数据>=2M,则每1024字节需要发送一个短包,最后一个576需要发送一个短包;

·如果已发送的2M+32*1024+576>数据>=2M+32*1024,则需要发送1个短包。

本发明的异常处理方式的一个重点是剩余几个buffer的时候必须进入到异常处理流程。本实施例中,总共开了8个DMA buffer,如果出现阻塞,即剩余buffer小于7就处理,那么会导致很多短暂阻塞,本来可以通过使用缓存buffer就能恢复的情况也被浪费掉。缓存应该剩余较少的时候再判断为阻塞才能发挥缓存的最大作用,因为生产的速度受sensor采集速度的影响,而消费仅受传输速度的影响,而需要综合考虑给出下面的异常处理方案:

生产者回调buffer处理流程:

当总线出现阻塞时,Productcnt值(代表CX3中库存数据量值)会越来越大。以8个buffer为例,当所有buffer均为空时,Productcnt值为1,,当还剩最后一个buffer,即Productcnt等于8的时候需要进行异常处理:

情况1:最后一个buffer到来的是头包,则直接扔掉,并且停止采集。这里的停采是立即停采,不要保证完整帧,当Productcnt变为1时重新开采,通过开停采来快速恢复异常,这样就不需要再等待一帧数据都发送完成才能恢复。

情况2:最后一个buffer到来的是尾包或者短包,则正常发送。

情况3:最后一个buffer到来的是数据包,则需要计算当前帧需要多少短包,当前buffer开始发送短包,保证当前帧正常结束。短包发送完成后,直接发送尾包。

这里是否要立即停采开采恢复需要进行根据剩余buffer数量进行一个判断,具体buffer数量需要实测,sensor不同这个时间会有差异。

t1:停采到开采恢复时间

t2:两次进入生产者回调的时间间隔×剩余buffer个数

当t1大于t2时,则立即停采重新开采来恢复;否则直接丢弃数据包等待当前帧完成,当来最后一个buffer的时候就可以发送下一帧的头包,后续buffer发送恢复正常。

当需要进行触发采集时,对于不支持restart的sensor,使sensor一直处于连续采集状态,可以按照下述方式实现触发采集:

当开启触发模式(触发模式由off变为on)时,如果sensor处于正在采集状态,当前帧的最后一个图像数据buffer发出后,此帧的数据已经全部输送到DMA通道并予以发送,设置sensor停采,配置DMA通道进入override模式,发送尾包,恢复DMA通道为正常模式,然后变更固件内记录的触发模式为on,返回命令成功,然后等待触发信号或者触发命令到来;如果处于停止采集状态,则直接变更固件内记录的触发模式为on,返回命令成功。

当关闭触发触发模式(触发模式由on切换为off)时,如果sensor处于开始采集状态,当前帧的最后一个图像数据buffer发出后,此帧的数据已经全部经DMA通道予以发送,不停止sensor采集,配置DMA通道进入override模式,发送尾包,恢复DMA通道为正常模式,然后变更固件内记录的触发模式为off,返回命令成功。如果处于停止采集状态,则直接变更固件内记录的触发模式为off,返回命令成功。

当处于触发模式为on,开采状态下,固件接收到触发信号或者触发命令时,立即设置sensor开采,启动DMA传输,在当前帧的最后一个图像数据buffer发出后,设置sensor停采,配置DMA通道进入override模式,发送尾包,恢复DMA通道为正常模式,然后等待下一个触发信号到来。在尾包发出之前,接收到的触发信号将会被屏蔽。此种设计触发到得图时间会比较稳定,不受sensor型号限制,方案更加通用。

当处于停采状态下,固件接收到触发信号或者触发命令时,接收到的触发信号将会直接被屏蔽。

对于使用的sensor如果支持restart设置使sensor立即停止当前帧采集直接重新开始新的一帧采集。sensor处于连续采集状态,可以在接收到触发信号后直接设置restart,同时跳转状态机为原始状态的方法进行触发采集。这样完成一次触发图像传输后就不要再停止采集,下一次直接restart就可以了,可以简化上述触发采集方案的逻辑。

相关技术
  • 一种基于增强现实的相机标定图像采集方法及装置
  • 一种基于多深度相机的空间人员定位装置及方法
  • 一种基于CX3的工业相机系统
  • 一种相机芯片及基于该相机芯片的录像方法
技术分类

06120115584463