search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

OV7670 攝像頭使用說明

目錄

1.OV7670 一般攝像頭模塊

1.1 簡介

1.2 管腳定義

1.3 控制方式說明

1.4 採集圖像的基本方法

2.OV7670 帶 FIFO 攝像頭模塊

2.1 簡介

2.2 管腳定義

2.3 控制方式說明

2.4 圖像採集的基本方法

3.問題解答

3.1 圖像採集難嗎

3.2 學習圖像方面的知識需要哪些基礎

3.3 初學者遇到問題該怎麼解決

3.4 模塊提供那些資料

3.5 單片機能夠真正的採集圖像嗎

3.6 帶 FIFO 和不帶 FIFO 的模塊到底哪個好,有什麼區別

3.7 模塊上有晶振好,還是沒晶振好

3.8 攝像頭寄存器該怎麼設置

3.10 如果想真正實現圖像的採集並且能夠處理圖像數據該如何做

3.11 騎飛電子的那個模塊能夠適合飛思卡爾小車的比賽

3.12 模塊輸出到底是模擬的還是數字的

3.15 如何檢測攝像頭模塊是否損壞

3.16 攝像頭模塊和模組的區別是什麼

1.OV7670 一般攝像頭模塊

1.簡介:

OV7670 一般模塊指低成本數字輸出 CMOS 攝像頭,其攝像頭包含 30w 像素的 CMOS 圖像感光晶元,3.6mm 焦距的鏡頭和鏡頭座,板載CMOS 晶元所需要的各種不同電源(電源要求詳見晶元的數據文件),板子同時引出控制管腳和數據管腳,方便操作和使用。

圖 1.OV7670 一般模塊

2.管腳定義:

控制感測器所需的管腳定義如下:

3V3-----輸入電源電壓(推薦使用 3.3,5V 也可,但不推薦使用)

GDN-----接地點

SIO_C---SCCB 介面的控制時鐘(注意:部分低級單片機需要上拉控制,和

SIO_D---SCCB 介面的串列數據輸入(出)端(注意:部分低級單片機需要上拉控制,和 I2C 介面類似)

VSYNC---幀同步信號(輸出信號)

HREF----行同步信號(輸出信號)

PCLK----像素時鐘(輸出信號)

XCLCK---時鐘信號(輸入信號)

D0-D7---數據埠(輸出信號)

RESTE---複位埠(正常使用拉高)

PWDN----功耗選擇模式(正常使用拉低)

3.控制方式說明

採集圖像數據需要嚴格按照 OV 公司的晶元時序進行,這些時序包括:

(1) SCCB 通訊時序,其作用是設置晶元內部寄存器,以控制圖像的各種所需功能。其時序和一般的 I2C 時序相似,部分低級單片機要接上拉電阻。

(2) 行輸出時序

行輸出時序可用來控制一行像素的輸出情況,HREF 即一行輸出的開始和結束信號,同時在像素時鐘的同步下,輸出 8 位的像素信號

(3) 全幀輸出下的時序情況:(VGA 為例)

該圖顯示的是一副圖像輸出的情況下,各控制信號和數據信號的輸出。圖中,VGA=640X480 大小情況下,幀同步信號,行同步信號(HREF 或者 HSYNC,註:HSYNC 在其它場合下使用,CMOS 可以設置,更多時候用HREF 即可)如圖:

4.採集圖像的基本方法

(1)單片機直接採集:

這種方法是最簡單,最直接,但也是最不好實現的方法,原因是多數的 CMOS 晶元(如 ov7670)的時鐘速度可高達 24M,一般單片機的 IO 端口速度根本不可能達到,所以需要高速 MCU。這對多數用戶來講有些不現實。但也不是完全沒有辦法在低速上實現採集,方法也很簡單,那麼就是降低 CMOS 的輸出速度,不過這需要靠外部的晶振和內部的 PLL 電路以及像素時鐘速度,幀速等多個寄存器共同設置,並且要和 MCU 的 IO 速度匹配才可實現。但不建議這麼做,原因是:這種寄存器設置將帶來更多的學習困難和理解困難,並導致硬體圖像的採集速度可能下降到0.5幀以下,同時帶來圖像失真的可能。

註:部分 CMOS 時鐘速度不快,可以單片機直接採集,如 OV7660,但該芯片已經停產。

(2)高級 32 位晶元直接使用

某些 32 位的 ARM 核,MIPS 核,x86 核直接帶有 camera 介面,可以直接使用,典型的如三星的 arm9,sc2440 等。

該採集方法請參考具體的晶元器件數據手冊。

(3)DMA 方式的採集方法

這種方法一般需要具有 DMA 功能的 16 位以上的高級單片機來實現,通過DMA 方式,直接從匯流排或者 IO 口採集數據送入內存,內存中的數據可以存儲,計算,保留,或者供顯示使用。

(4) 間接採集並顯示的方法(推薦使用)

這種方法是最容易實現,能夠直接看到採集的圖像內容。實現採集就顯示的功能,這種方法具有較高幀速,一般 QVGA 可保證在 30 幀左右的速度。實際上,這種間接的辦法其實就是將CMOS輸出的數據直接送到顯示屏(如TFT 顯示器的內存中)進行顯示的,數據並不經過 MCU(所以對 MCU 而言是間接採集),也無法經過 MCU,因此可以達到較高的幀速。

2.OV7670 帶 FIFO 模塊

1.簡介:

OV7670 帶 FIFO 模塊,是針對慢速的 MCU 能夠實現圖像採集控制推出的帶有緩衝存儲空間的一種模塊。這種模塊增加了一個 FIFO(先進先出)存儲晶元,同樣包含 30w 像素的 CMOS 圖像感光晶元,3.6mm 焦距的鏡頭和鏡頭座,板載 CMOS 晶元所需要的各種不同電源(電源要求詳見晶元的數據文件),板子同時引出控制管腳和數據管腳,方便操作和使用。

2.管腳定義:

控制感測器所需的管腳定義如下:

3V3-----輸入電源電壓(推薦使用 3.3,5V 也可,但不推薦)

GDN-----接地點

SIO_C---SCCB 介面的控制時鐘(注意:部分低級單片機需要上拉控制,和I2C 介面類似)

SIO_D---SCCB 介面的串列數據輸入(出)端(注意:部分低級單片機需要上拉控制,和 I2C 介面類似)

VSYNC---幀同步信號(輸出信號)

HREF----行同步信號(輸出信號)

PCLK----像素時鐘(輸出信號)

XCLCK---時鐘信號(輸入信號)

D0-D7---數據埠(輸出信號)

RESTE---複位埠(正常使用拉高)

PWDN----功耗選擇模式(正常使用拉低)

STROBE—拍照閃光控制埠(正常使用可以不需要)

FIFO_RCK---FIFO 內存讀取時鐘控制端

FIFO_WR_CTR----FIFO 寫控制端(1 為允許 CMOS 寫入到 FIFO,0 為禁止)

FIFO_OE----FIFO 關斷控制

FIFO_WRST—FIFO 寫指針服務端

FIFO_RRST—FIFO 讀指針複位端

3.控制方式說明

由於採用了 FIFO 做為數據緩衝,數據採集大大簡便,用戶只需要關心是如何讀取即可,不需要關心具體數據是如何採集到的,這樣可減小甚至不用關心 CMOS 的控制以及時序關係,就能夠實現圖像的採集。

控制時序如下:

4.採集圖像的基本方法

(1)單片機直接採集:

用戶只需要按時序圖控制相關的幾個控制引腳即可,可以很方便的使用在低速單片機上,另外一個好處是,可以直接 IO 口讀取數據,讀出的數據可以直接送屏,也可以經過 MCU 簡單處理;當然也可以不經過MCU,直接送到屏等外圍器件使用。

3.問題解答

很多用戶在使用本公司的模塊時,遇到不少問題,這些問題既有技術問題,也和用戶本身知識結構相關,針對這些集中的問題,對此進行問題匯總,並一一解答,希望用戶在使用時能夠了解。

1. 圖像採集難嗎?

答:這個問題對初次接觸的用戶來講經常會遇到。難和容易都是相對的,它和許多相關的基礎知識緊密相聯繫。從涉及到的學科和內容上來講,圖像採集或者圖像處理(硬體)可以講是數字電子學中最難的,因為它涉及到光學,如顏色,白平衡,色空間,鏡頭(這些概念在設置感測器寄存器的時候會大量出現)等;涉及到感測器基本原理,如 CMOS 和 CCD的原理和區別;涉及到電子學中的難題,如:海量數據量的傳輸、存儲,涉及到主控制晶元的選擇問題,如速度,和處理能力;涉及到電路板的高速布板問題;涉及到圖像的編碼和解碼等演算法問題。

特別是當像素不斷增加的時候,這些問題會更加突出,因此客觀的講,如果和其它的感測器或者模塊相比較,例如溫度,無線模塊等等還是有一定難度的,這些模塊只要給出介面,一般都容易知道如何處理,但圖像並不如此。然而,難度是和相關基礎知識的多少成反比例的,掌握的相關基礎知識越多,就會越覺得簡單。

2. 學習圖像方面的知識需要哪些基礎?

答:首先,基本的光學知識要先了解,比如:什麼是顏色空間,RGB,YUV是什麼,這些基礎的必須了解;其次,紮實的電子學基礎,比如:單片機基本上運用自如,時序圖看起來沒有任何難度;另外,較好的編程能力和讀程序能力,這也是硬體圖像的基礎;最後,上位機中對圖形圖像的畫法,處理等也有較深刻的認識。

3. 初學者遇到的問題改怎麼解決?

答:很多用戶都是初次學習圖像硬體採集的相關內容,甚至剛剛開始單片機學習的用戶也想學習這方面的內容。而實際上,他們遇到的問題很雷同,比如,圖像中的一些基本概念如 RGB,YUV,模擬圖像,數字圖像等就比較模糊,電子學中如 FIFO 是什麼,也經常被問到。其實,這些簡單的基礎知識或者概念只要 Google 或者 Baidu 一下,就可以快速找到大量的相關資料。

4. 模塊提供的是那些資料?

答:提供圖像晶元的數據文件(這個很重要),這裡要做個說明,那就是相關資料很少,得來不易。原因是:實際上這些數據文件都是 OV 公司不經意間流出的東西,做為個人,OV 公司一般根本不會提供這些內容的,它只和對應的有晶元需求的公司簽訂協議,提供相關資料,並且有保密協議。我們獲得的資料也是網上公開后得到的。除此之外,我們還提供中文的數據資料文件,SCCB 介面、模塊定義、模塊原理、模塊尺寸等資料。此外,提供了一個基於 C8051F330 的驅動程序,該程序的原理是將模塊數據直接送屏顯示。網上有人做過 AVR,STM32 單片機的驅動,原理類似,請自己搜索,至於用 8051 等單片機的驅動程序,我們沒有做過,但觸類旁通,只要理解了原理,驅動方法其實都是一樣的。

5. 單片機能夠真正的採集圖像嗎?

答:這個明確的講是不行的,特別是 8 位的單片機那更是不行的,必須尋求兩種解決辦法,一種是增加一個緩衝,如 FIFO,另外一個就是使用高速,如採用 32 位 MCU。 8 位單片機實現的多數僅僅是提供一個 SCCB匯流排讀取或者設置的功能。即使是 32 位,比如大家都喜歡的 stm32,它也不能直接用 IO 口採集,因為 IO 速度還是不行,騎飛電子家族曾經做過實驗,用 IO 採集,實現的刷屏速率不到 1 幀,基本沒有適用價值,除非使用 DMA 方式,也就是使用匯流排的帶寬速度,可以實現採集,但這個速度也只能在 5-10 幀左右!另外一個問題就是,即使採集到,由於一副圖像的數據量很大,QVGA的數據量是 320x240x2,你放到哪裡呢?所以只能尋找 32 位以上的 MCU。

6. 帶 FIFO 和不帶 FIFO 的模塊到底哪個好,有什麼區別?

答:按照上述幾個問題,基本能夠理清一個思路,那就是,如果針對 8位單片機,圖像採集是不現實的,只能用更高級的 MCU 或者採取更靈活的處理手段才能實現真正的圖像採集。那麼這樣就容易明白了,用那種攝像頭是根據你的需求來確定的,如果你就是想顯示下圖像,8 位足夠,不帶 FIFO 的攝像頭足矣,帶個 TFT顯示屏即可! 如果你的晶元是高級 MCU,ARM9 以上或者 DSP,那麼也可以選擇這個不帶 FIFO 模塊的,因為本身高檔晶元的速度很快,存儲空間也很大,足夠直接採集圖像數據!如果還想對獲取的圖像數據做些非常簡單的處理(注意是非常簡單),請選擇 FIFO 攝像頭,由於 FIFO 不具備地址功能,因此他也就不具備數據的定位(選址)讀取功能,所以不可能有真正的數據處理能力!請切記!!!

另外,帶 FIFO 攝像頭模塊避免了需要了解更多圖像輸入或者採集的原理,降低了學習難度,用戶只需知道如何從 FIFO 中讀取數據即可,因此更建議初學者使用該模塊!

總結一下就是:兩種模塊的選擇,要具體看項目的需求和目標來確定。

7. 模塊上有晶振好,還是沒晶振好?

答:晶振選擇也是根據外圍電路的能力來確定的。由晶振提供時鐘(註:4-24M 都可,盡量是 4 的倍數,CMOS 內部有 PLL 功能)信號是可行的。但當前大多數的 MCU 都具有直接輸出頻率信號的能力,比如,有些晶元,如 CYPRESS ,C8051f 等等,而且這個頻率信號一般非常穩定,所以強烈建議用這樣的時鐘信號直接供給攝像頭。至少,如果能輸出 50%占空比的 PWM,那麼這個也是可以直接供給 CMOS 晶元使用的。

所以,帶不帶晶振根本沒有本質區別,至於好壞,除了多增加成本外,別無它用。

8. 攝像頭寄存器該怎麼設置

答:沒有其它簡潔的辦法,只能參考 OV 公司的寫的很爛數據手冊,慢慢閱讀理解和消化。稍快一點的辦法就是按照騎飛電子提供的一個 Demo,針對其中寄存器的初始化設置和與其相對應的數據手冊仔細推敲。當然也可以不去理解,直接使用即可!

9. 騎飛電子模塊提供的 Demo 輸出的數據是什麼格式的?

答:是 RGB565,QVGA 格式的。這樣能夠很好的和 320x240 的顯示屏直接相匹配,方便使用和參考!

10.如果想真正實現圖像的採集並且能夠處理圖像數據該如何做?

答:按下面幾個方案選擇:

(1)如果想用 8 位實現採集和處理,基本不現實,簡單處理的話,用帶FIFO 的攝像頭;

(2)32 位的高速晶元可以,有些直接有圖像感測器介面,有些必須尋找一些辦法,如騎飛電子基於 stm32f103 的 DMA 方式;

(3)真正的圖像採集和處理,使用 DSP 圖像採集處理晶元,如 TI 的和ADI 公司的晶元,但這些晶元價格超高,單片都在 80-200 元之間;

(4)FPGA 也可以實現類似功能,但如果要有速度和處理能力,價格也是幾何數的增長;

11.模塊那個能夠適合飛思卡爾小車的比賽?

答:根據不少用戶的反應,現在看來,選擇帶 FIFO 的頭還是更現實些!

12.模塊輸出到底是模擬的還是數字的

答:是數字攝像頭,它的輸出是標準格式的,具體可以參考數據手冊。至於模擬攝像頭一般如 AV 輸出,有兩種制式,使用時需要編碼和解碼才能和大多數的數字晶元或者屏連接。

13.如何檢測攝像頭模塊是否損壞

答:通電,加時鐘信號,REST 端拉高,PSWN 接地,示波器檢測數據端是否有輸出,如果有,說明 CMOS 是好的。

14. 攝像頭模塊和模組的區別是什麼

答:

模塊就是將 CMOS 感測晶元,外圍電路集成到一塊 PCB 板子上,需要使用的控制管腳引出,裝上攝像頭,即稱之為模塊。

模組就是感測器和微型的鏡頭集成在一起,有軟線 FPC 線引出管腳,但沒有外圍電路,使用時需要主板提供外圍電路才能正常工作。

如果模組使用轉接板,也可以達到模塊的方便使用的效果,轉接板上已經設計好了模組的外圍電路,引出了和模塊定義一樣的管腳,方便控制和操作。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦