利用USB2.0單片機實現(xiàn)全數(shù)字圖像的實時采集
摘要:主要論述利用USB2.0單片機接口技術(shù)實現(xiàn)高分辨率(640×480點陣以上)、快速(24幀/s以上)全數(shù)字圖像的實時采集、傳輸?shù)脑?、方法和系統(tǒng)實現(xiàn),以及相應(yīng)的固件程序設(shè)計。
引言
傳統(tǒng)的方法是用視頻采集卡(如1394)對視頻信號進行采集,利用相應(yīng)的軟件傳給PC機,既不方便,也不經(jīng)濟。本文介紹一種利用Cypress公司2002年發(fā)布的世界上第一塊帶 有USB2.0接口的芯片CY7C68013與PC機(主板為支持USB2.0的華碩主板PB533)實現(xiàn)了高分辨率(640×480點陣以上)、快速(24幀/s以上)、全數(shù)字圖像的實時采集系統(tǒng)。
1 數(shù)字圖像的實時采集原理
數(shù)字圖像的實時采集原理如圖1所示。在圖1中,以O(shè)mnivision technologies公司的OV7620/7120芯片作為圖像采集芯片,其主要特點是該芯片可提供0.5~30幀/s,640×480像素點陣CMOS的彩色或黑白數(shù)字圖像,工作頻率為27MHz,像素時鐘為27MHz;以Cypress公司的CY7C68013作為CPU控制和USB2.0接口芯片,該芯片的主要特點是在一塊芯片上集成了USB2.0內(nèi)核和引擎、一個增強型51系列的微處理器,及可編程外圍接口的芯片,提供了高效率的時序解決方案,在這種有獨創(chuàng)性的結(jié)構(gòu)下,仍然使用低價位的51系列的微處理器,其數(shù)據(jù)傳輸速度可以達到56MB/s,可以提供USB2.0的最大帶寬。因此在圖1中,CPU控制和USB2.0接口芯片選擇了上述芯片。圖像芯片(OV7620/7120)所采集的圖像數(shù)據(jù)按設(shè)定的頻率(0.5~30幀/s),在CY7C68013內(nèi)部51CPU的控制下,直接將其送到CY7C68013的FIFO緩沖區(qū),再由其內(nèi)部的USB2.0接口通過USB電纜將其圖像數(shù)據(jù)傳輸?shù)接嬎銠C。
2 數(shù)字圖像的實時傳輸
為了實現(xiàn)數(shù)字圖像的實時傳輸,必須解決影響實時傳輸?shù)膸状笠蛩兀阂皇菆D像芯片采集速度;二是圖像芯片與CY7C68013的FIFO緩沖區(qū)之間的傳輸速度;三是CY7C68013內(nèi)部的USB2.0與帶有USB2.0接口計算機之間的傳輸速度;四是計算機中應(yīng)用軟件的接收圖像、處理圖像速度。以下將分別加以具體說明。
(1)圖像芯片采集速度
圖像芯片采集速度是選擇圖像芯片的關(guān)鍵指標,在該指標滿足的前提下,選取圖像分辨率相對較高的圖像芯片。如可以選取Photobit公司的PB-0300或Omnivision公司的OV7620以及Philips公司的SAA7111等高分辨率圖像采集及處理芯片。
(2)圖像芯片與CY7C68013的傳輸速度
一般的,對于大多數(shù)CMOS數(shù)字圖像采集和處理芯片,其數(shù)據(jù)傳輸速度為其像素時鐘,與其工作頻率基本一致,其周期小于40ns;而當(dāng)CY7C68013工作在主頻48MHz時,其內(nèi)部的通用編程接口可以將外部5~48MHz的數(shù)據(jù)傳輸?shù)絻?nèi)部FIFO緩沖區(qū)。可見,應(yīng)選取像素數(shù)據(jù)傳輸速度合適的圖像采集及處理芯片。
(3)CY7C68013與計算機之間的傳輸速度
在USB1.0和USB1.1接口中,只支持低速和全速兩種傳輸方式。在低速方式下其最大傳輸速度為1.5Mbps;在全速方式下其最大傳輸速度為12Mbps。顯然,在這兩種方式下要完成高分辨率(640×480像素點陣以上)的數(shù)字圖像實時傳輸(24幀/s以上)是不可能的。而USB2.0接口,除支持低速和全速兩種傳輸方式外,還支持高速傳輸方式。在高速傳輸方式下,其最大傳輸速度為480Mbps。因此選取帶有USB2.0內(nèi)核的CY7C68013芯片作為USB2.0接口芯片及帶有USB2.0接口的計算機,滿足數(shù)字圖像的實時傳輸速度要求。
(4)計算機中應(yīng)用軟件的處理速度
計算機中,應(yīng)用軟件的接收圖像、處理圖像速度,也是完成高分辨率數(shù)字圖像實時傳輸所面臨的一個很大挑戰(zhàn)。特別是在Windows多任務(wù)作業(yè)下的延遲,更是如此。
此外,USB總線的帶寬、操作系統(tǒng)等也會影響數(shù)字圖像的實時傳輸。
3 系統(tǒng)實現(xiàn)及固件程序設(shè)計
(1)系統(tǒng)實現(xiàn)
本系統(tǒng)的具體和詳細設(shè)計如圖2所示的數(shù)據(jù)采集邏輯原理圖。在圖2中,圖像采集處理芯片用OV7620/7120,時鐘頻率為27MHz,像素時鐘為27MHz;CPU控制和USB2.0接口芯片用CY7C68013,時鐘頻率為24MHz,通過對CY7C68013內(nèi)部的CPUCS寄存器進行修改,使其工作在48MHz方式下。根據(jù)芯片OV7620/7120及CY7C68013內(nèi)部的FIFO、通用編程接口等特點,其具體接法是:將OV7620/7120的像素時鐘PCLK接到CY7C68013的IFCLK上;OV7620/7120的HREF、VSYNC分別接到CY7C68013的RDY0、RDY1上;同時將OV7620/7120的VSYNC、CHSYNC分別接到CY7C68013的INT0、INT1上。將CY7C68013的PE0、PE1接在OV7620/7120的I2C BUS上。
(2)固件程序設(shè)計
按照圖2數(shù)據(jù)采集邏輯原理圖,其固件程序設(shè)計主要由以下幾部分組成。
①USB2.0接口的初始化程序設(shè)計。本段程序主要通過對CY7C68013的CPUCS寄存器進行設(shè)定,使CY7C68013重枚舉后工作在頻率48MHz下;通過對CY7C68013的USBCS寄存器設(shè)定,使其USB內(nèi)核工作在USB2.0方式下,由固件程序應(yīng)答USB的傳輸,而不是由USB內(nèi)核應(yīng)答;同時通過對CY7C68013的IFCONFIG寄存器設(shè)定,使其CY7C68013工作在通用編程接口方式下。
②圖像芯片的初始化程序設(shè)計。本段程序主要通過CY7C68013的PE0、PE1模擬I2C BUS的時序,完成對圖像芯片的初始化、顯示窗口大小、數(shù)據(jù)格式、顯示幀數(shù)等工作。
③通用編程接口(GPIF)程序設(shè)計。本接口程序設(shè)計主要完成對CY7C68013通用編程接口的初始化以及控制信號RDYx和CTLx(本設(shè)計中未用)、數(shù)據(jù)寬度(8位)、FIFO緩沖區(qū)、計數(shù)器等的編程設(shè)計,并對OV7620/7120的輸入信號HREF、VSYNC等進行邏輯控制,即當(dāng)HREF為高電平、VSYNC為底時,數(shù)據(jù)開始傳輸。
④USB2.0等時傳輸程序設(shè)計。本段程序主要完成USB2.0的等時傳輸功能。要實時采樣數(shù)據(jù),必須使用USB2.0的等時傳輸技術(shù)及中斷技術(shù)。
⑤主程序設(shè)計。在主程序中,除要完成①~④中斷論述的功能外,還要給出USB控制傳輸?shù)墓碳?yīng)答程序及相應(yīng)的中斷初始化和中斷服務(wù)程序。
4 結(jié)論
本系統(tǒng)在工業(yè)在線檢測、無人駕駛汽車等領(lǐng)域得到了很好的應(yīng)用,滿足了應(yīng)用的需求。