在上例中,介紹了配置OV5640所需的SCCB時序,以及具體的實現(xiàn)。本例將介紹與初始化相關(guān)的重要寄存器,以及上電時序。
OV5640的寄存器非常多,從它的寄存器的地址為16bit就可以看出,在商家提供的一些例程中,可以看到配置寄存器的語句多達200行,無法一時間學(xué)習(xí)掌握所有的寄存器。所以只需要掌握一些重要即可,例如控制圖像輸出格式、控制圖像輸出大小、控制圖像輸出幀率的寄存器。下面就開始介紹吧
二. 重要寄存器講解
一般來說,只需要了解三大類寄存器即可 :時鐘PCLK輸出頻率寄存器 , 圖像輸出大小寄存器 , 圖像輸出格式寄存器
1
時鐘PCLK輸出頻率寄存器
PCLK時鐘主要由0x3035 - 0x3037三個寄存器控制(其余寄存器也有,可以不看),詳情如下,一般來說完整的配置參數(shù)會給你配置到48MHz / 84MHz,如果想要配置成其他的頻率,可以調(diào)整0x3036寄存器的值即可。具體是怎么對應(yīng)的話,手冊上好像沒有給出。
2
圖像輸出大小寄存器
這部分比較關(guān)鍵,同時也比較容易,看下面這張圖片即可,physical pixel size為物理感光的尺寸,也就是攝像頭能夠感光的大小。ISP input size為圖像處理單元輸入的大小,由物理感光的尺寸經(jīng)過一定的處理,輸入進ISP進行處理,data output size 為實際攝像頭輸出的像素大小,為經(jīng)過ISP進行處理縮放之后的圖像數(shù)據(jù)。
在實際使用的過程中,只需要關(guān)心data output size的大小即可。即只需要配置0x3808-0x3809 和0x380a-0x380b四個寄存器即可。
另外,有四個寄存器也是需要關(guān)注的,0x380c-0x380f,這四個寄存器分別配置水平輸出的像素總個數(shù),以及豎直輸出像素的總個數(shù),這個配置要比data output size要大,和VGA的行列消影類似
3
為奧運健兒喝彩
這個配置只需要配置0x4300寄存器即可,類別比較多,可以自行查看手冊。
以上需要關(guān)注的寄存器,都是在其他寄存器配置好的前提下,然后進行修改。完整的寄存器配置可以去正點原子或者GitHub上copy,本例使用的是在GitHub上copy下來的。
三. 上電時序講解
這部分在手冊中給出,通過下圖,可以看出,還是比較容易的。初始化時序只需要看到t4結(jié)束,后面就不要管了,后面是掉電時序。
第一步. 上電后,將PWDN拉高,RESETB拉低
第二步. 延時大于等于t2(5ms)時間后,將PWDN拉低,并且一直保持
第三步. 在延時大于等于t3(1ms)時間后,將RESETB拉高,將PWDN拉低,并且一直保持
第四步.最后延時t4(20ms),完成上電
完成上電后,即可開始SCCB對寄存器進行初始化
四. 程序介紹
程序主要包括三個部分,上電時序,然后是寄存器初始化,最后就是接收圖像數(shù)據(jù)了。這部分比較容易,就不做介紹了。
always@(*) begin case(state) S_POWER_UP: if( ov5640_powerup_ack == 1'b1 ) next_state <= S_INIT; ? ? ? ?else ? ? ? ? ? ?next_state <= S_POWER_UP; ? ?S_INIT: ? ? ? ?if( ov5640_init_ack == 1'b1 ) ? ? ? ? ? ?next_state <= S_WORK; ? ? ? ?else ? ? ? ? ? ?next_state <= S_INIT; ? ?S_WORK: ? ? ? ?next_state <= S_WORK; ? ?default : next_state <= S_POWER_UP; ? ?endcase end
最終ov5640配置為640 x 480 大小的輸出,通過邏輯分析儀可以看到每一行輸出1280個數(shù)據(jù),也就是640個像素點(每次輸出8bit,兩種時鐘輸出一個完整的RGB565數(shù)據(jù))。
-
寄存器
+關(guān)注
關(guān)注
31文章
5421瀏覽量
123288 -
攝像頭
+關(guān)注
關(guān)注
61文章
4948瀏覽量
97641 -
時序
+關(guān)注
關(guān)注
5文章
397瀏覽量
37772
原文標(biāo)題:FPGA驅(qū)動OV5640上電及初始化(下)
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
tas6422默認(rèn)的寄存器配置可以使用嗎,驅(qū)動中如何進行相關(guān)初始化?
norflash初始化沒有設(shè)置bank0相關(guān)的寄存器
STM32初始化和配置相關(guān)函數(shù)
蜂鳥內(nèi)部通用寄存器為什么不做復(fù)位初始化?
51單片機對SAA7113初始化和控制的程序
如何初始化miniDSPCodec和基于MCU控制器的參考代碼詳細(xì)中文資料

51單片機串口通訊初始化程序及及特殊功能寄存器設(shè)置的資料說明

C51s常用特殊寄存器及其初始化

CC2530中斷初始化和中斷函數(shù)

【嵌入式07】寄存器映射原理詳解,GPIO端口的初始化設(shè)置步驟

STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化

寄存器與靜態(tài)庫

評論