李江波,馬春庭,楊帆,陳志偉
(軍械工程學(xué)院,石家莊 050000)
?
由圖像傳感器逆向控制的圖像采集系統(tǒng)設(shè)計(jì)
李江波,馬春庭,楊帆,陳志偉
(軍械工程學(xué)院,石家莊 050000)
以CMOS圖像傳感器OV7670和USB2.0控制器芯片CY7C68013A為核心搭建圖像采集系統(tǒng),選擇CY7C68013A的中斷引腳添加按鍵作為控制按鈕,使控制信號(hào)與視頻數(shù)據(jù)經(jīng)USB2.0接口傳輸至上位機(jī)。上位機(jī)端應(yīng)用程序解析控制信號(hào),據(jù)此對(duì)視頻數(shù)據(jù)進(jìn)行相應(yīng)操作,實(shí)現(xiàn)圖像采集系統(tǒng)的逆向控制。
逆向控制;圖像采集;USB
圖像傳感器近年來(lái)獲得了廣泛應(yīng)用,無(wú)論是在道路兩旁還是商店、公共場(chǎng)所等,都離不開(kāi)電子眼[1]。目前基于PC的圖像采集系統(tǒng)功能強(qiáng)大,但圖像傳感器的作用局限于采集視頻數(shù)據(jù),對(duì)視頻數(shù)據(jù)的處理在終端(如PC)完成,控制命令始終由終端發(fā)出,無(wú)法做到將控制權(quán)前移至圖像傳感器(前端),所以前端沒(méi)有視頻處理的控制權(quán)。
這使得圖像傳感器的應(yīng)用大多局限于被動(dòng)等待拍攝對(duì)象進(jìn)入成像區(qū)域,在一些人流量大、情況復(fù)雜且需要隨時(shí)拍照的場(chǎng)合應(yīng)用不方便。若能在圖像傳感器上添加控制按鈕,手持圖像傳感器撥動(dòng)按鈕就能夠在終端保存圖像,這一功能的實(shí)現(xiàn)無(wú)疑會(huì)極大地拓展圖像傳感器的應(yīng)用領(lǐng)域。
基于此,本文以CMOS圖像傳感器和USB2.0控制器芯片為核心,以USB芯片的中斷引腳為按鍵接入口,將控制信號(hào)與視頻數(shù)據(jù)經(jīng)USB2.0接口傳送至上位機(jī)。由上位機(jī)應(yīng)用程序根據(jù)控制信號(hào)對(duì)視頻數(shù)據(jù)進(jìn)行相應(yīng)操作,以此將視頻處理的控制權(quán)前移,實(shí)現(xiàn)逆向控制的圖像采集系統(tǒng)設(shè)計(jì),此設(shè)計(jì)具有廣泛的應(yīng)用前景。
本系統(tǒng)由視頻采集單元、傳輸控制單元和數(shù)據(jù)處理單元構(gòu)成[2],如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
① 視頻采集單元即為CMOS圖像傳感器模組[3-5],此處使用的是OV7670,這是一款30萬(wàn)像素的CMOS圖像傳感器,感光陣列為640×480,支持多種視頻輸出格式,可通過(guò)SCCB總線進(jìn)行配置。
② 傳輸控制單元以USB2.0芯片[6-8]CY7C68013A為核心搭建,主要完成兩項(xiàng)任務(wù):一是初始化CMOS圖像傳感器,之后進(jìn)入SLAVE模式,將視頻數(shù)據(jù)傳送至上位機(jī);二是檢測(cè)控制按鈕狀態(tài),若按鈕按下則通過(guò)中斷處理程序?qū)⒓s定的標(biāo)志位置1,以備上位機(jī)查詢,查詢完畢后固件程序?qū)?biāo)志位清零。
③ 數(shù)據(jù)處理單元即上位機(jī)應(yīng)用程序?qū)⒔邮盏降囊曨l數(shù)據(jù)在屏幕上顯示,并開(kāi)啟定時(shí)器,以查詢方式檢測(cè)USB芯片CY7C68013A標(biāo)志位的狀態(tài),若檢測(cè)到標(biāo)志位置1,則立即對(duì)視頻數(shù)據(jù)進(jìn)行處理,比如保存圖像、保存視頻等。
由3個(gè)單元構(gòu)成的系統(tǒng)硬件連接示意圖如圖2所示。
圖2 系統(tǒng)硬件連接示意圖
1.1視頻采集單元
視頻數(shù)據(jù)源于OV7670,這是一款由OmniVision公司生產(chǎn)的CMOS圖像傳感器,應(yīng)用較廣。為使其正常工作須完成兩項(xiàng)任務(wù):一是提供兩組電源,分別為2.8 V和1.8 V,本系統(tǒng)由USB供電線(5 V)輸入到電源轉(zhuǎn)換芯片CAT6219產(chǎn)生;二是對(duì)圖像傳感器進(jìn)行初始化配置,使其按照指定的格式輸出視頻數(shù)據(jù)。具體操作由USB芯片CY7C68013A通過(guò)圖像傳感器的SCCB接口對(duì)其內(nèi)部寄存器進(jìn)行配置。由于USB芯片的SCCB接口在從設(shè)備無(wú)響應(yīng)時(shí)不能自動(dòng)恢復(fù)高電平狀態(tài),故采用任意兩根空閑I/O引腳模擬SCCB接口。此處初始化后輸出格式為8位RAW,分辨率為640×480。
視頻采集單元的硬件連接示意圖如圖3所示。
圖3 視頻采集單元的硬件連接示意圖
1.2傳輸控制單元
該單元首先對(duì)圖像傳感器進(jìn)行初始化,前面已有闡述,此處略過(guò)。之后負(fù)責(zé)將圖像傳感器采集到的視頻數(shù)據(jù)接收并發(fā)送至上位機(jī),同時(shí)檢測(cè)按鈕狀態(tài),與上位機(jī)進(jìn)行命令交互。下面分別予以闡述[9-10]。
1.2.1視頻數(shù)據(jù)的接收與發(fā)送
圖4 OV7670與CY7C68013A的硬件連接示意圖
USB芯片CY7C68013A是Cypress公司生產(chǎn)的一款集成了USB2.0收發(fā)器、SIE(Serial Interface Engine,串行接口引擎)、增強(qiáng)型的8051以及可編程外部接口(GPIF)的單片機(jī)。在SLAVE模式下外部電路可將其視做FIFO,通過(guò)USB2.0接口向上位機(jī)持續(xù)傳送數(shù)據(jù),最大帶寬為56 MB/s。
USB芯片和圖像傳感器的硬件連接示意圖如圖4所示。
視頻數(shù)據(jù)的接收與發(fā)送過(guò)程分析如下:OV7670的幀同步信號(hào)VSYNC到達(dá)后,觸發(fā)CY7C68013A的INT0中斷,在INT0的中斷處理函數(shù)中對(duì)其內(nèi)部相關(guān)寄存器進(jìn)行配置,使CY7C68013A進(jìn)入SLAVE模式。之后當(dāng)OV7670的行同步信號(hào)HSYNC為高電平時(shí),CY7C68013A的SLWR引腳被相應(yīng)拉高,此后即開(kāi)始接收有效的視頻數(shù)據(jù)。
OV7670在每個(gè)像素時(shí)鐘并行輸出8位RAW數(shù)據(jù),分辨率為640×480時(shí),一幀圖像的數(shù)據(jù)量為:640×480×8/8=307 200(字節(jié)),按設(shè)定幀速每秒30幀計(jì)算,每秒發(fā)送數(shù)據(jù)為307 200×30=9 216 000(字節(jié)),即所需帶寬為9.216 MB/s,而CY7C68013A在SLAVE模式下可達(dá)到56 MB/s,完全滿足要求。
圖5 發(fā)送采集信號(hào)流程圖
在實(shí)際應(yīng)用中需要先由上位機(jī)發(fā)出命令,而后CY7C68013A才能進(jìn)入SLAVE模式,將OV7670的數(shù)據(jù)傳送至上位機(jī),故而CY7C68013A與上位機(jī)之間需要進(jìn)行命令交互,此處以用戶自定義請(qǐng)求的方式實(shí)現(xiàn)發(fā)送采集信號(hào)流程圖如圖5所示。
用戶自定義請(qǐng)求處理流程分析:上位機(jī)發(fā)送采集視頻數(shù)據(jù)的命令,此命令以用戶自定義請(qǐng)求的方式發(fā)送至CY7C68013A,作用為使能INT0中斷。當(dāng)OV7670的VSYNC信號(hào)到達(dá)后,觸發(fā)INT0中斷,在中斷處理程序中配置相關(guān)寄存器,并使能INT0中斷,將CY7C68013A由正常模式轉(zhuǎn)入SLAVE模式,以確保能夠接收到完整的幀數(shù)據(jù),之后通過(guò)選定的端點(diǎn)持續(xù)將完整的視頻數(shù)據(jù)傳送至上位機(jī)。
1.2.2控制信號(hào)的檢測(cè)與發(fā)送
按下控制按鈕后,為確保CY7C68013A能夠檢測(cè)到該信號(hào),將其INT1中斷引腳引出與控制按鈕相連接,INT1中斷設(shè)置為下降沿觸發(fā),硬件連接圖如圖6所示。
圖6 控制按鈕的硬件連接示意圖
控制信號(hào)的檢測(cè)過(guò)程分析:控制按鈕未按下時(shí),A點(diǎn)為低電平;按鈕被按下后,A點(diǎn)為高電平;按鈕被松開(kāi)后A點(diǎn)恢復(fù)為低電平。在控制按鈕被按下到松開(kāi)的過(guò)程中,A點(diǎn)電位經(jīng)歷了由高到低的變化,由此觸發(fā)INT1中斷,在INT1中斷處理程序中將標(biāo)志位置1,以備上位機(jī)查詢。
CY7C68013A的控制傳輸在交換少量控制信息的時(shí)候很有用,如傳送命令、獲取下位機(jī)狀態(tài)等,根據(jù)Cypress公司提供的標(biāo)準(zhǔn)固件框架,在DR_VendorCmnd()函數(shù)中加入處理程序代碼,就可以很方便地使用控制傳輸。因USB2.0芯片本身不具備中斷上位機(jī)的功能,只能由上位機(jī)主動(dòng)訪問(wèn)USB設(shè)備。故而要將控制信號(hào)發(fā)送至上位機(jī),需要上位機(jī)應(yīng)用程序開(kāi)啟定時(shí)器,以USB控制傳輸?shù)姆绞蕉〞r(shí)查詢CY7C68013A內(nèi)標(biāo)志位的狀態(tài),如圖7所示。
圖7 查詢標(biāo)志位流程圖
控制信號(hào)的發(fā)送過(guò)程分析:上位機(jī)應(yīng)用程序開(kāi)啟定時(shí)器線程(間隔為100 ms),以Read()函數(shù)向CY7C68013A發(fā)送控制傳輸命令,當(dāng)發(fā)送8字節(jié)的SETUPDAT數(shù)據(jù)包后,CY7C68013A將其進(jìn)行解碼存入SETUPDAT寄存器中。
SETUPDAT[1]中存有上位機(jī)發(fā)出的請(qǐng)示碼,在固件程序中使用switch-case語(yǔ)句對(duì)不同的請(qǐng)求碼進(jìn)行分析,分別進(jìn)行相應(yīng)的響應(yīng)。CY7C68013A收到命令后將標(biāo)志位內(nèi)容發(fā)送到Read()函數(shù)指定的緩沖區(qū)內(nèi),并將標(biāo)志位清零。上位機(jī)應(yīng)用程序根據(jù)標(biāo)志位狀態(tài)對(duì)視頻數(shù)據(jù)進(jìn)行處理或者退出當(dāng)前線程。
1.3數(shù)據(jù)處理單元
上位機(jī)應(yīng)用程序基于VS2010環(huán)境,采用MFC編寫(xiě)[11],主要實(shí)現(xiàn)視頻數(shù)據(jù)的顯示,并根據(jù)前端控制信號(hào)保存視頻數(shù)據(jù)。
1.3.1視頻數(shù)據(jù)的顯示
根據(jù)Cypress公司提供的C++類(lèi)庫(kù)和例程代碼,可以輕松建立USB設(shè)備、獲取USB設(shè)備句柄、建立端點(diǎn)對(duì)象,發(fā)送控制傳輸命令,與CY7C68013A進(jìn)行數(shù)據(jù)傳輸?shù)娜蝿?wù)。
接收到視頻數(shù)據(jù)后,采用最簡(jiǎn)單的GDI方式,以繪圖函數(shù)StretchDIBits()[12]在640×480的矩形區(qū)域內(nèi)實(shí)現(xiàn)視頻數(shù)據(jù)的顯示。注意StretchDIBits()只能播放RGB格式的數(shù)據(jù),而采集的視頻數(shù)據(jù)格式為RAW,簡(jiǎn)單起見(jiàn),將像素的單字節(jié)數(shù)值擴(kuò)展為相同的3字節(jié)數(shù)值,即R=G=B,直接顯示灰度圖像。
1.3.2逆向控制的實(shí)現(xiàn)
在應(yīng)用程序內(nèi)開(kāi)啟時(shí)間間隔為100 ms的定時(shí)器線程,定時(shí)以USB控制傳輸?shù)姆绞较駽Y7C68013A發(fā)送Read()命令,查詢標(biāo)志位的狀態(tài)。
若標(biāo)志位為0,則立即退出當(dāng)前線程;若標(biāo)志位為1,則立即調(diào)取當(dāng)前視頻幀數(shù)據(jù),在幀數(shù)據(jù)前部加入BMP文件頭和數(shù)據(jù)頭信息,以保存文件的方式將其保存為一幅bmp格式的圖像文件[13]。若是需要對(duì)視頻數(shù)據(jù)做進(jìn)一步的處理,則須在此處添加相應(yīng)的功能代碼。
按照上述方法進(jìn)行設(shè)計(jì),系統(tǒng)實(shí)物如圖8所示。紅色電路板為圖像傳感器OV7670模組,綠色電路板是以USB2.0芯片CY7C68013A為核心搭建的控制平臺(tái),控制按鈕接CY7C68013A的中斷引腳。
圖8 系統(tǒng)實(shí)物圖
圖像傳感器OV7670輸出分辨率為640×480,每秒30幀。應(yīng)用程序界面如圖9所示,按下控制按鈕后得到的圖像如圖10所示。
圖9 應(yīng)用程序界面
圖10 按下控制按鈕后生成的圖像
本文以CMOS圖像傳感器OV7670和USB2.0控制器芯片CY7C68013A為核心搭建圖像采集系統(tǒng),以CY7C68013A的中斷引腳為媒介,添加按鍵作為控制按鈕,使控制信號(hào)與視頻數(shù)據(jù)經(jīng)USB2.0接口傳輸至上位機(jī)。上位機(jī)端應(yīng)用程序解析控制信號(hào),根據(jù)控制命令對(duì)視頻數(shù)據(jù)進(jìn)行相應(yīng)操作,以此實(shí)現(xiàn)圖像采集系統(tǒng)的逆向控制。
[1] 鄭晶晶,賈宇飛,周明亮.圖像采集系統(tǒng)的研究與設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2015(4):94-97.
[2] 陶杰,王欣. 基于STM32F407和OV7670的低端視頻監(jiān)控系統(tǒng)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2014(3):60-63.
[3] 王健,張翔.PC104對(duì)OV7670寄存器的讀寫(xiě)[J].電子設(shè)計(jì)工程,2012(6):135-137.
[4] 丁昊杰,劉敬彪,盛慶華.基于CMOS圖像傳感器的視頻采集系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012(14):178-181,188.
[5] 孫作雷,童可浚,曾連蓀.基于視覺(jué)傳感模塊OV7670的顏色導(dǎo)航智能車(chē)設(shè)計(jì)[J].電子測(cè)試,2013(5):102-104.
[6] 馬俊濤,李振宇.SlaveFIFO模式下CY7C68013和FPGA的數(shù)據(jù)通信[J].中國(guó)傳媒大學(xué)學(xué)報(bào):自然科學(xué)版,2009(2):38-44.
[7] 趙林,孟令軍,于磊,等.基于CY7C68013A的USB2.0高速接口設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014(1):131-133.
[8] 智丹,石云波,董勝飛,等.基于CY7C68013A和FPGA的4路數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].自動(dòng)化與儀表,2015(5):69-72.
[9] EZ-USB FX2LP DataSheet[EB/OL].[2016-03].Cypress Semiconductor Co.Ltd.http://www.cypress.com/documentation/datasheets/.
[10] EZ-USB Development Kit User Guide[EB/OL].[2016-03].Cypress Semiconductor Co.Ltd.http://www.cypress.com/documentation/datasheets/.
[11] 孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2009.
[12] 雷霄驊.最簡(jiǎn)單的視音頻播放示例2:GDI播放YUV, RGB[EB/OL].[2016-03].http://m.blog.csdn.net/blog/leixiaohua1020/40266503/.
[13] 宋亮,陳瑜軒.淺談圖像處理與BMP圖像文件格式[J].電子設(shè)計(jì)工程,2014(7):188-190,193.
Image Acquisition System Based on Image Sensor Inverse Control
Li Jiangbo,Ma Chunting,Yang Fan,Chen Zhiwei
(College of Ordnance Engineering,Shijiazhuang 050000,China)
The image acquisition system takes the CMOS image sensor OV7670 and USB2.0 controller chip CY7C68013A as the core.The control button is connected to the interrupt pin of CY7C68013A,that makes the control signal and video data are transferred to PC through the USB2.0 in real-time.The PC application parses the control signal,then the video data is correspondingly operated to achieve the reverse control of the image acquisition system.
inverse control;image acquisition;USB
TP274
A
(責(zé)任編輯:楊迪娜2016-03-29)