新聞中心

EEPW首頁 > 光電顯示 > 設(shè)計(jì)應(yīng)用 > 基于USB2.O的CMOS圖像采集系統(tǒng)的設(shè)計(jì)

基于USB2.O的CMOS圖像采集系統(tǒng)的設(shè)計(jì)

作者: 時(shí)間:2009-04-02 來源:網(wǎng)絡(luò) 收藏

Slave FIFO模式為從機(jī)方式,由0V9620的時(shí)鐘信號PCLK控制CY7C68013內(nèi)部的多層緩沖FIFO進(jìn)行讀寫,從而確保了的同步、無偏移特性。利用幀同步信號VSYNC作為的起始同步信號,當(dāng)VSYNC高電平到來以前,初始置PA7為低電平,鉗制SLWR使寫入無效,并且清空FIFO,這樣保證殘余數(shù)據(jù)清空使不會(huì)發(fā)生偏移;當(dāng)VSYNC為高電平時(shí),標(biāo)志一幀圖像的開始,進(jìn)入中斷處理。這時(shí)置PA7為高電平,行同步信號HREF使能SLWR,寫信號有效。這樣在“量子FIF0”框架下圖像數(shù)據(jù)從該幀的第一個(gè)像素開始自動(dòng)高速地傳輸?shù)缴衔粰C(jī)中,實(shí)現(xiàn)了采集一幅完整、無偏移的圖像。


2 軟件
圖像采集軟件主要包括3方面的工作:USB固件程序、USB設(shè)備驅(qū)動(dòng)程序和主機(jī)應(yīng)用程序。
2.1 USB固件程序
Cypress公司為CY7C68013提供了一個(gè)固件開發(fā)框架,可以在KEIL C51環(huán)境下開發(fā)。由于開發(fā)框架的引入,從而大大縮短了用戶的研發(fā)周期。該框架由fw.c、USBJmpTb.a(chǎn)5l、dscr.a(chǎn)51、periph.c、Ezusb.1ib幾部分組成。固件程序主要完成一下幾部分功能:(1)初始化,包括對CY7C68013的端點(diǎn)配置和傳輸模式的初始化。(2)命令控制函數(shù),按照采集原理實(shí)現(xiàn)采集過程。(3)中斷處理,包括處理各種USB中斷及外部中斷。
設(shè)計(jì)中,考慮到要求高速無丟失地傳輸大量數(shù)據(jù)。因此在初始化過程中,本系統(tǒng)采用BULK傳輸方式。系統(tǒng)EP6(FIFOADR[1:0]=10)為塊傳輸IN端點(diǎn),采用總線供電,IFCLK由外部設(shè)備控制器提供(IFCONFIG=Ox43H),確保系統(tǒng)的穩(wěn)定行。其輸入選擇1 6位數(shù)據(jù)線(wORDWIDE=1)并行輸入,并設(shè)置FIF0深度位4倍緩沖,保證傳輸具有較高的寬度和深度。系統(tǒng)采用自動(dòng)打包的方式(hUTOIN=1)使外設(shè)的數(shù)據(jù)由于不需要8051的處理,直接從FIFO到SIE,有利于提高傳輸速率。而命令控制函數(shù)和中斷處理負(fù)責(zé)采集原理的實(shí)施,其程序部分代碼如下:

2.2 USB驅(qū)動(dòng)程序設(shè)計(jì)
USB設(shè)備驅(qū)動(dòng)程序在整個(gè)系統(tǒng)中相當(dāng)于設(shè)備端固件和主機(jī)應(yīng)用程序之間的紐帶。USB設(shè)備驅(qū)動(dòng)程序?qū)儆赪DM驅(qū)動(dòng)程序,其主要完成了兩個(gè)功能:第一,USB設(shè)備的添加,操作系統(tǒng)快速識(shí)別USB硬件設(shè)備;第二,處理IRP_MJ_PNP青求,建立設(shè)備端與操作系統(tǒng)之間的通訊。
編寫USB設(shè)備驅(qū)動(dòng)程序所需要的開發(fā)環(huán)境,主要包括:DDK(Drivet Oevelopment Kit,驅(qū)動(dòng)開發(fā)工具包),BUILD工具和Visua1 C++開發(fā)環(huán)境。Visual C++是包含標(biāo)準(zhǔn)編譯工具的集成開發(fā)環(huán)境,通過正確設(shè)置,其可以用來建立內(nèi)核模式的設(shè)備驅(qū)動(dòng)程序。它向用戶提供了以良好的編譯環(huán)境、方便的調(diào)試器和一些有用的工具(如rebase、guidgen等),都有助于驅(qū)動(dòng)程序的開發(fā)。因此,本系統(tǒng)系統(tǒng)采用Visual C++6.0開發(fā)工具,對USB設(shè)備驅(qū)動(dòng)程序進(jìn)行開發(fā)和調(diào)試,步驟如下:
1)設(shè)置Visual C++驅(qū)動(dòng)開環(huán)境
2)創(chuàng)建并設(shè)置一個(gè)Makefile項(xiàng)目,使處于驅(qū)動(dòng)開發(fā)環(huán)境。
3)使用當(dāng)前Makefile項(xiàng)目來開發(fā)設(shè)備驅(qū)動(dòng)程序,也可以修改通用驅(qū)動(dòng)程序(GDP),使其符合該采集系統(tǒng)要求。
4)編寫DrvBuild.Bat批處理文件。
5)調(diào)用BUILD工具,創(chuàng)建驅(qū)動(dòng)程序,安裝驅(qū)動(dòng)。

2.3 主機(jī)應(yīng)用程序設(shè)計(jì)
本系統(tǒng)在VC++6.0下調(diào)用API函數(shù)編寫上層用戶端圖像顯示程序,實(shí)現(xiàn)對USB高速傳輸,捕獲,讀寫和保存等操作。為提高采集速度,在設(shè)計(jì)用使用了多線程技術(shù),采用兩個(gè)線程完成圖像的顯示,即將控制線程與采集顯示線程。其流程圖如圖4一a所示。
由于0V9620采用彩色濾光器陣列(CFA)為Bayer方案,如圖5所示,每個(gè)像素只包括RGB顏色的一個(gè)分量,為恢復(fù)另外2種顏色分量,必須進(jìn)行彩色去馬賽克(co1ordemosaicing)處理,即彩色插值。本系統(tǒng)采用雙線性(Bilinear)差值算法對像素進(jìn)行還原,即利用相鄰像素中同色分量的平均值作為當(dāng)前像素的待求顏色分量。其具體數(shù)學(xué)模型為:

令S(x,y)表示像素點(diǎn)(x,y)處的顏色值,包含三個(gè)顏色分量:紅色R(x,y)、綠色G(x,y)、藍(lán)色B(x,y),則有:

然后對圖像進(jìn)行雙線性差值,其中可分兩類像素點(diǎn)。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉