硬件基礎知識和典型應用-關於OVXXXX 系列攝像頭使用說明


 

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnHardware" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 

說明

首先能夠采集OVXXXX系列的攝像頭數據並不是什么高端和困難的事情!

 

現在說一下怎么采集攝像頭數據(不帶FIFO)

1.攝像頭就是里面有很多采集點組成

如果說一個攝像頭是 240*320的

就是說橫着有240個采集點,豎着有320個采集點,共76800個采集點

 

 

2.以OV7670為例(假設采集240*320個像素點,模式輸出是RGB422)

 

 

 

3.3V和GNG  -- 攝像頭供電

-------------------------------------------------------------------------

SDA和SCL為IIC配置攝像頭的引腳

可以設置攝像頭具體橫豎采集的像素點個數

可以設置采集模式,列如:RGB 422(就是說一個像素點用 8位數據表示 ,前面4位代表紅色,中間2位代表藍色,最后2位代表綠色)

列如: 采集的數據是  0xF0 (1111 0000)  就是純綠色

采集的數據是  0x00 (0000 1100)  就是純藍色

采集的數據是  0x00 (0000 1000)  就是不怎么藍的顏色

有可能有人會問這顏色識別的有點不好呀,分辨率有點低.其實有RGB565,但是呢為了方便敘述,咱先按照RGB422來講解.

-------------------------------------------------------------------------

VS (VSYNC) ----攝像頭工作的時候,這個引腳來一個高脈沖說明攝像頭開始采集一副圖像了(采集240*320個像素點)

 

 

注意哈,一般咱們把開始采集一副圖像就做開始采集一幀圖像

一般攝像頭采集是從左到右 從上到下采集,當然也可以使用IIC發送命令控制它采集的模式

-------------------------------------------------------------------------

HS (HREF) ---- 當這個引腳變為高電平,說明攝像頭正在輸出某一行像素點

假設是剛開始采集,那么這個引腳第一次變為高電平,說明攝像頭正在輸出第一行的像素點(從左到右 240個)

第一行的像素點采集完了,就會變為低電平,然后開始采集第二行,這個引腳又會主動變為高電平

然后就是這樣子循環.

-------------------------------------------------------------------------

PLK ---- 當這個引腳變為高電平,說明攝像頭正在輸出一個像素點的數據

假設是剛開始采集,那么這個引腳第一次變為來一個高脈沖,說明攝像頭正在輸出第一行的第一個像素點的數據

-------------------------------------------------------------------------

D0 - D7引腳  ---- 這個是輸出實際像素點采集的數據的引腳

配合上面的 PLK引腳,當PLK引腳來一個高脈沖以后,讀取D0 - D7引腳的值

便可獲取采集的像素點的數據.假設是剛開始采集采集的數據是 1111 0000  (0xF0)

就說明采集的第一行的第一個像素點的數據是 0xF0 純綠色

 

 

最后總結

假設是 240*320

VS (VSYNC)  ,  HS (HREF) 和 PLK  引腳都接到單片機的中斷引腳上

D0 - D7 接到單片機的隨意8個引腳上

當檢測到 VS (VSYNC) 來了一個高脈沖說明開始采集一幀圖像了

然后檢測 HS (HREF) 引腳變為了高電平

說明開始采集一行圖像了,然后只要PLK引腳來一個高脈沖,說明攝像頭輸出了

一個像素點的數據,然后單片機讀取 D0 - D7 就獲取了數據了

然后通過 PLK 和  D0 - D7就可以獲取第一行的 240個數據

 

第一行輸出完成 HS (HREF) 引腳變為了低電平

開始輸出第二行的時候 HS (HREF) 引腳變為了高電平

然后只要PLK引腳來一個高脈沖,說明攝像頭輸出了

一個像素點的數據,然后單片機讀取 D0 - D7 就獲取了數據了

然后通過 PLK 和  D0 - D7就可以獲取第二行的 240個數據

然后就是循環采集320行數據.

 

 

難在哪里呢?

從上面的介紹可以看出好像挺簡單的

那難在哪里呢?

 

1.難點1

大部分人的基礎知識不夠,就是說連基本的IIC通信,中斷采集都不會

注意哈,我說的是會!!!

列如我問下: 等待芯片應答具體是啥?

發送非應答具體是啥??

 

2.難點2

攝像頭輸出的頻率實在是太快了

真的是太快了!!!!一般的單片機達不到這種速度

咱們只看 PCLK 的輸出速度哈

下圖中大概是 PCLK的高電平時間 大概是8ns

整個周期才16ns .....這是普通單片機做不到的

一般情況下就是72M主頻的STM32F103 執行中斷的時間也是約1us

即使是關閉所有的其它外設,中斷時間也只能達到 400ns

 

 

 

 

 

 

 

然后攝像頭模組加個FIFO芯片

 

 

 

FIFO的作用是啥?

沒有FIFO的時候,攝像頭輸出數據是主動的,時鍾也是攝像頭主動發出的,咱單片機只能接收判斷

FIFO芯片幫你緩存圖像數據.

讀取每一個字節的數據也是靠一個引腳產生時鍾上升沿,不過這個引腳是單片機自己產生.

現在就是說你想啥時候讀取數據就啥時候讀取....

 

 

 

最后關於程序

去淘寶搜索攝像頭,然后基本上都會給例程!!!

 


免責聲明!

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



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