關(guān) 閉

新聞中心

EEPW首頁 > 工控自動化 > 設計應用 > 基于USB2.0的高分辨率數(shù)字攝像頭設計

基于USB2.0的高分辨率數(shù)字攝像頭設計

作者: 時間:2005-06-09 來源:網(wǎng)絡 收藏

摘要:介紹了一種基于2.0協(xié)議的,并給出了利用CMOS圖像傳感器OB9620和控制器CY7C68013設計的基本硬件電路以及軟件設計方法。

關(guān)鍵詞:2.0;I2C;攝像頭;OV9620

1 概述

目前,能夠傳輸高品質(zhì)視頻信號的兩種總線接口(USB和IEEE 1394接口)都支持即插即用,且具有易擴展、使用方便等特點。但是IEEE 1394接口的價格相對較高,因此,當前采用更多的是USB接口。

USB的數(shù)據(jù)傳輸有4種模式:塊傳輸(Bulk Transfers)、中斷傳輸(Interrupt Transfers)、同步傳輸(Isochronous Transfers)、控制傳輸(Control Transfers)。當需要快速傳輸大批量的準確數(shù)據(jù)時,一般采用塊傳輸模式;而當傳輸實時性較強的數(shù)據(jù)時,則應采用中斷傳輸模式。現(xiàn)在的USB2.0規(guī)范在原有的低速模式(low speed) 1.5Mb/s、全速模式(full speed) 12Mb/s的基礎上又支持高達480Mb/s的高速模式(high speed),從而使USB總線真正成為能滿足高速應用場合的標準連接總線。在USB2.0中,每毫秒可發(fā)送8~10微幀,這比USB1.1的傳輸速率有了極大的提高,同時對緩存的要求也大大降低了。USB2.0向下完全兼容,協(xié)議規(guī)定,在全速模式和低速模式下,主機控制器和hub之間也可以進行高速傳輸,但是hub和外設之間仍然保持原有傳輸模式,這樣可以使設備在分享帶寬時沖突最小。

2 硬件電路

本系統(tǒng)選用OmniVision Technologies Inc.公司的OV9620作為視頻信號的采集芯片,用EZ-USB FX2作為USB控制芯片并為OV9620提供工作時鐘,E2PROM使用24LC65,通過I2C總線連接所有芯片。硬件連接框圖見圖1所示。

2.1 OV9620的主要特性

OV9620是美國OmniVision公司為數(shù)字照相機和攝像機產(chǎn)品開發(fā)的高性能130萬像素彩色CMOS數(shù)字圖像傳感器芯片。與傳統(tǒng)的CCD傳感器相比,CMOS最明顯的優(yōu)勢是集成度高、功耗小、生產(chǎn)成本低,容易與其他芯片整合。該款芯片的圖像總區(qū)域為6.825.39mm2,成像區(qū)域為6.665.32mm2,非常有利于產(chǎn)品的小型化。

該芯片支持SXGA(12801024分辨率)和VGA(640480分辨率)兩種模式和SCCB(Serial Camera Control Bus)接口,使用24MHz晶振,內(nèi)置10位A/D轉(zhuǎn)換器,能提供10位數(shù)字視頻信號。另外該芯片還可輸出像素時鐘以及行、場同步信號,并可以直接與專用集成電路系統(tǒng)連接,其后端系統(tǒng)可以通過SCCB接口來控制。可利用USB2.0控制器,在P4 1.5G以上系統(tǒng)中提供15fps的SXGA或30fps的VGA動態(tài)影像。該芯片采用Bayer濾光陣列把輸入光信號分解成RGB三原色,像素陣列有13121036=1359232個,成像像素有12801024=1310720個。不成像像素可作為光學黑體像素用作黑值校準以補償由光線引起的溫度變化和暴光變化。

芯片中使用的SCCB接口是OmniVision公司制定的一種用于控制圖像傳感器的三線連續(xù)總線(SCS、SIO1、SIO0),其中SCS用于實現(xiàn)片選(低電平有效),當芯片被選中后,SIO1、SIO0在功能及使用上和I2C總線兼容。

另外,OV9620還提供了一個控制信號輸入端(PWDN),可用于實現(xiàn)掉電模式的開關(guān)。在本設計中,因為OV9620與其他芯片同時工作,因此,沒有采用片選而是由PWDN 來實現(xiàn)控制。

2.2 EZ-USB FX2的主要特點

EZ-USB FX2(即CY7C68013)是Cypress公司為高速傳輸外設設計的USB2.0控制芯片。該芯片內(nèi)含1個增強型8051處理器、1個串行接口引擎(SIE)、1個USB收發(fā)器、8.5kB片上RAM、4kB FIFO存儲器以及1個通用可編程接口(GPIF)。

FX2采用量子FIFO處理構(gòu)架,其USB接口和應用環(huán)境可以直接共享FIFO,而微控制器則可不參與數(shù)據(jù)傳輸?shù)试S以FIFO或RAM方式訪問這些共享FIFO,這樣,就較好地解決了USB高速模式的帶寬問題。

FX2有一個I2C兼容端口,當FX2作為主控制器,SCL時鐘頻率為100/400kbps時,該端口兼容I2C總線。一般情況下,該端口由兩個內(nèi)部控制器驅(qū)動:一個在程序加載時自動讀取VID/PID/DID和配置信息;另一個是芯片中的8051,一旦開始運行,8051利用芯片中的I2CTL和I2DAT寄存器控制掛接在I2C總線上的外圍設備。具體來說,系統(tǒng)上電時,FX2會通過內(nèi)部邏輯監(jiān)測I2C端口,如果發(fā)現(xiàn)有地址為0xC0 或者是0xC2的E2PROM,便在E2PROM內(nèi)部存儲空間0xC0使用VID/PID/DID值或者把E2PROM的內(nèi)容加載到內(nèi)部RAM中。

2.3 電路原理及設計

設計中可使用I2C總線實現(xiàn)USB控制器與圖像傳感器的連接,并選用E2PROM(24LC65)作為代碼存儲器,然后通過FX2的C2方式加載固件程序。系統(tǒng)上電復位后,處于主模式的USB控制器將通過PA1輸出啟動信號,并經(jīng)反向后傳到圖像傳感器的PWDN,以使處于從模式的圖象傳感器開始工作。PCLK提供像素時鐘,HREF提供水平同步信號,VSYNC提供垂直同步信號。這兩個同步信號與圖像數(shù)據(jù)的時序關(guān)系如圖2所示。

VSYNC會在一幀圖像傳輸?shù)娇刂破骱笥|發(fā)INT0中斷。因為數(shù)據(jù)量太大,本設計沒有在INT0中斷服務子程序中進行全部的數(shù)據(jù)處理,而是設置了一個標志位,并通過標志位的狀態(tài)來在主程序中進行處理,這樣就避免由于數(shù)據(jù)處理時間太長而使控制器無法響應其它中斷。

USB控制器的FIFO處于從模式。控制器的端點設置為EP2―512 四重緩存;EP6-512四重緩存,塊傳輸模式。這樣的設置可以滿足系統(tǒng)要求。

3 接口程序設計

EZ-USB FX2提供了豐富的中斷資源,除內(nèi)置8051中斷資源外,FX2還為INT2和INT4提供了一個中斷向量表,表中有27個 INT2(USB)中斷向量和14個INT4中斷向量。因此,在設計中,大部分工作都可通過中斷服務子程序來完成。圖3、圖4分別是主程序流程和I2C INT中斷服務子程序的流程圖。

同EZ-USB系列的其它控制器一樣,Cypress公司也為FX2提供了比較完備的開發(fā)套件CY3681。這個套件包括帶128腳CY7C68013的硬件開發(fā)板和相應的控制面板以及GPIF代碼自動生成軟件。因此可以非常方便地實現(xiàn)固件的開發(fā)。

USB設備驅(qū)動程序的設計是基于WDM(驅(qū)動程序模型)并采用分層模型來進行。應用程序通過調(diào)用Windows API函數(shù)來進行的對WIN32子系統(tǒng)進行WIN32調(diào)用,并通過I/O管理器產(chǎn)生IRP(I/O請求包),然后傳遞給USB驅(qū)動程序,接著再由驅(qū)動程序執(zhí)行相應的操作,并將結(jié)果返還給I/O管理器。用DriverEntry可設置整個系統(tǒng)的回調(diào)例程,當添加一個新設備和IRP需要發(fā)送到驅(qū)動程序時,通過內(nèi)核可調(diào)用這些例程。下面是DriverEntry例程的簡要內(nèi)容:

DriverObject->DriverExtension->AddDevice=VcameraAddDevice;

DriverObject->DriverUnload=VcameraUnload;

DriverObject->MajorFunction[IRP_MJ_CREATE]= VcameraCreat;

DriverObject->MajorFunction[IRP_MJ_CLOSE]= VcameraClose?

DriverObject->MajorFunction[IRP_MJ_READ]=VcameraRead?

DriverObject->MajorFunction[IRP_MJ_WRITE]=VcameraWrite?

……

實際上,USB客戶驅(qū)動程序中包含大量的例程,也對Windows DDK工具下開發(fā)USB客戶驅(qū)動程序的方法和過程作了詳細的介紹。

4 小結(jié)

目前,筆者已經(jīng)開發(fā)出樣品,并且在一些應用程序上進行過測試,獲得了很好的效果,其分辨率高達12801024。



評論


相關(guān)推薦

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

關(guān)閉