RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

與初始化相關(guān)的重要寄存器介紹

FPGA之家 ? 來源:FPGA之旅 ? 作者:FPGA之旅 ? 2022-10-18 09:18 ? 次閱讀

在上例中,介紹了配置OV5640所需的SCCB時(shí)序,以及具體的實(shí)現(xiàn)。本例將介紹與初始化相關(guān)的重要寄存器,以及上電時(shí)序。

OV5640的寄存器非常多,從它的寄存器的地址為16bit就可以看出,在商家提供的一些例程中,可以看到配置寄存器的語句多達(dá)200行,無法一時(shí)間學(xué)習(xí)掌握所有的寄存器。所以只需要掌握一些重要即可,例如控制圖像輸出格式、控制圖像輸出大小、控制圖像輸出幀率的寄存器。下面就開始介紹吧

二. 重要寄存器講解

一般來說,只需要了解三大類寄存器即可 :時(shí)鐘PCLK輸出頻率寄存器 , 圖像輸出大小寄存器 , 圖像輸出格式寄存器

1

時(shí)鐘PCLK輸出頻率寄存器

PCLK時(shí)鐘主要由0x3035 - 0x3037三個(gè)寄存器控制(其余寄存器也有,可以不看),詳情如下,一般來說完整的配置參數(shù)會(huì)給你配置到48MHz / 84MHz,如果想要配置成其他的頻率,可以調(diào)整0x3036寄存器的值即可。具體是怎么對應(yīng)的話,手冊上好像沒有給出。

2f57d13a-4e76-11ed-a3b6-dac502259ad0.png

2

圖像輸出大小寄存器

這部分比較關(guān)鍵,同時(shí)也比較容易,看下面這張圖片即可,physical pixel size為物理感光的尺寸,也就是攝像頭能夠感光的大小。ISP input size為圖像處理單元輸入的大小,由物理感光的尺寸經(jīng)過一定的處理,輸入進(jìn)ISP進(jìn)行處理,data output size 為實(shí)際攝像頭輸出的像素大小,為經(jīng)過ISP進(jìn)行處理縮放之后的圖像數(shù)據(jù)。

在實(shí)際使用的過程中,只需要關(guān)心data output size的大小即可。即只需要配置0x3808-0x3809 和0x380a-0x380b四個(gè)寄存器即可。

2f5e1b58-4e76-11ed-a3b6-dac502259ad0.png

另外,有四個(gè)寄存器也是需要關(guān)注的,0x380c-0x380f,這四個(gè)寄存器分別配置水平輸出的像素總個(gè)數(shù),以及豎直輸出像素的總個(gè)數(shù),這個(gè)配置要比data output size要大,和VGA的行列消影類似

2f683fca-4e76-11ed-a3b6-dac502259ad0.png

3

為奧運(yùn)健兒喝彩

這個(gè)配置只需要配置0x4300寄存器即可,類別比較多,可以自行查看手冊。

以上需要關(guān)注的寄存器,都是在其他寄存器配置好的前提下,然后進(jìn)行修改。完整的寄存器配置可以去正點(diǎn)原子或者GitHub上copy,本例使用的是在GitHub上copy下來的。

三. 上電時(shí)序講解

這部分在手冊中給出,通過下圖,可以看出,還是比較容易的。初始化時(shí)序只需要看到t4結(jié)束,后面就不要管了,后面是掉電時(shí)序。

第一步. 上電后,將PWDN拉高,RESETB拉低

第二步. 延時(shí)大于等于t2(5ms)時(shí)間后,將PWDN拉低,并且一直保持

第三步. 在延時(shí)大于等于t3(1ms)時(shí)間后,將RESETB拉高,將PWDN拉低,并且一直保持

第四步.最后延時(shí)t4(20ms),完成上電

完成上電后,即可開始SCCB對寄存器進(jìn)行初始化

2f6f90fe-4e76-11ed-a3b6-dac502259ad0.png

四. 程序介紹

程序主要包括三個(gè)部分,上電時(shí)序,然后是寄存器初始化,最后就是接收圖像數(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個(gè)數(shù)據(jù),也就是640個(gè)像素點(diǎn)(每次輸出8bit,兩種時(shí)鐘輸出一個(gè)完整的RGB565數(shù)據(jù))。

2f941cd0-4e76-11ed-a3b6-dac502259ad0.png

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120230
  • 攝像頭
    +關(guān)注

    關(guān)注

    59

    文章

    4836

    瀏覽量

    95598
  • 時(shí)序
    +關(guān)注

    關(guān)注

    5

    文章

    387

    瀏覽量

    37318

原文標(biāo)題:FPGA驅(qū)動(dòng)OV5640上電及初始化(下)

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    tas6422默認(rèn)的寄存器配置可以使用嗎,驅(qū)動(dòng)中如何進(jìn)行相關(guān)初始化?

    tas6422默認(rèn)的寄存器配置可以使用嗎,驅(qū)動(dòng)中如何進(jìn)行相關(guān)初始化
    發(fā)表于 10-14 06:17

    norflash初始化沒有設(shè)置bank0相關(guān)寄存器

    一期視頻,我們3c2440 sdram接在bangk6,對sdram操作時(shí),會(huì)先初始化,設(shè)置bank6相關(guān)寄存器,但norflash 接在bank0,對norflash操作時(shí),為何沒有設(shè)置
    發(fā)表于 04-02 01:27

    如何對PWM寄存器進(jìn)行初始化配置

    PWM的輸出原理是什么?PWM寄存器的配置步驟有哪些?如何對PWM寄存器進(jìn)行初始化配置?
    發(fā)表于 08-02 10:02

    STM32初始化和配置相關(guān)函數(shù)

    初始化和配置相關(guān)函數(shù)1.voidGPIO_DeInit(GPIO_TypeDef* GPIOx)函數(shù)解釋:gpio的反初始化函數(shù),該函數(shù)的作用是把GPIO相關(guān)
    發(fā)表于 08-23 07:57

    蜂鳥內(nèi)部通用寄存器為什么不做復(fù)位初始化?

    蜂鳥內(nèi)部通用寄存器為什么不做復(fù)位初始化? 如果不做初始化,當(dāng) 進(jìn)行 中斷斷點(diǎn)保護(hù)時(shí),一些未用到的寄存器 和 臨時(shí)寄存器(未被使用)會(huì)被壓棧進(jìn)
    發(fā)表于 08-16 06:57

    51單片機(jī)對SAA7113初始化和控制的程序

      用51單片機(jī)對7113初始化和控制   SAA7113的初始化就是對寄存器配置合適的參數(shù),使其能夠有符合要求的輸出。寄存器配置通過I2C總線來進(jìn)行,很多可以控制I2C總線的
    發(fā)表于 09-08 11:50 ?2045次閱讀

    移位寄存器初始化

    Labview之移位寄存器初始化,很好的Labview資料,快來下載學(xué)習(xí)吧。
    發(fā)表于 04-19 10:56 ?0次下載

    如何初始化miniDSPCodec和基于MCU控制的參考代碼詳細(xì)中文資料

    寄存器是miniDSP 內(nèi)存映射到I2C/SPI 控制端口的寄存器地址,主控制可以通過該地址進(jìn)行初始化及控制。
    發(fā)表于 04-28 10:25 ?7次下載
    如何<b class='flag-5'>初始化</b>miniDSPCodec和基于MCU控制<b class='flag-5'>器</b>的參考代碼詳細(xì)中文資料

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

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)串口通訊初始化程序及及特殊功能寄存器設(shè)置的資料說明免費(fèi)下載。
    發(fā)表于 08-21 17:31 ?6次下載
    51單片機(jī)串口通訊<b class='flag-5'>初始化</b>程序及及特殊功能<b class='flag-5'>寄存器</b>設(shè)置的資料說明

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

    C51中斷、定時(shí)、串口常用特殊寄存器使用以及初始化1.中斷系統(tǒng)系統(tǒng)結(jié)構(gòu)如下:中斷初始化:void main(){ IE = 0x81; //假設(shè)只用外部中斷0,這里就可以讓IE為0x
    發(fā)表于 11-22 18:06 ?6次下載
    C51s常用特殊<b class='flag-5'>寄存器</b>及其<b class='flag-5'>初始化</b>

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

    相關(guān)寄存器在cc2530中文數(shù)手冊中2.4小節(jié)中斷初始化其實(shí)中斷的初始化可以參照引腳的初始化,即4個(gè)寄存
    發(fā)表于 11-29 19:06 ?9次下載
    CC2530中斷<b class='flag-5'>初始化</b>和中斷函數(shù)

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

    本文主要介紹STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化設(shè)置三步驟(時(shí)鐘配置、輸入輸出模式設(shè)置、最大速率設(shè)置)。
    發(fā)表于 12-04 12:06 ?11次下載
    【嵌入式07】<b class='flag-5'>寄存器</b>映射原理詳解,GPIO端口的<b class='flag-5'>初始化</b>設(shè)置步驟

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

    文章目錄一、STM32F103系列芯片的地址映射和寄存器映射原理1.寄存器2.地址映射和寄存器映射原理二、GPIO端口的初始化1.GPIO簡介2.GPIO輸入、輸出模式及說明2.1浮空
    發(fā)表于 12-05 14:21 ?10次下載
    STM32F103系列芯片的地址映射和<b class='flag-5'>寄存器</b>映射原理,GPIO端口的<b class='flag-5'>初始化</b>

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

    實(shí)現(xiàn)初始化時(shí)鐘LED燈初始化LED燈閃爍三、庫函數(shù)例程0.準(zhǔn)備階段1.目標(biāo)任務(wù)拆分2.目標(biāo)實(shí)現(xiàn)初始化時(shí)鐘LED燈初始化LED燈閃爍兩者比較前言讀者在學(xué)習(xí)8位單片機(jī)時(shí)是否經(jīng)歷過記憶大量
    發(fā)表于 01-13 12:43 ?3次下載
    <b class='flag-5'>寄存器</b>與靜態(tài)庫

    MSP430F5529硬件IIC驅(qū)動(dòng)OLED(初始化使用的寄存器)

    MSP430F5529硬件IIC驅(qū)動(dòng)OLED(初始化使用的寄存器)
    發(fā)表于 11-24 16:36 ?1次下載
    RM新时代网站-首页