【更新】OV攝像頭圖像采集基礎知識總結


一、前言

  目前FPGA用於圖像采集 傳輸 處理 顯示應用越來越多,主要原因是圖像處理領域的火熱以及FPGA強大的並行處理能力。本文以OV7725為例,對攝像頭使用方面的基礎知識做個小的總結,為后續做個鋪墊。

二、DVP及SCCB接口時序  

  下圖是OV7725 datasheet中攝像頭傳感器內部結構視圖。我們主要關注常用的用戶接口——DVP(數字視頻端口)。

   XCLK:工作時鍾輸入,由主控器產生,頻率為24MHz;

  HREF:行參考信號輸出;

  PCLK:像素時鍾輸出,由XCLK產生,用於控制器采樣圖像數據;

  VSYNC:場同步信號輸出;

  RSTB:復位輸入,低電平有效;

  PWDN:低功耗模式選擇輸入,正常工作期間需拉低;

  SCL:SCCB管理接口時鍾,最高頻率400KHz;

  SDA:SCCB接口串行數據總線;

  D[9:0] 像素數據輸出;

  PCLK引出一個幀率的概念,單位為fps(Frames Per Second),指每秒鍾輸出幾幅靜態圖像,幀率越高視頻越流暢。另外SCCB總線與IIC總線非常相近,主機寫時序基本一致,故多數圖像采集系統直接復用IIC控制器對圖像傳感器內部寄存器進行配置。這里給出大體的讀寫流程,具體見參考文獻2。需要格外注意的是,SIO_C時鍾信號在IDLE狀態下必須為高電平。

寫操作:

讀操作(分兩部分):

總結來說,SCCB與IIC的主要區別在以下兩點:

1 IIC有重復開始的概念,讀操作先寫設備地址 再寫寄存器地址,然后重新開始,寫設備地址,讀取數據。而SCCB讀操作時在第一次寫寄存器地址后必須有結束條件。

2 IIC主機寫數據到從機時,從機必須在寫8bit下一時鍾拉低總線響應主機。IIC主機讀取從機數據時,多字節連續讀取除最后字節主句均在第9時鍾周期拉低總線響應,單字節讀取拉高總線便於下一拍提供停止條件。而SCCB每個phase第9bit為don't care bit /NACK,主機寫從機第9bit不關心,讀取從機數據由於不支持多字節操作第9bit主機必須拉高總線。

  接下來從整體上把握輸出圖像數據與同步信號的關系。(圖片截取自《OV7725攝像頭編程基本知識筆記》,見參考文獻3.

   兩個VSYNC高脈沖之間為包含一幀圖像數據,但只有HREF高電平期間數據才為有效數據,每個HREF高電平區間對應一行圖像數據。因此通過這兩個信號即可找到有效的圖像數據。OV7725攝像頭支持多種圖像輸出格式,此處闡述常用的RGB565格式:

  圖像數據在PCLK下降沿輸出,控制器在其上升沿采樣。當選擇此模式輸入時,僅使用數據線高八位。時序圖給出了相鄰兩個字節數據內容,可見兩個字節表示一個像素點數據,從高位到低位依次是:R 5bit,G 6bit,B 5bit。Ov7725圖像傳感器的像素30萬,分辨率:640*480,即每行640個有效像素點,一共480行。所以每個HREF高脈沖期間有640*2個PCLK周期,兩個VSYNC高脈沖期間循環480次。

三、時鍾與幀率計算

  攝像頭輸入時鍾是XCLK,輸出時鍾是PCLK。如何給出合理的XCLK並得知PCLK頻率至關重要。在datasheet中給出了詳細的寄存器配置介紹,其中地址是0X0D和0X11的兩個寄存器與時鍾密切相關。寄存器CLKRC決定如何分頻,公式如下:f internal clock = f input clock * PLL multiplier / [(CLKRC[5:0]+1)*2] 。我也是看了半天的相關資料才知道f internal clock指的就是攝像頭輸出的PCLK。公式中f input clock指的是XCLK頻率,PLL multiplier只COM4寄存器配置的PLL倍頻系數。

  比如配置寄存器COM4為0X41,配置CLKRC為0X00。因此,f pclk = f xclk * 4 / [(0+1)*2] = 2 f xclk。此時XCLK時鍾頻率若是25MHZ,則PCLK頻率是50MHZ。現在我們以筆者選用的VGA幀格式,RGB565像素格式來算一下幀率。

  幀率即為每秒鍾輸出多少幅完整圖像,所以幀率=輸出時鍾頻率/每幀的時鍾周期數。最終幀率=50*10^6/(510*784*2) = 62.5Hz。一般人眼在幀率為50Hz以上無法察覺圖像的閃動,具有較好的顯示效果。

參考文獻

ov7725手冊(可注釋)_圖文_百度文庫 https://wenku.baidu.com/view/3e5504004431b90d6c85c764.html 

2 OV7725學習之SCCB協議(一) - aslmer - 博客園 https://www.cnblogs.com/aslmer/p/5965229.html

3 ov7725數字攝像頭編程基本知識筆記_圖文_百度文庫 https://wenku.baidu.com/view/d1af7a731711cc7931b716c6.html

ov7725圖像幀率計算公式總結 - yinjia002的博客 - CSDN博客 https://blog.csdn.net/yinjia002/article/details/79163784

OV7725的幀率和PCLK寄存器設置 - m0_37170593的博客 - CSDN博客 https://blog.csdn.net/m0_37170593/article/details/73918403

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM