李江波,馬春庭,楊 帆,陳志偉
(軍械工程學(xué)院 火炮工程系,石家莊 050000)
?
基于USB 2.0的視頻傳輸系統(tǒng)設(shè)計(jì)
李江波,馬春庭,楊帆,陳志偉
(軍械工程學(xué)院 火炮工程系,石家莊050000)
采用CMOS圖像傳感器作為光電成像器件,以USB 2.0控制器芯片CY7C68013A對(duì)CMOS圖像傳感器數(shù)據(jù)進(jìn)行處理并傳輸至上位機(jī)實(shí)時(shí)顯示,實(shí)現(xiàn)了通過USB接口對(duì)視頻圖像數(shù)據(jù)的直接采集和成像;該設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單,不僅可作為手持設(shè)備進(jìn)行拍照、錄像,還可功能擴(kuò)展為對(duì)各種類型的CMOS圖像傳感器進(jìn)行成像調(diào)試。
USB;圖像采集;圖像傳輸
本文引用格式:李江波,馬春庭,楊帆,等.基于USB 2.0的視頻傳輸系統(tǒng)設(shè)計(jì)[J].兵器裝備工程學(xué)報(bào),2016(8):127-130.
隨著科技進(jìn)步,CMOS圖像傳感器對(duì)影像的處理能力已經(jīng)達(dá)到可以和CCD相媲美的程度,且具有節(jié)能省電、生產(chǎn)成本低的優(yōu)勢(shì),在市場(chǎng)上占據(jù)的份額不斷提高[1]。本文以CMOS圖像傳感器采集圖像數(shù)據(jù),以CyPress公司的USB 2.0控制器芯片CY7C68013A作為傳輸控制通道,將圖像數(shù)據(jù)上傳至PC機(jī)實(shí)現(xiàn)實(shí)時(shí)顯示。該設(shè)計(jì)結(jié)構(gòu)小巧,可對(duì)各種類型的圖像傳感器進(jìn)行調(diào)試,也可實(shí)現(xiàn)圖像數(shù)據(jù)的實(shí)時(shí)采集與顯示,其應(yīng)用側(cè)重于對(duì)內(nèi)部空間狹小、人眼難以觀測(cè)的領(lǐng)域進(jìn)行實(shí)時(shí)監(jiān)控,可根據(jù)實(shí)際需要對(duì)圖像數(shù)據(jù)進(jìn)行分析判定。
本系統(tǒng)[2]由圖像采集、傳輸控制和圖像顯示3個(gè)單元構(gòu)成,系統(tǒng)結(jié)構(gòu)框圖如圖1。
圖1系統(tǒng)結(jié)構(gòu)框圖
1) 圖像采集單元即是CMOS圖像傳感器,由此獲取圖像數(shù)據(jù)并傳輸至下一單元。此處使用的是MICRON公司的MT9D112[3],這是一款200萬像素的CMOS圖像傳感器,最高分辨率為1 600×1 200,支持多種視頻輸出格式,可通過I2C總線進(jìn)行初始化配置。
2) 傳輸控制單元由CY7C68013A負(fù)責(zé),完成兩部分工作:一是初始化CMOS圖像傳感器,二是接收?qǐng)D像數(shù)據(jù)并將之傳送至上位機(jī)。
Cypress公司的USB芯片CY7C68013A[4-5]是一款集成了USB 2.0接口的微控制器,它將USB 2.0收發(fā)器、SIE(串行接口引擎,Serial Interface Engine)、增強(qiáng)型的8051以及可編程的外部接口集成于一個(gè)單片中,在SLAVE模式下,外部電路可將其視為FIFO直接向上位機(jī)不間斷地傳送數(shù)據(jù),最大帶寬56 Mbyte/s。
3) 圖像顯示單元即是上位機(jī)將接收到的圖像數(shù)據(jù)進(jìn)行插值和特效處理后在屏幕上予以顯示。硬件連接示意圖如圖2。
圖2 硬件連接示意圖
1.1圖像采集單元
1.1.1圖像傳感器的硬件連接
圖像數(shù)據(jù)源于CMOS圖像傳感器MT9D112,為使其正常輸出視頻數(shù)據(jù)須完成兩方面工作:
一是為圖像傳感器供電,須提供二組電源:2.8 V和1.8 V,設(shè)計(jì)時(shí)通過主電源(本系統(tǒng)主電源為USB供電,5 V)輸入到相應(yīng)的電源芯片CAT6219,產(chǎn)生相對(duì)應(yīng)的電壓[1];
二是對(duì)圖像傳感器進(jìn)行初始化,使其按照指定的方式輸出數(shù)據(jù),具體操作是由USB芯片CY7C68013A通過圖像傳感器的I2C接口對(duì)其內(nèi)部寄存器進(jìn)行配置完成[1,6]。
注意:雖然USB芯片CY7C68013A本身已經(jīng)集成I2C引腳并提供了相應(yīng)讀寫函數(shù),但經(jīng)多次實(shí)驗(yàn)表明:該I2C接口在設(shè)備無響應(yīng)時(shí)不能自動(dòng)恢復(fù)高電平狀態(tài),故采用USB芯片CY7C68013A的任意兩根空閑IO引腳模擬I2C接口。
圖像傳感器MT9D112的硬件連接示意圖如圖3。
圖3 MT9D112的硬件連接示意圖
1.1.2圖像傳感器的初始化步驟
圖像傳感器MT9D112的I2C寫地址為0x78,讀地址為0x79[3],初始化時(shí)需要對(duì)寄存器和變量分別進(jìn)行配置[7]。配置寄存器時(shí)直接對(duì)相應(yīng)地址的寄存器進(jìn)行賦值即可,注意寄存器的地址和數(shù)據(jù)均是16位;配置變量則不同,是通過對(duì)R[0x338C] 和 R[0x3390]這兩個(gè)寄存器分別賦值完成的,其中R[0x338C]代表變量的地址,R[0x3390]代表相應(yīng)的變量值。
初始化流程如圖4所示。
1) 供電。3種電源:數(shù)字電源(DVDD),模擬電源(AVDD)和IO電源(DOVDD),3種電源間沒有嚴(yán)格的先后上電順序。
2) 依次檢查圖像傳感器的RESET、PWDN、MCLK引腳是否正常。
RESET引腳接硬件復(fù)位電路,供電一段時(shí)間后測(cè)得應(yīng)為高電平;PWDN引腳為低功耗引腳,若全程不需要圖像傳感器處于低功耗狀態(tài),則須接地;MCLK引腳作為圖像傳感器的時(shí)鐘信號(hào),此處以PLL(鎖相環(huán))為像素時(shí)鐘,故直連到USB芯片的24 MHz輸出引腳即可;STROBE引腳接外部按鈕,可實(shí)現(xiàn)手動(dòng)拍照,若不用可懸空。
3) 讀取圖像傳感器的版本號(hào),如果與所用產(chǎn)品的版本一致,就代表I2C總線能夠正常工作。例如本文中讀取寄存器R[0x3000]的傎為0x1580,與所用圖像傳感器版本一致,故I2C接口正常。
4) 對(duì)寄存器和變量進(jìn)行賦值,主要是完成PLL(鎖相環(huán))的配置和輸出圖像分辨率和格式等一系列工作。
注意:在寫某些改變圖像傳感器內(nèi)部工作狀態(tài)的寄存器時(shí)要注意延時(shí),必要時(shí)可對(duì)一個(gè)寄存器多次寫入,以保證正常工作。這一過程中涉及的重要寄存器有:
設(shè)置PLL(鎖相環(huán))的寄存器有:R[0x3214]、R[0x341E]、R[0x341C];
使能引腳輸出的寄存器:R[0x301A];
其他重要的設(shè)置如輸出分辨率和格式都是對(duì)變量[3]進(jìn)行賦值,涉及到的寄存器是R[0x338C]和 R[0x3390]。
5) 用示波器檢查MT9D112的引腳VSYNC(幀同步信號(hào))、HSYNC(行同步信號(hào))、D[0:7](8位圖像數(shù)據(jù))是否有波形輸出,若有則證明圖像傳感器MT9D112已被成功初始化。此處初始化后輸出格式為8-bit RAW,1600×1 200預(yù)覽模式。
圖4 MT9D112的初始化步驟
1.2傳輸控制單元
該單元[4-5]主要任務(wù)是完成USB芯片CY7C68013A的初始化,與上位機(jī)進(jìn)行命令交互,接收來自圖像傳感器的圖像數(shù)據(jù),并將其通過USB總線上傳至上位機(jī)。下面分別予以闡述。
1.2.1USB芯片的初始化
CyPress公司為該USB芯片提供有配套的開發(fā)包,開發(fā)包中配有原理圖和大量的固件例程。借助原理圖,可以方便地搭建該芯片的驅(qū)動(dòng)電路;而固件例程則為用戶提供了程序架構(gòu),它完成了大部分與USB協(xié)議相關(guān)的工作,用戶僅需要在相應(yīng)的函數(shù)中填寫少量的代碼即可完成開發(fā)。
USB芯片的初始化主要包括設(shè)置時(shí)鐘頻率及工作模式、配置FIFO端口及INT0中斷服務(wù)程序3項(xiàng)內(nèi)容,涉及的寄存器主要有CPUCS、EP1OUTCFG、EP1INCFG、EP2CFG、PORTACFG、FIFOPINPOLAR、FIFORESET。初始化后該芯片使用48MHz的工作時(shí)鐘,配置使用FIFO中的端口2收發(fā)數(shù)據(jù),芯片處于正常模式,在INT0中斷服務(wù)程序中設(shè)置芯片進(jìn)入SLAVE模式,此時(shí)傳輸數(shù)據(jù)使用異步FIFO傳輸。
1.2.2USB芯片和圖像傳感器的硬件連接與軟件工作過程
圖像傳感器MT9D112與USB芯片CY7C68013A的引腳連接如圖5所示。
圖5 MT9D112與CY7C68013A的引腳連接圖
工作過程:當(dāng)圖像傳感器的幀同步VSYNC信號(hào)來臨時(shí),即可觸發(fā)USB芯片的INT0中斷,在INT0的中斷處理函數(shù)中配置寄存器,使得USB芯片CY7C68013A進(jìn)入SLAVE模式。之后當(dāng)行同步HSYNC信號(hào)為高電平時(shí),USB芯片的SLWR引腳被相應(yīng)置于高電平,此時(shí)開始有效的視頻數(shù)據(jù)采集。圖像傳感器的每個(gè)像素時(shí)鐘并行輸出8位的RAW數(shù)據(jù),在滿分辨率(1 600×1 200)的情況下,一幀圖像的數(shù)據(jù)量為:1 600×1 200×1=1 920 000(Byte),按最高幀速每秒15幀計(jì)算,則每秒的數(shù)據(jù)吞吐量為1 920 000×15=28 800 000(Byte),即所需帶寬至少為28.8 MB/s,而USB芯片CY7C68013A在SLAVE模式下可達(dá)到56 MB/s,滿足要求。
1.2.3USB芯片與上位機(jī)的命令交互
實(shí)際應(yīng)用中需要由上位機(jī)發(fā)出采集命令,而后USB芯片才能將圖像傳感器的數(shù)據(jù)上傳至上位機(jī),故而上位機(jī)與USB芯片CY7C68013A之間需要進(jìn)行命令的交互,此處以用戶自定義請(qǐng)求的方式實(shí)現(xiàn)。處理用戶自定義請(qǐng)求流程如圖6所示。
工作過程:上位機(jī)發(fā)送開始采集圖像數(shù)據(jù)的命令,此命令以用戶自定義請(qǐng)求的方式發(fā)送至USB芯片CY7C68013A,使INT0中斷。當(dāng)圖像傳感器MT9D112的某一個(gè)幀信號(hào)到來時(shí),觸發(fā)USB芯片的INT0中斷,該中斷處理函數(shù)將USB芯片CY7C68013A由正常模式轉(zhuǎn)入SLAVE模式,以確保能夠接收到完整的幀數(shù)據(jù),之后通過選定的端點(diǎn),不間斷地將完整的圖像數(shù)據(jù)傳送至上位機(jī)。
圖6 處理用戶自定義請(qǐng)求流程
1.3圖像顯示單元
1.3.1USB驅(qū)動(dòng)程序
驅(qū)動(dòng)程序用來完成USB芯片CY7C68013A芯片與上位機(jī)間的底層通信,CYPRESS公司 針對(duì)該芯片提供了通用驅(qū)動(dòng)程序CYUSB.SYS,只要硬件電路搭建無誤,安裝該驅(qū)動(dòng)后,電腦即會(huì)自動(dòng)識(shí)別該芯片[5]。
1.3.2下載固件程序
下載固件的程序用于把寫好的固件程序下載到USB芯片CY7C68013A的RAM 或外部EEPROM中,其作用是使USB芯片的CPU 重啟,模擬斷開與USB總線的連接以完成對(duì)芯片的重新配置。
CyPress公司已經(jīng)提供了下載固件的程序CyConsole.exe,并附有操作手冊(cè),用戶借助這個(gè)工具可以方便地將固件下載至USB芯片。
1.3.3上位機(jī)程序
上位機(jī)程序在VS2010環(huán)境下采用MFC編寫,主要實(shí)現(xiàn)圖像數(shù)據(jù)的處理、顯示和保存,具體分為以下3個(gè)方面:
1) 接收數(shù)據(jù)。借助CYPRESS公司提供的C++類庫和例程代碼,可以輕松完成接收?qǐng)D像數(shù)據(jù)的任務(wù)。CYPRESS 提供了9 個(gè)類,調(diào)用這些類就可以與USB芯片通信,本文中用到的類有:
CCyUSBDevice類:包含建立USB設(shè)備、獲取USB設(shè)備手柄、打開USB設(shè)備、統(tǒng)計(jì)當(dāng)前端點(diǎn)數(shù)目等功能;
CCyUSBEndPoint類:包含建立端點(diǎn)對(duì)象、枚舉端點(diǎn)、獲取端點(diǎn)屬性等功能;
CCyControlEndPoint類:包含定義控制端點(diǎn),設(shè)置控制端點(diǎn)屬性等功能,通過XferData()函數(shù)發(fā)送命令與USB芯片進(jìn)行交互(見1.2.3節(jié));
CCyUSBEndPoint類:其中包含的BeginDataXfer()、WaitForXfer()和FinishDataXfer() 3個(gè)函數(shù)用于上位機(jī)與USB芯片進(jìn)行數(shù)據(jù)傳輸,來自圖像傳感器的數(shù)據(jù)就是從這3個(gè)函數(shù)中獲得。
借助上述4個(gè)類提供的功能,即可完成建立USB設(shè)備、獲取USB設(shè)備句柄、建立端點(diǎn)對(duì)象,發(fā)送控制傳輸命令,與USB芯片進(jìn)行數(shù)據(jù)傳輸?shù)娜蝿?wù)。
注意:使用時(shí)需要加上頭文件CyAPI.h,在項(xiàng)目中還要引用CyAPI.lib。
2) 渲染圖像。渲染圖像最簡(jiǎn)單的方法是采用GDI方式,利用繪圖函數(shù)StretchDIBits()實(shí)現(xiàn)[9],該函數(shù)的功能是將矩形區(qū)域內(nèi)像素?cái)?shù)據(jù)拷貝到指定的目標(biāo)矩形中進(jìn)行顯示。注意:StretchDIBits()只能播放RGB格式的數(shù)據(jù),本文中RAW格式的數(shù)據(jù)只能先行轉(zhuǎn)換為RGB格式才能正確顯示。
RAW格式的數(shù)據(jù)沒有經(jīng)過任何圖像處理(如銳化、增加色彩對(duì)比)過程,記錄的是圖像傳感器拍攝到的原始數(shù)據(jù),將其轉(zhuǎn)化為RGB格式最簡(jiǎn)單的方法就是擴(kuò)充,即將一個(gè)像素的單字節(jié)數(shù)據(jù)直接轉(zhuǎn)換為RGB格式的3個(gè)字節(jié)數(shù)據(jù)(如RAW格式下某個(gè)像素值為255,則直接變?yōu)镽GB格式的255,255,255)。
3) 保存圖像。據(jù)第二小節(jié),在RGB圖像格式的基礎(chǔ)上,每一幀數(shù)據(jù)前加入BMP文件頭和數(shù)據(jù)頭信息,即可保存為一幅bmp格式的圖像[10]。若是需要對(duì)圖像數(shù)據(jù)做進(jìn)一步的分析處理,或是保存為視頻文件,則須在此處添加相應(yīng)等功能。
使用上述方法進(jìn)行設(shè)計(jì),系統(tǒng)實(shí)物如圖7所示,左圖為圖像傳感器模組,右圖是以USB芯片CY7C68013A為核心搭建的測(cè)試平臺(tái)。
圖7 系統(tǒng)實(shí)物圖
設(shè)置圖像傳感器MT9D112輸出分辨為1 600×1 200,預(yù)覽模式,每秒10幀。圖8為拍攝現(xiàn)場(chǎng),圖9為預(yù)覽模式下的拍攝畫面。
圖8 拍攝現(xiàn)場(chǎng)圖
圖9 預(yù)覽模式下拍攝圖
以CyPress公司的USB 2.0芯片CY7C68013A為核心搭建平臺(tái),以CMOS圖像傳感器MT9D112為例,探討了如何通過USB技術(shù)將圖像傳感器的圖像數(shù)據(jù)在電腦上顯示。經(jīng)實(shí)驗(yàn),該平臺(tái)可對(duì)200萬像素以下的多種類型的CMOS圖像傳感器進(jìn)行分辨率、幀頻、成像品質(zhì)等性能進(jìn)行測(cè)試,目前已經(jīng)對(duì)OV7670、OV2640、OV5640三種圖像傳感器在上位機(jī)測(cè)試程序中成功進(jìn)行了實(shí)驗(yàn),以O(shè)V5640為例實(shí)驗(yàn)結(jié)果如圖10。
圖10 OV5640的測(cè)試結(jié)果圖
另外,因手工焊接需要,本設(shè)計(jì)所用主要芯片的規(guī)格如表1所示。而目前可供選擇的USB芯片CY7C68013A最小尺寸為8 mm×8 mm,QFN封裝。憑借其結(jié)構(gòu)小巧且能夠自主設(shè)計(jì)的優(yōu)勢(shì),該系統(tǒng)可以設(shè)計(jì)在寬為10 mm的長(zhǎng)條電路板上,進(jìn)而能夠?yàn)榭臻g狹小且需要監(jiān)控的區(qū)域設(shè)計(jì)符合其規(guī)格要求的監(jiān)控系統(tǒng)。
表1 主要芯片的規(guī)格
[1]周應(yīng)發(fā),黃澤鍔.基于FPGA的USB視頻傳輸系統(tǒng)設(shè)計(jì)[J].價(jià)值工程,2014(13):192-193.
[2]梁風(fēng)梅.基于USB 2.0的高速實(shí)時(shí)圖像采集系統(tǒng)[J].電腦開發(fā)與應(yīng)用,2009(6):26-27.
[3]1/4-Inch System-On-A-Chip (SOC) CMOS Digital Image Sensor MT9D112[EB/OL].Micron Technology.http://m.doc88.com/p-798379716410.html/.
[4]EZ-USB FX2LP DataSheet[EB/OL].Cypress Semiconductor Co.Ltd.http://www.cypress.com/documentation/datasheets/.
[5]EZ-USB Development Kit User Guide[EB/OL].Cypress Semiconductor Co.Ltd.http://www.cypress.com/documentation/datasheets/.
[6]權(quán)曉紅,虛擬I2C在停車場(chǎng)門禁系統(tǒng)中的應(yīng)用[J].自動(dòng)化與儀器儀表,2014(3):71-74.
[7]張宇,楊世洪.基于CMOS圖像傳感器的高幀頻相機(jī)的設(shè)計(jì)[J].儀器儀表用戶,2011(18):41-44.[8]孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2009.[9]最簡(jiǎn)單的視音頻播放示例2:GDI播放YUV,RGB[EB/OL].http://m.blog.csdn.net/blog/leixiaohua1020/4026
6503/.
[10]韓英.一種基于BMP圖片的顯示方法[J].儀表技術(shù),2011(2):61-62.
(責(zé)任編輯楊繼森)
Design of Video Transmission System Based on USB 2.0 Technology
LI Jiang-bo, MA Chun-ting, YANG Fan, CHEN Zhi-wei
(Ordnance Engineering College,Department of Artillery Engineering, Shijiazhuang 050000, China)
CMOS image sensor was used as photoelectric device. CY7C68013A was used as the USB 2.0 controller chip for the image information transmission channel. The video data of the CMOS was processed and transferred to the USB chip. Finally, the picture was displayed on the PC. The design with clear structure could be used not only as handheld device, but also as measurement of several types of image sensor.
USB; image capture; image transmission
2016-01-04;
2015-02-15
李江波(1980—),男,碩士研究生,主要從事嵌入式系統(tǒng)研究。
10.11809/scbgxb2016.08.029
format:LI Jiang-bo, MA Chun-ting, YANG Fan, et al.Design of Video Transmission System Based on USB 2.0 Technology[J].Journal of Ordnance Equipment Engineering,2016(8):127-130.
TP37
A
2096-2304(2016)08-0127-05
【信息科學(xué)與控制工程】