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


OV2640

相關概念:

  • UXGA,即分辨率位1600*1200的輸出格式,類似的還有:SXGA(1280*1024)、XVGA(1280*960)、WXGA(1280*800)、XGA(1024*768)、SVGA(800*600)、VGA(640*480)、CIF(352*288)和QQVGA(160*120)等。
  • PCLK,即像素時鍾,一個PCLK時鍾,輸出一個(或半個)像素。
  • VSYNC,即幀同步信號。
  • HREF /HSYNC,即行同步信號。

簡介: 
OV2640是OmniVision公司生產的一顆1/4寸的CMOS UXGA(1632*1232)圖像傳感器。該傳感器體積小、工作電壓低,提供單片UXGA攝像頭和影像處理器的所有功能。通過SCCB 總線控制,可以輸出整幀、子采樣、縮放和取窗口等方式的各種分辨率8/10位影像數據。UXGA最高15幀/秒(SVGA可達30幀,CIF可達60幀)。 
注:SCCB總線可以看成IIC總線的簡化版


窗口設置:

  1. 傳感器窗口設置(OV2640_Window_Set)
  2. 圖像尺寸設置(OV2640_ImageSize_Set)
  3. 圖像窗口設置(OV2640_ImageWin_Set)
  4. 圖像輸出大小設置(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

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

嵌入式學習交流群:561213221


免責聲明!

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



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