多路usb采集ccd相机数据的方法

文档序号:6426309阅读:240来源:国知局
专利名称:多路usb采集ccd相机数据的方法
技术领域
本发明涉及一种数据采集方法,具体涉及一种多路USB采集CCD相机数据的方法, 用于对天文观测仪器科学级CCD相机,采用多个USB对CCD的图像数据进行采集。
背景技术
天文观测的对象是非常暗弱的天体,对所用CCD要求比较高,天文观测上使用的 CCD探测器代表了 CCD应用领域的最高水平(高灵敏度和大视场)。对于高速科学CCD系统而言,最重要的是CCD信号的高速读出、存储及处理。近年来,随着大规模、超大规模集成电路工艺的发展,CCD研制水平和CCD芯片的成品率不断提高,CCD相机正向大靶面、高帧频方向发展。CCD相机的接口技术正在从通用接口向专业接口,低速接口向高速接口超高速接口方向发展。面阵CXD的像元数最高已达 ΙΟΚχΙΟΚ,像元尺寸己做到7um以下,为了获得更大靶面,C⑶的拼接技术也被采用。在天文观测、空间目标识别上,特别是对于快速运动的目标,需要对其连续曝光,这时CCD相机的传输速度显得格外重要。分析现有技术的CCD 相机发现,目前的C⑶数据采集系统与计算机通讯接口一般是基于PCI总线,Camera link, USB2. 0总线,IEEE1394b或者RS232串行总线。其中USB2. 0总线使用最广泛,许多科学级 CXD制造商都采用USB2. 0通讯协议,且都是单通道的传输数据。如Apogee公司Alta U6和 Andor NewtonEMCXD,这些相机的传输速率大都在20MB/s,相机的通讯距离大约10米。 对于天文或者航天相机的超大靶面或者是拼接的CCD来说,传输速度显得低,图像传输时间长,不能满足尖端的科学级相机实时性的需要。

发明内容
针对现有技术的上述不足,本发明的目的是提供一种多路USB采集CCD相机数据的方法。本发明通过多路USB采集科学级CCD相机图像的方法,可有效解决超大靶面、拼接 CCD相机的超大数据量,数据快速传输的问题,对于小靶面的科学级相机来说其实时性也会有很大提高。能够满足天文或者航天相机的实时性需要。完成上述发明任务的方案是一种多路USB采集CCD相机数据的方法,其特征在于,步骤如下
(1).在与CCD相机连接的计算机操作系统上用记事本软件编写安装USB设备所需的设备信息文件(INF);包括四个USB2. O控制器的设备号,四个USB2. O控制器设备的设备名称,使得计算机操作系统能识别到USB上的设备;
(2).Cypress为CY68013A USB通讯芯片提供了一个软件开发包ez_usb_fx21p_ development,方便起见可以将开发包提供的inf文件中的[Cypress]选项VID和PID做相应的修改;
(3).安装驱动程序在CCD相机USB的各个设备上安装步骤⑴所编写的inf文件,将驱动指定到自己编写的inf文件中;
(4).对USB2.O控制器进行编程,生成IIC文件(可被烧写到外部EEPROM元件中去),使其能够接收从计算机发来的命令,并按照要求向计算机返回数据,以及计算机接收到数据后对数据的处理;
(5).编写PC机与CCD相机连接的计算机的四路CCD图像采集程序;
(6).数据处理PC机与CCD相机连接的计算机将四路CCD数字量进行排序,将四路CCD 数字量分成四个象限,再由四个象限组合成一副完整的图像进行显示或者保存等操作。控制一台四路USB相机主需要一台PC机,只要这台PC机有四个独立的USB接口。四路USB CXD相机是一个相机,其内部电路板上有四个USB2. 0通讯芯片,四个独立的USB接口,四个接口与PC机的四个USB 口通过USB线一对一的连接。电路板上除了 USB控制器,A/D转换,CPLD,锁存器等元件外还有C⑶芯片,四路USB采集的相机有四个 KAF4320CXD芯片,这四个KAF4320芯片是被安装在了一个相机里面。每个KAF4320CXD芯片对应一路USB进行数据传输,而KAF4320C⑶芯片其本身有为四通道读出,所以可以理解为四路USB KAF4320的CXD相机为16通道读出。从最后给出的fits图中看出其有16个方格,即为16个通道读出的不同的数据。上述多路USB采集CCD相机数据的方法所使用的设备是,多路USB采集CCD相机数据的设备,所述的CXD相机采用四路USB CXD相机,该相机内部电路板上有四个USB2. 0 通讯芯片,及四个独立的USB接口,其特征在于,本设备中设有控制四路USB相机的PC机, 该台PC机设有四个独立的USB接口 ;所述CXD相机的四个独立的USB接口与所述PC机的四个USB 口通过USB线一对一的连接。换言之,所述用四路USB CXD相机的电路板上设有USB控制器、A/D转换器,CPLD, 锁存器,以及C⑶芯片,四路USB采集的相机有四个KAF4320CXD芯片,这四个KAF4320芯片是被安装在了一个相机里面。每个KAF4320CXD芯片对应一路USB进行数据传输,而 KAF4320CXD芯片其本身有为四通道读出,所以可以理解为四路USB KAF4320的CXD相机为 16通道读出。从最后给出的fits图中看出其有16个方格,即为16个通道读出的不同的数据。为了提高USB2.0科学级C⑶的传输速度,本发明采用四路USB同时传输这一方法,给每一个USB设备定义一个专门的设备号,编写设备的驱动和相应的采集程序,使其四路USB可以同时采集。采用四路USB同时传输的相机传输速度比单路的相机成倍的提高,并且完全支持 USB2. 0协议,安装十分方便,满足科学级CCD相机实时性的要求。目前国内外还没有出现采用多路USB通讯的CXD相机,此项技术尚属首创。USB2. 0通讯芯片采用CY7C68013A芯片,它带有51核,既负责接收高速CXD相机传来的图像数据,又和上位机通讯,接收上位机发来的指令,控制相机在不同模式下的运行动作。CY7C68013A的GPIF引擎具有自动传输数据结构的特性,这种特性使的外围设备和主机通过CY7C68013A可以无缝的高速数据传输。拼接4个CCD芯片就需要有4个CY7C68013A, 他们各自有自己的地址和一整套命令系统,这是整个系统的关键,主机对4个CXD芯片中的一个进行采集时先要发出要采集相机的地址,计算机的USB 口检测到相应的地址后,启动对应的CY7C68013A传输程序向主机传输,4个CY7C68013A可以同时传输数据,提高传输速度。开发编程时可以用eZ_uSb_fX21p_development开发包,里面的软件可以进行方便的测试,编程,加快开发的进度。
四路USB的数据采集具体的实现方法是
1. 1编写四个USB2. 0控制器的设备号,其驱动程序,使得计算机操作系统能识别到USB 上不同的设备。编写inf驱动程序。每一个CY7C68013A都有固定的vendor ID和product ID, VID是识别设备的厂家型号,PID是用户自己定义的产品型号可供用户修改。编写INF 文件,将开发包提供的inf文件中的[Cypress]选项VID和PID做相应的修改。例如改为 %VID_0405&PID_1012. DeviceDesc%=CyUsb, USB\VID_0405&PID_1012。这样 VID 为 0405, PID为1012。.并在[Strings]识别字符里定义驱动的名称。如规定为VID_0405&PID_1012. DeviceDesc=^Cypress EZ-USB Example 4320 Device_l〃,如果PC机发现此设备,会将其命名为 Cypress EZ-USB Example 4320 Device-1。安装驱动程序。给第1个CY7C68013A芯片加电,PC会提示发现新的硬 件。将驱动指定到自己编写的inf文件中,下一步直到安装完成。安装完成后,用eZ_uSb_fX21p_development开发包所带的Console软件查看,发现Device Name % EZ-USB, Name in Windows Device Mgr(from, inf)为 Cypress EZ-USB Example 4320 Devive-1。下面的 VendorID 为 0x0405,ProductID 为 0x1012。说明安装正确。1. 2对USB2. 0控制器进行编程,使其能够接收从计算机发来的命令,并按照要求向计算机返回数据,以及计算机接收到数据后对数据的处理。编写传输控制程序。在KEIL下编写控制和传输程序,采用GPIF波形编程,BULK传输方式传输数据。在开发包所给的例子程序中有进行Bulk传输的程序可供参考。在开发包 dscr. a51 文件 DeviceDscr 下设置设备的 VID (dw 00504H)和 PID (dw 1210H), VID 和PID必须和inf中设置的VID和PID —致。在程序编写完成后生成HEX文件。生成IIC文件。在KEIL软件下编译生成HEX文件,然后通过Hex2bix _i -f 0xC2 -ο usb_mcu. iic usb_mcu. hex将keil所生成的hex文件转换为可烧写到EEPROM里去的 IIC文件。下载IIC文件。用开发包的Console软件,选择EZ-USB Interface下的Lg EEPROM 下载生成的IIC文件。第1个CY7C68013A的驱动及程序即下载完成。其他3路CY7C68013A的驱动和程序下载过程与第1路类似,但是其VID和PID必须设置成不同。例如配置成
第 2 个 CY7C68013A :VID (0x0405) PID (0x1013)。第3 个 CY7C68013A =VID (0x0405) PID (0x1014)。第4 个 CY7C68013A :VID (0x0405) PID (0x1015)。四个驱动和程序下载好后就可以编写采集软件,对这四路USB进行同时采集了。1. 3编写PC机的四路CXD图像采集程序
在Visual C++2008软件下编写USB图像采集程序。采用MFC应用程序创建单文档窗口。在单文档窗口中调用edit,botton, radio, picture control等控件实现采集CCD图像的功能。具体方法是用edit设置曝光时间,用botton开始采集CXD图像,用Radio选择采集模式(分为正常曝光,采集Bias,采集暗流三种)和采集速度(分为500K采样速度, IM采样速度,2Μ采样速度,4Μ采样速度四种)用picture control控件显示C⑶图像,及用Slider Control实现图像的灰度和亮度调节等等功能。程序启动时先加载系统头文件,库文件。程序启动后相机是在默认的系统的待机状态下。当用户选择“采集图像”按钮后程序会调用CYAPI. h文件中的CCyUSBDevice类,检测当前的正在工作的USB 口的PID VID, 如果PID VID和烧写到CY68013A中的PID VID—致,说明P C机已经发现了用户定义的 USB2. 0设备,反之则说明用户定义的USB2. 0设备没有被PC机识别到。当识别到四个不同的VID PID后P C机执行用户设置的一些C⑶的参数。执行这些参数是通过PC机向 CY68013发送命令的形式实现的。在KEIL下编写CY69013的程序时规定了相机的15种命令。(见图2)
CCD相机的采集模式有正常曝光,采集Bias,采集暗流三种。正常曝光采集时先打开快门再延迟用户所设置的积分时间,入射光在设置的时间内通过光路照射CXD芯片产生感应电荷,再关闭快门,然后再发出采集图像数据的命令接收数据。采集bias是零积分的操作,即不用打开和关闭快门,直接发出采集图像数据的命令接收数据,bias采集的是CCD相机的本底,是CCD的固有属性,与温度和时间无关。暗流(dark)是有延迟积分时间,但是没有快门的动作,反映的是相机的热噪声,它随温度的升高而加剧,也和积分时间有关。三种采样模式的流程图见图3
确定了采集模式后接下来就是向CY68013发送命令,并接收其上传的CCD图像数据, 三种采集模式的采集命令是相同的,发送采集命令流程图见图4
接收数据调用了 Cyap i文件CCyUSBEndP0 int类中XferData函数,同步读取数据, XferData (rxbuf+k, len_read) ; len_read为每次传送的数据个数,k为整个一帧图像的数据个数,设定K之后采用循环多次执行,直到K达到预置的值,一帧数据传送完毕。以上讲的是单路USB数据的接收方法,对于多通道USB数据的发送和接收则需要多线程的操作。四路US B数据的采集时采用了四个线程的方法,四路USB采集时同时开放四个采集进程,每个进程对应一路USB,而在每一个进程中又判断CY7C68013的VID和PID,对其发送了 0XB2(复位外部),0XB7 (开始采集),0XB3 (收数使能),0XB5 (停止采集),0XB4 ( 停止收数)等一系列的命令。四路USB多线程采集程序流程图见图5
当四路USB的图像都接收完之后还需要做进一步的数据处理,将所受到的一维数据排序成可供显示和保存的二维数据。(二维数据其中一维表示行,另一维表示列)如 KAF4320CCD的图片,行为1046,列为1050。保存图片获得二维数据后可以将其保存成天文上专用的fits格式的文件,调 用通用的fitsio.h文件编写
四路KAF4320的数据量是USB的数据量是单路的4倍,保存的参数为file_SaVe_ short (const char 氺filename, unsigned short data[4184] [4200]),其中 filename表Tj^ 文件名,data为处理过的二维数组。程序处理完这一系列的数据后得到一幅16通道的二维图像。见图6本发明采用四路USB传输的相机传输速度明显得到了提升。采用单路USB传输时如果采集的图像大小为32MB,大约要6秒钟的时间,而采用四路USB传输的相机只需要2秒钟时间,相机的实时性有了很大的提高。


图1为68013与CY7C4285V结构连接图; 图2为命令格式对照表;
图3为三种采样模式流程图; 图4为发送采集命令流程图; 图5为四路USB多线程采集程序流程图; 图6为四路USB采集的16通道的图像。
具体实施例方式实施例1,多路USB采集CXD相机数据的方法及其设备,参照图广图3 :
本发明所采用的CXD芯片是KAF4320,它是四通道的单色高灵敏度芯片。在USB通讯上采用上述所说的CY7C68013进行四路USB采集,每一路采集一个KAF4320CXD芯片的图像,实际上一幅完整的图像就是4x4为16个象限的图像。Cypress公司USB控制器FX2系列的CY7C68013与外设有两种接口方式可编程接口 GPIF和Slave FIFOs。本发明所用的是主机方式即可编程控制接口(GPIF)。C⑶产生的图像信号经过外置放大器放大后交给AD9824,AD9824的数据经过数据缓存器74LCX574 后进FIF0(CY7C4285V)(由CPLD控制其时序)。68013做为主机,通过编程GPIF波形读写外部FIFO的数据。68013的GPIF功能可以与FIFO无缝连接,采用这种方案不仅传输速度快,而且易于编程。68013与CY7C4285V结构连接关系如图1。GPIF是端点FIFO的内部控制器。在这种方式下,接口内核可产生6个控制输出端(CTL0 CTL5)同时可以接收6个外部输入(RDY0 RDY5),可以很方便的进行编程。CY7C68013开发工具中带有一个GPIFDesigner,编辑自己需要waveform后,选择 Tools->Export to GPIF. c File来输出GPIF. c文件,然后将该文件加入keil c工程和其他文件一起进行编译。CY7C68013除了负责高速CXD图像数据的采集,同时也负责和上位机之间的命令通讯。主机可以通过CY7C68013向C⑶发出工作状态切换、温度采集、快门动作等等一系列的指令。首先,CY7C68013要先接收到主机从USB 口发出来的命令代码,然后根据命令代码的不同来分别定义相机的动作,必须是一一对应的关系,保证相机稳定可靠的运行。例如以下的命令格式(见图2)。
权利要求
1.一种多路USB采集CCD相机数据的方法,其特征在于,步骤如下(1).在与CCD相机连接的计算机操作系统上用记事本软件编写安装USB设备所需的 INF文件;⑵.将开发包提供的inf文件中的[Cypress]选项VID和PID做相应的修改;(3).安装驱动程序在CCD相机USB的各个设备上安装步骤⑴所编写的inf文件,将驱动指定到自己编写的inf文件中;(4).对USB2.0控制器进行编程,生成IIC文件;(5).编写PC机与CCD相机连接的计算机的四路CCD图像采集程序;(6).数据处理PC机与CCD相机连接的计算机将四路CCD数字量进行排序,将四路CCD 数字量分成四个象限,再由四个象限组合成一副完整的图像进行显示或者保存等操作。
2.根据权利要求1所述的多路USB采集CCD相机数据的方法,其特征在于,步骤⑴所述的编写安装USB设备所需的INF文件是指编写四个USB2. 0控制器的设备号,四个USB2. 0控制器设备的设备名称,使得计算机操作系统能识别到USB上的设备;步骤⑷所述的对USB2.0控制器进行编程,生成IIC文件,是指将生成的IIC文件烧写到外部EEPROM元件中去,使其能够接收从计算机发来的命令,并按照要求向计算机返回数据,以及计算机接收到数据后对数据的处理。
3.根据权利要求1所述的多路USB采集CCD相机数据的方法,其特征在于,步骤⑴所述的编写传输控制程序和编写四个USB2. 0控制器的设备号,具体操作是编写inf驱动程序每一个CY7C68013A都有固定的vendor ID和product ID, VID 是识别设备的厂家型号,PID是用户自己定义的产品型号可供用户修改;编写INF文件,将开发包提供的inf文件中的[Cypress]选项VID和PID做相应的修改。
4.根据权利要求1所述的多路USB采集CCD相机数据的方法,其特征在于,步骤⑶所述的安装驱动程序,具体操作是给第1个CY7C68013A芯片加电,PC会提示发现新的硬件;将驱动指定到自己编写的inf文件中,下一步直到安装完成;安装完成后,用eZ_uSb_fX21p_development开发包所带的Console软件查看,发现 Device Name 为 EZ-USB, Name in Windows Device Mgr(from, inf)为 Cypress EZ-USB Example 4320 Devive-1 ;下面的 VendorID 为 0x0405,ProductID 为 0x1012,说明安装正确。
5.根据权利要求1所述的多路USB采集CCD相机数据的方法,其特征在于,步骤⑷所述的对USB2. O控制器进行编程,具体操作是在KEIL下编写控制和传输程序,采用GPIF波形编程,BULK传输方式传输数据;在开发包dscr. a51文件DeviceDscr下设置设备的VID和 PID, VID和PID必须和inf中设置的VID和PID —致;在程序编写完成后生成HEX文件;生成IIC文件在KEIL软件下编译生成HEX文件,然后通过Hex2bix _i -f 0xC2 -ο usb_mcu. iic usb_mcu. hex将keil所生成的hex文件转换为可烧写到EEPROM里去的IIC 文件;下载IIC文件用开发包的Console软件,选择EZ-USB Interface下的Lg EEPROM下载生成的IIC文件;第1个CY7C68013A的驱动及程序即下载完成;其他3路CY7C68013A的驱动和程序下载过程与第1路相同,但是其VID和PID必须设置成不同。
6.根据权利要求广5之一所述的多路USB采集CCD相机数据的方法,其特征在于,步骤 ω所述的编写PC机与CCD相机连接的计算机的四路CCD图像采集程序,具体操作是在Visual C++2008软件下编写USB图像采集程序实际编程中使用了四个进程, 在进程中判断设备的VID和PID,每一个进程对应一组VID和PID ;在每一个进程中用 CCyBulkEndPoint, XferData等传输函数编写CCD图像的采集程序,通过CY7C68013接收 CCD转换过来的数字量,四个进程同时工作,即可用PC机通过USB同时采集四路CCD相机的数字量信息。
全文摘要
四路USB采集CCD相机数据的方法在操作系统上编写设备信息文件(INF)。包括四个USB2.0控制器的设备号、控制器设备的名称,使得操作系统能识别到USB的多个USB设备;将四个USB设备inf文件的[Cypress]选项VID和PID及设备名称做相应的修改;安装驱动程序;对USB2.0控制器进行编程;采用多线程的方式编写计算机的四路CCD图像采集程序;数据处理计算机将四路CCD数字量进行排序,将四路CCD数字量分成四个象限,每个象限显示四个通道,再由四个象限组合成一副完整的图像进行显示或者保存等操作。本发明传输速度明显提升,图像为32MB时只需2秒,实时性大大提高。
文档编号G06F17/40GK102243667SQ201110160148
公开日2011年11月16日 申请日期2011年6月15日 优先权日2011年6月15日
发明者刘伟, 姚大志, 张仁健 申请人:中国科学院紫金山天文台
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1