STM32學習筆記之攝像頭實驗(OV2640)

2021-07-26 22:52:55 字數 2698 閱讀 9676

簡介:

ov2640是omnivision公司生產的一顆1/4寸的cmos uxga(1632*1232)影象感測器。該感測器體積小、工作電壓低,提供單片uxga攝像頭和影像處理器的所有功能。通過sccb 匯流排控制,可以輸出整幀、子取樣、縮放和取視窗等方式的各種解析度8/10位影像資料。uxga最高15幀/秒(svga可達30幀,cif可達60幀)。

注:sccb匯流排可以看成iic匯流排的簡化版

視窗設定:

感測器視窗設定(ov2640_window_set)

影象尺寸設定(ov2640_imagesize_set)

影象視窗設定(ov2640_imagewin_set)

影象輸出大小設定(ov2640_outsize_set)

關係如下圖:

一般來說1,2採取預設設定,我們只需要調整3和4即可。

時序圖:

ov2640是採取先讀一行畫素,再跳到下一行重新開始讀取新一行畫素。

首先,我們看行輸出時序:

影象資料在href為高的時候輸出,當href變高後,每乙個pclk時鐘,輸出乙個位元組資料。比如我們採用uxga時序,rgb565格式輸出,每2個位元組組成乙個畫素的顏色(低位元組在前,高位元組在後),這樣每行輸出總共有1600*2個pclk週期,輸出1600*2個位元組

然後,看幀輸出時序:

當href輸出高電平時開始讀取一行畫素點,當低電平時不操作,重複操作即可讀取一幀影象。

ov2640支援:rgb565或jpeg輸出。rgb565輸出時,時序如圖所示。jpeg輸出時,pclk大大減少,且href不連續,資料流以0xff,0xd8開頭,以0xff,0xd9結束,將此間資料儲存為.jpg即可在電腦開啟檢視。

dcmi是stm32f4晶元自帶的乙個數字攝像頭介面,該介面是乙個同步並行介面,能夠接收外部8位、10位、12位或 14位 cmos 攝像頭模組發出的高速資料流(可達 54 mb/s)。

介面定義如下:

1,資料據輸入(d[0:13]),接攝像頭的資料輸出。

2,水平同步(行同步)輸入(hsync),接攝像頭的hsync/href訊號。

3,垂直同步(場同步)輸入(vsync),接攝像頭的vsync訊號。

4,畫素時鐘輸入(pixclk),接攝像頭的pclk訊號。

dcmi接收到的資料,儲存在dcmi_dr暫存器(32位)裡面,我們接atk-ov2640採用8位資料寬度,所以每4個畫素時鐘,才會捕獲完32位資料,第乙個位元組存放在lsb位置,第四個位元組存放在msb位置,如下圖所示:

注:低位元組在前,高位元組在後

dcmi支援dma傳輸,當dcmi_cr暫存器中的capture位置1時,啟用dma介面。

像頭介面每次在其暫存器(dcmi_dr)中收到乙個完整的32位資料塊時,都將發乙個dma請求,由dma將dcmi_dr暫存器的值搬運到目的位址(比如lcd/sram)。dcmi的dma請求是對映在dma2通道1的資料流1上面的,所以配置dma時,應該配置這個。

dcmi控制暫存器(dcmi_cr)

enable,用於設定是否使能dcmi。在使能之前,必須將其他配置設定好。

fcrc[1:0],這兩個位用於幀率控制,我們捕獲所有幀,所以設定為00即可。

vspol,用於設定垂直同步極性,也就是vsync引腳上面,資料無效時的電平狀態,根據前面說所,我們應該設定為0。

hspol,用於設定水平同步極性,也就是hsync引腳上面,資料無效時的電平狀態,同樣應該設定為0。

pckpol,用於設定畫素時鐘極性,我們用上公升沿捕獲,所以設定為1。

cm,用於設定捕獲模式,我們用連續採集模式,所以設定為0即可。

capture,用於使能捕獲,我們設定為1。該位使能後,將啟用dma,dcmi等待第一幀開始,然後生成dma請求將收到的資料傳輸到目標儲存器中。(最後使能)

攝像頭操作:

一.初始化時鐘

二.初始化ov2640:

1. 初始化io口

2. 上電,並復位

3. 執行初始化序列

三.設定影象視窗設定和影象輸出大小設定,可以調整影象大小或者縮放模式

四.初始化dcmi:

1. 配置相關引腳的復用功能,使能dcmi時鐘。

2. 設定dcmi工作模式及pclk/hsync/vsync等引數。

3. 設定dma

4. 啟動dcmi傳輸。即設定dcmi->cr的最低位為1

STM32 OV2640攝像頭學習筆記

五 ov camera 配置 基本概念 比如我們採用uxga時序,rgb565格式輸出,每2個位元組組成乙個畫素的顏色 低位元組在前,高位元組在後 這樣每行輸出總共有1600 2個pclk週期,輸出1600 2個位元組 dcmi介面簡介 初始化流程 配置相關引腳的復用功能,使能dcmi時鐘 設定dc...

用STM32製作的TCP網路攝像頭

嵌入式硬漢armfly 做的開源應用 armfly的v5開發板 主控 stm32f407電路板 1 配套的下位機是基於rtx4 rl tcpnet實現,務必使用mdk4.74進行編譯,其它mdk版本未做測試。上位機是用的vc6.0實現的。另外當前僅基於v5開發板製作了,後面有精力做了個v6板子的。2...

STM32驅動OV7725攝像頭顏色識別

實驗目的 使用stm32驅動ov7725攝像頭進行影象實時採集,在tft螢幕上實時顯示並識別影象中的特定顏色,在顏色的周圍畫上框。實驗現象 實現原理 將攝像頭的資料讀出寫入tft屏,讀取tft螢幕上的畫素點的顏色進行識別。由於rgb格式的顏色資料的效果不好,所以將其轉換為hsl格式資料。首先遍歷尋找...