《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于USB3.0的圖像采集系統硬件設計
基于USB3.0的圖像采集系統硬件設計
2014年微型機與應用第17期
楊晶菁1 ,張 浩2
1.福州大學 電氣工程與自動化學院,福建 福州 350116; 2.福州大學 數學與計算機科學學院,福建 福州 350116
摘要: 介紹了一種由USB3.0控制器和CMOS圖像傳感器組成的圖像采集系統的硬件設計;詳細論述了CYUSB3014和OV7670的硬件連接方式和工作原理,包括如何利用FIFO芯片緩存一幀圖像數據;介紹了系統的固件工作流程,包括CYUSB3014的初始化流程。本系統實現了攝像頭采集的視頻數據通過USB3.0總線的高速數據傳輸和在液晶屏上的實時顯示。
Abstract:
Key words :

  摘 要: 介紹了一種由USB3.0控制器和CMOS圖像傳感器組成的圖像采集系統的硬件設計;詳細論述了CYUSB3014和OV7670的硬件連接方式和工作原理,包括如何利用FIFO芯片緩存一幀圖像數據;介紹了系統的固件工作流程,包括CYUSB3014的初始化流程。本系統實現了攝像頭采集的視頻數據通過USB3.0總線的高速數據傳輸和在液晶屏上的實時顯示。

  關鍵詞: USB3.0;圖像傳感器;圖像采集

  隨著科技創新的不斷推進,新媒體格式和大容量、低價格的存儲設備層出不窮,需要更高的帶寬和傳輸速度。目前市場上的高清攝像頭大多通過網絡或USB2.0傳輸數據。有線和無線網絡適合遠距離的圖像傳輸,而近距離的圖像傳輸,若采用網絡則對帶寬要求很高不經濟;若采用USB2.0總線傳輸,則需要對高清圖像數據進行壓縮后再傳輸,很難實現實時傳輸。因此,針對近距離的高清圖像傳輸,采用USB3.0總線是一個理想的選擇,USB3.0理論最大傳輸速率為5.0 Gb/s,實際傳輸速率大約為3.2 Gb/s,可以很方便地實現圖像不經處理的實時傳輸[1]。

1 系統硬件設計

  本設計是基于USB3.0的圖像采集系統硬件,開發周期短,數據傳輸速度快,可應用于對圖像質量要求不高的場合,如智能家居中的可視對講和視頻監控系統。

001.jpg

  本設計的物理連接結構如圖1所示。采用CMOS OV7670圖像傳感器獲得視頻圖像和數字化輸出,通過FIFO芯片AL422B緩沖,USB3.0控制器CYUSB3014采集FIFO中的視頻數據,一方面通過液晶屏實時顯示,另一方面通過USB3.0接口將采集結果送至上位機,以進一步處理和存儲。

  1.1 USB3.0控制器

  本設計采用CYPRESS公司USB3.0控制器EZ-USB FX3 CYUSB3014作為圖像采集系統的核心。CYUSB3014內嵌32位的ARM926EJ核,核心運行頻率可達200 MHz,具有5 Gb/s的數據傳輸能力,特別適合快速傳輸大量數據的應用,穩定性好,實際幀率高。帶512 KB RAM 的片上內核可提供高達200 MIPS的計算能力,可以直接處理一些原來必須放在上位機應用軟件中處理的如圖像格式轉換等工作,提高了系統的集成度。同時CYUSB3014有更多的外設控制接口,數據位寬,靈活性好,適合各種外設的周邊擴展應用。

  CYUSB3014對圖像數據的采集可用GPIF(通用可編程接口)、DMA(直接內存存取)、GPIO(通用輸入/輸出)3種方式。其中前2種方式可實現與外設的無縫連接,數據傳輸由硬件處理,速度快穩定性高,但開發周期較長;第3種方式數據傳輸速率低于前2種方式,但完全滿足本設計的需要,且開發難度較低。因此本設計選用GPIO方式控制外設并采集圖像數據。

  1.2 FIFO攝像頭

  本設計選擇OmniVision公司的包含30萬像素CMOS圖像感光芯片的攝像頭OV7670。OV7670體積小、工作電壓低,可提供單片VGA攝像頭和影像處理器的所有功能[2]。采用OV7670采集圖像數據有4種方法:(1)單片機直接采集;(2)帶有camera接口的32位芯片直接使用;(3)具有DMA功能的16位以上芯片實現采集;(4)增加FIFO模塊作為數據緩沖。其中第1種方法硬件連接最簡單,但由于OV7670的時鐘速度高達24 MHz,所以必須采用高速MCU或者降低CMOS輸出速度,同時必須嚴格按照OV7670的控制和時序關系進行圖像的采集。第2、3種方法需要主控芯片具有特定的功能。第4種方法在硬件上增加了FIFO作為數據緩沖,但在讀取數據時僅需要關心如何讀取數據而不需要關心數據采集的控制和時序,使得數據采集大大簡便。因此本設計采用第4種方法。

  OV7670通過SCCB總線接口與微處理器通信。SCCB是簡化的I2C協議,SIO_C是串行時鐘輸入線,SIO_D是串行雙向數據線,分別相當于I2C協議的SCL和SDA[3]。但是SCCB與I2C總線存在一些細微差別,如SCCB沒有重復起始的概念,在SCCB的讀周期中,當主機發送完片內寄存器地址后,必須發送總線停止條件。因此采用CYUSB3014的GPIO模擬SCCB總線,GPIO_SCL始終設置為輸出方式,GPIO_SDA在數據傳輸過程中根據需要通過設置相應寄存器的值動態地改變輸入和輸出方式。SCCB的寫周期與I2C總線協議完全相同,可直接使用其時序;SCCB的讀周期則需要增加總線停止條件。本設計選擇SCCB總線的最大傳輸速度400 Kb/s,采用三相寫數據的方式對需要更改數據的寄存器進行讀寫操作,配置OV7670的不同圖像數據格式輸出、分辨率、自動曝光、自動增益、自動白平衡、飽和度、亮度、對比度等參數。

  AL422B是AverLogic公司的FIFO存儲芯片,存儲容量為3 Mb(393 216 B×8 bit)。其所有的尋址、刷新等操作都由集成在芯片內部的控制系統完成。AL422B主要用于存放OV7670輸出的完整的一幀圖像數據,存儲制式包括VGA、CCTR、NTSC、PAL、HDTV等[4]。

  AL422B的FIFO_WCK為FIFO內存寫時鐘控制端,寫數據時應與此時鐘信號同步,因此將OV7670的像素時鐘PCLK連接至AL422B的FIFO_WCK。FIFO_RCK為FIFO內存讀時鐘控制端,由CYUSB3014的GPIO引腳控制。

002.jpg

  圖2所示為OV7670 VGA全幀輸出時序圖。為了保證采集完整的一幀數據,必須做到幀同步和行同步。本系統將OV7670的幀同步信號VSYNC連接至CYUSB3014的外部中斷INT上,下降沿時觸發中斷開始一幀的采集,實現幀同步。FIFO_WE用于控制使能/禁止數據輸入至FIFO,低電平時輸入數據在FIFO_WCK的上升沿取得,高電平時禁止數據寫入FIFO。AL422B的寫控制端FIFO_WR和OV7670的行同步信號HREF經過與非門后連接至AL422B的寫使能控制端FIFO_WE,實現行同步。

  1.3 液晶屏

  本系統可通過USB3.0總線連接至上位機,通過相應的應用軟件和顯示屏查看實時或者處理過的視頻,也可通過一塊2.8英寸液晶屏ILI9325查看經過CYUSB3014處理過的視頻。液晶屏在系統開發初期可作為直觀的調試工具,也可在本系統作為移動端時作為顯示工具,若采用上位機顯示也可省略液晶屏以節約成本。USB3.0控制器采用GPIO向液晶屏發送控制指令和8位視頻圖像數據。

2 系統固件設計


003.jpg

  FX3軟件開發工具組件(FX3 SDK)如圖3所示。Cypress公司提供了完整的FX3軟件和固件開發工具,包括豐富的應用例程幫助開發者縮短開發周期。

  本系統設計時主要應用到設備端的FX3固件棧(FX3 Firmware Stack)。它包含了一個完整的API庫和一個詳盡的固件框架。其中,API函數封裝了所有對CYUSB3014寄存器的操作,使得開發者可以通過調用API函數實現對寄存器的配置。固件框架程序建立在ARM9和ThreadX實時操作系統的基礎上,所有的FX3應用代碼包含兩個部分:(1)對于所有應用程序通用的初始化代碼;(2)開發者根據特殊需要設計的應用程序代碼。SDK包含了應用例程的源程序,開發者應用固件框架對例程進行相應的修改就可以得到自己的應用程序。SDK同時提供一個RTOS(實時操作系統)庫,可用于開發更復雜的多線程應用程序。

  本設計的固件流程圖如圖4所示。

004.jpg

  首先,系統依次初始化CYUSB3014、液晶屏、OV7670和AL422B。初始化OV7670,使其輸出格式為QVGA (320×240),圖像數據的格式為RGB565,同時配置AWB(自動白平衡)等圖像質量參數。CYUSB3014的初始化非常重要,它將本系統正確地枚舉為USB3.0設備,并轉入固件入口點、初始化工具鏈、設備和應用程序。其中設備的初始化與硬件關系最為密切,部分代碼如下。

  Int main (void)

  { ……

  //CPU時鐘設置、VIC(向量中斷控制器)初始化、設置PLLs(鎖相環)

  status = CyU3PDeviceInit (NULL);

  ……

  //設備Cache設置:設備有8 KB數據Cache和8 KB指令Cache

  status = CyU3PDeviceCacheControl (CyTrue, CyFalse, CyFalse);

  ……

  //IO矩陣設置:包括GPIF和串行接口(SPI/I2C/I2S/GPIO和UART)

  //本設計僅適用UART總線用于調試

  CyU3PMemSet ((uint8_t *)&io_cfg, 0, sizeof(io_cfg));

  io_cfg.isDQ32Bit = CyFalse;

  io_cfg.useUart = CyTrue;

  io_cfg.useI2C = CyFalse;

  io_cfg.useI2S = CyFalse;

  io_cfg.useSpi = CyFalse;

  io_cfg.lppMode = CY_U3P_IO_MATRIX_LPP_DEFAULT;

  //使能GPIO[56]和GPIO[55]用于模擬SCCB總線

  io_cfg.gpioSimpleEn[0] = 0;

  io_cfg.gpioSimpleEn[1] = 0x01800000;

  io_cfg.gpioComplexEn[0] = 0;

  io_cfg.gpioComplexEn[1] = 0;

  status = CyU3PDeviceConfigureIOMatrix (&io_cfg);

  ……

  CyU3PKernelEntry (); //進入操作系統的入口函數

  //直接開始執行CyFxApplicationDefine(void)

  //調用CyU3PThreadCreate()創建用戶線程

  ……

  }

  接著等待上位機發出視頻數據采集指令,此時若需要修改OV7670的配置,可以通過SCCB總線寫入寄存器值進行設置。若接收到視頻數據采集指令,則需要先復位AL422B,在幀同步信號VSYNC的下降沿啟動采集一幀圖像的流程,同時開啟AL422B的FIFO寫使能,開始向FIFO內寫入數據。當外部中斷檢測到VSYNC下一個下降沿時,關閉FIFO寫使能,結束一幀圖像數據的采集。

  然后CYUSB3014通過USB3.0總線將采集到的一幀圖像數據發送至上位機進行處理和存儲,同時發送至液晶屏進行實時顯示。繼續采集圖像數據直至上位機發出結束采集的指令。

  本系統采用USB3.0控制器CYUSB3014、30萬像素的COMS攝像頭OV7670、FIFO存儲芯片AL422B和2.8英寸液晶屏共同組成了一種圖像采集系統的硬件。經測試,液晶屏上的實時圖像清晰流暢,同時上位機能接收到正確的視頻數據,可用于進一步的處理和存儲。

參考文獻

  [1] 劉妍秀.USB3.0體系結構及發展前景[J].長春大學學報,2010,20(10):23-26.

  [2] 李德明,韓劍,江國強. 基于OV7570的圖像采集及顯示系統設計[J]. 儀器儀表學報,2010,31(8-增刊):30-33.

  [3] 任志敏. 一種基于C51單片機的圖像采集處理系統設計[J]. 電腦開發與應用,2013,26(3):57-59.

  [4] 王晗,李翔,李忠敏,等.基于OV7670的圖像采集與顯示設計[J].中國科技息,2013(11):90-91.


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 中文字幕第13亚洲另类| 老子影院午夜伦手机不卡6080| 日本wwwxxxxx| 蜜臀av无码精品人妻色欲| 美女在线免费观看| 精品处破视频在线观看| 色狠狠狠狠综合影视| 高清色黄毛片一级毛片| 性xxxxfeixxxxx欧美| a网站在线观看| 99精品在线免费| WWW四虎最新成人永久网站| www夜片内射视频日韩精品成人| 久久人人爽人人人人爽av| 久热这里有精品| 亚洲a级片在线观看| 亚洲aⅴ在线无码播放毛片一线天| 亚洲欧洲成人精品香蕉网| 亚洲成A人片在线观看无码| 亚洲女成人图区| 乱人伦中文视频在线| 久久婷婷五月综合97色| 亚洲va久久久噜噜噜久久狠狠| 亚洲春色第一页| 亚洲精品你懂的| 亚洲系列国产精品制服丝袜第| 亚洲自国产拍揄拍| 亚洲成年网站在线观看| 久青草视频在线播放| 丰满的奶水边做边喷| 一级特黄录像视频免费| 9久热精品免费观看视频| 夜色福利久久久久久777777| 3d动漫精品啪啪一区二区中文| 黄色免费在线观看网址| 老司机午夜精品视频在线观看免费| 男女啪啪漫画无遮挡全彩| 日韩高清一级毛片| 宵宫被爆3d动画羞羞漫画| 国产真实伦实例| 国产做床爱无遮挡免费视频|